Windows DNA 2000 — платформа нового тысячелетия

Протокол Simple Object Access Protocol (SOAP)

Протокол SOAP — это протокол на основе XML/HTTP для независимого от платформы доступа к сервисам, объектам и серверам. В настоящее время данный протокол находится в стадии реализации для COM, Perl и Java. Чтобы понять работу протокола SOAP, давайте рассмотрим небольшой пример. Предположим, что существует некоторый электронный магазин, торгующий радиоаппаратурой и позволяющий размещать заказы на товары через протокол SOAP. Также предположим, что синтаксис такого заказа выглядит следующим образом:

Boolean
  (PlaceOrder([in] Model string,
  [in] Manufacturer string,
  [out] DaysToGet integer);

Когда клиент выполняет заказ, он передает две строки — номер модели и производителя. Отработанный заказ возвращает статус и число дней, требуемых для исполнения заказа. Предположим, мы хотим заказать для своего домашнего кинотеатра звуковой процессор фирмы Sony, модель SDP E-300. Когда вызывается приведенный выше метод, информация передается по протоколу HTTP в формате SOAP и может выглядеть так:

POST
  /GoodiesServer HTTP/1.1
 Host: 
  www.ehome.ru
 Content-Type:
 text/xml-SOAP
 Content-Length:
 100
 MessageType:
 Call

<SerializeStream>
 <PlaceOrder>
  <Model>SDP E-300</Model>
  <Manufacturer>Sony</Manufacturer>
 </PlaceOrder>
</SerializeStream>

Как видим, запрос посылается с помощью обычного POST-глагола протокола HTTP. Его приемником будет приложение GoodiesServer, расположенное на сервере www.ehome.ru. Содержимое отсылаемого запроса имеет тип text/xml-SOAP — тип, задаваемый протоколом SOAP, а его длина равна 100 байт. Заголовок MessageType указывает на то, что запрос содержит вызов процедуры. Далее следует XML-текст самого запроса. В нем указана процедура в нашем примере: — PlaceOrder и передаваемые ей параметры.

Сервер может ответить на такой запрос следующим образом:

HTTP/1.1 200 OK
  Connection: close
  Content-Type: text/xml-SOAP
  Content-Length: 120
  MessageType: CallResponse

<SerializeStream>
 <PlaceOrderResponse>
  <_return>1</_return>
  <DaysToGet>3</DaysToGet>
 </PlaceOrderResponse>
</SerializeStream>

Это стандартный HTTP-ответ с кодом 200, возвращающий информацию в формате XML. Отметим, что ответ процедуры PlaceOrder называется PlaceOrderResponse и содержит возвращаемое значение (1-true) и запрашиваемый параметр. Такой обмен SOAP-информацией по протоколу HTTP может быть обработан любым средством, позволяющим отсылать и получать HTTP-запросы и «понимающим» язык XML. Наиболее просто это реализуется на базе Internet Information Server с помощью Active Server Pages (ASP).

Протокол SOAP позволяет задавать следующие типы данных: целочисленные и с плавающей точкой, строки в формате UNICODE, байтовые строки, булевы значения, дату и время, вариантные типы и объединения, структуры, записи и массивы.

Таким образом, SOAP представляет собой простой и гибкий механизм для отсылки запросов и получения ответов через HTTP, вызова удаленных методов (RPC) без каких-либо изменений существующих приложений. Более того, данный протокол не связан с какой-либо объектной моделью и может использоваться в различных бизнес-сценариях. Осталось только дождаться его реализации, которая должна произойти уже к началу этого года.

Архитектура протокола SOAP показана на следующем рисунке:   

Версию 0.9 спецификации SOAP можно найти по адресу http://msdn.microsoft.com/xml/general/soaptemplate.asp или http://www.ietf.org/internet-drafts/draft-box-http-soap-00.txt

Среди основных «конкурентов» протокола SOAP можно выделить следующие протоколы:

  • Coins (http://www.jxml.com/coins/index.html) — протокол на основе XML для взаимодействия компонентов JavaBeans;
  • DCOM — RPC-протокол фирмы Microsoft, «привязанный» к технологии COM;
  • IIOP — наиболее близкий «конкурент» SOAP. Этот протокол связан с объектной моделью CORBA, требует конфигурации и вряд ли может расцениваться как универсальный RPC-протокол;
  • Java RMI — связан с Java и специфичен для данного языка;
  • KOML (http://www.inria.fr/koala/xml/serialization) — Koala Object Markup Language предоставляет способ управления Java-объектами через XML. Схож с XMOP, но более связан с Java;
  • SODL (http://jabr.ne.mediaone.net/documents/sold.htm) — Simple Object Definition Language — способ задания описателей DTD для XMOP. По назначению близок к Component Description Language (CDL) — специального XML-словаря, используемого в SOAP;
  • WDDX (http://www.wddx.ord/understanding.htm) — представляет собой механизм обмена структурированными данными между приложениями. Является XML DTD и служит «словарем» для описания структур данных, используемых приложениями в переносимом, текстовом формате;
  • XML-RPC (http://www.xmlrpc.com) — предшественник SOAP, основное предназначение которого — осуществление RPC по протоколу HTTP путем использования XML для разбора запросов;
  • XMOP (http://jabr.ne.mediaone.net/documents/xmop.htm) — XML Metadata Object Persistence — задает стандартный, независимый от платформы способ сохранения объектов в XML-потоках. Для реализации RPC используются Java-механизмы;
  • WIDL (http://www.w3.org/TR/NOTE-widl.htm) — Web Interface Definition Language — метаязык для реализации сервисной архитектуры над Web-ресурсами.

возврат


Наш канал на Youtube

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует