Добавить в избранное   Сделать стартовой   Главная   E-mail   Форум   Мой блог 
   
Cертификации

Errors

ETL

FAQ (по темам)

GIS

Web

wiki

Администрирование

Безопасность

Книги
Oracle, ...

Новости

ОС

Программирование

Проектирование БД

Производительность

Скачать

Советы

Тестирование

Установка

FAQ - по базам данных
FAQ - по базам данных
Установка СУБД
Oracle
Sybase
MySQL
PostgreSQL
MS SQL Server
Interbase, Firebird
Другие DB
Администрирование
Oracle
MySQL
Sybase
PostgreSQL
MS SQL Server
Interbase, Firebird
IBM DB2
Другие DB
Проектирование БД
Статьи
ETL
Теория БД
ErWin
Designer 2000
PowerDesigner
Хранилища данных
CASE средства
OLAP
Бизнес - анализ (BI)
Производительность
Oracle
MSSQL
Interbase, Firebird
IBM DB2
MySQL
PostgreSQL
SYBASE
Безопасность БД
Oracle
MS SQL Server
Инъекция SQL
Программирование
Transact-SQL
PL/SQL
C++
XML
SQL
PostgreSQL
MDX
Java
VBA Excel
Книги по базам
Oracle
Заказ книг
ОС
Установка и настройка
UBUNTU
ОС
Установка и настройка
UBUNTU
FAQ
FAQ - по базам данных
Главная arrow XML arrow Работа с XML - сообщениями

Работа с XML - сообщениями

Печать E-mail
Оглавление
Работа с XML - сообщениями
Страница 2
 

 Работа с XML-сообщениями

В этой статье из цикла, посвященного XML, Стив Мюнх и Стивен Фернстайн рассматривают примеры использования XML в качестве механизма обмена структурированными данными между приложениями.

В этой статье мы сначала разберем синхронные подходы, такие как отправка и получение XML-сообщений через HTTP, а затем рассмотрим основы механизма Oracle's Advanced Queuing (усовершенствованное управление сообщениями) для поддержки асинхронных сообщений, передаваемых между приложениями.

Отправка и получение XML между серверами

Поскольку XML может представлять структурированные данные открытым стандартным способом, он быстро становится предпочтительным методом обмена данными через Web. Через год или два он станет основным методом. Сайты, которые работают с информацией в виде HTML— удобном, прежде всего, для человеческих глаз,—добавят возможность использования информации в формате, основанном на XML, что позволит другим серверам гораздо проще использовать эти данные. Фирмы, действующие приложения которых позволяют пользователю взаимодействовать только через HTML-форму, основанную на Web, будут вынуждены добавить возможность принимать присылаемые запросы в формате XML, чтобы сделать возможным обмен данными между фирмами.

 

 

Таким образом, Web быстро разовьется, чтобы предоставить разработчикам коммерческих приложений море информационных услуг, основанных на XML, что позволит вашему приложению проверить статус заказа, отменить бронирование или заказать билет на рейс, просто отправив или получив соответствующие XML-дейтаграммы. Само собой разумеется, что умение писать программы, которые получают и отправляют XML, является важным навыком для любого разработчика, создающего следующее поколение Web-приложений. Здесь мы рассмотрим, как это можно реализовать с помощью PL/SQL в Oracle8i.

Давайте уточним, что когда мы говорим об “отправке XML другому серверу через Web”, имеется в виду отправка на HTTP POST-запроса, содержащего XML-документ в теле запроса с MIME Content-Type text /xml.

Следовательно, основной составляющей в отправке XML через Web является умение отправлять HTTP POST запрос. Поскольку http-протокол является набором соглашений, основанным на TCP/IP, мы можем использовать встроенный пакет Oracle8i utl_tcp для построения нашего HTTP POST-решения.

Пакет utl_tcp вынуждает TCP/IP-подпрограммы, лежащие в основе, открыть соединение, записать данные в соединение и прочитать данные обратно из соединения. Записав соответствующие HTTP команды и данные в соединение, мы сможем легко написать нашу программу передачи данных, используя PL/SQL. Например, чтобы передать XML документ, показанный на Листинге 1, Web сервису, расположенному по URL http://services.example.com:2775/add-news-story.xsql, нам необходимо сделать следующее:

  1. Открыть TCP/IP соединение к машине services.example.com на порт 2775.
  2. Написать заголовок в соединении:
    HTTP POST /add-news-story.xsql HTTP/1.0
    Content-Type: text/xml
    Content-Length: 240
  3. Написать пустую строку в соединение, чтобы отделить заголовок от тела.
  4. Написать XML документ в соединение.

Затем нужно прочитать ответ из соединения. В прилагаемом Download файле, можно посмотреть полный исходный код пакета, который реализует такое HTTP поведение, используя возможности, предоставляемые пакетом utl_tcp. В статье мы рассмотрим только API или спецификацию пакета. (см Листинг 2).

Этот пакет позволяет легко отправлять (HTTP POST) или получать (HTTP GET) любую информацию через Web, ограниченную только длиной PL/SQL переменной. Усовершенствованная версия может использовать символьный LOB для обработки данных большого размера.

На основе процедур отправки и получения пакета http мы можем построить другой вспомогательный пакет xml_http, который сделает отправку и получение информации, основанной на XML, более простой. В Листинге 3 приведена спецификация пакета xml_http.

В реализации xml_http в Листинге 4 вы увидите, что эти процедуры просто предоставляют дополнительные удобства, позволяя напрямую отправлять объект xmldom.DOMDocument, а также получать результат отправки (POST) или получения (GET) напрямую в виде xmldom.DOMDocument для дальнейшей обработки. Обратите внимание на использование пакета xml, который мы рассматривали в предыдущей статье, для облегчения разбора.

Теперь, когда все подпрограммы на своих местах, пришло время проверить их в работе. Во-первых, мы попробуем передать новости на сервер, который поддерживает “сервис передачи новостей”. На Рисунке 1 показан XML обмен через HTTP, который осуществляется через сервер нашей базы данных и сервис новостей.

Запрашивающая сторона передает новости, в ожидаемом XML формате, подобном формату новостей Moreover.com, а сервис возвращает, основанное на XML-сообщение о статусе запроса. В этом примере, возвращаемое XML-сообщение содержит только статус сообщения, однако, дейтаграмма, возвращаемая сервером, может содержать и другую полезную информацию.

На Листинге 5 представлена процедура postNewsStory, которая делает следующее:

  1. Определяет значения аргументов, переданных в функцию, на соответствующие места в XML дейтаграмме <moreovernews>.
  2. Передает дейтаграмму новостей на URL Web сервиса, используя xml_http.post.
  3. Проверяет содержание вернувшегося XML документа, используя xpath.test, чтобы проверить успешно ли завершился запрос на отправку (POST).

Мы можем быстро проверить функцию из SQL*Plus, создав переменную SQL*Plus с именем status, и запустив функцию вроде этой:

SQL> variable status varchar2(10);
SQL> exec :status := postNewsStory('Она
работает!','Стив','http://someserver/somepage.html');

PL/SQL procedure successfully completed.

SQL> print status

STATUS
------------
Success

Печать значения переменной status показывает, что запрос был успешным.

Далее, мы проверим пример получения (HTTP GET). Иногда Web сервисы просто принимают информацию о задаче, которую им необходимо выполнить, в качестве параметров URL. В этих случаях нет необходимости передавать какой-либо XML документ. Вместо этого мы только делаем HTTP GET на URL сервиса с соответствующим значением параметра, добавленным в конец URL.

На Рисунке 2 показан обмен между нашей базой данных и Web сервисом, который позволяет нам искать название аэропорта, по трехбуквенному сокращению. База данных, запущенная на сайте, предлагающем услугу “Поиск аэропорта”, содержит трехбуквенные коды и описания более 10000 аэропортов мира. Мы можем искать наименование для некоего аэропорта с кодом XYZ, выполнив HTTP GET на URL:
http://ws5.olab.com/xsql/demo/airport/airport.xsql?airport=XYZ.



 
 
« Пред.
Взаимосвязанные статьи
     

Последние добавленные статьи
Поиск
Ссылки
Главная
Скачать
Курсы
Роль АБД (SYSDBA)
Карта сайта
Автостекла
Контакты
Войти на сайт
Популярные статьи
Online - тесты
1Z0-042
Rambler's Top100 МЕТА - Украина. Рейтинг сайтов хостинг от freehost.com.ua

Все права защищены.SYSDBA 2010 | Если у Вас есть хороший материал пришлите его нам.