SOAP

Структура SOAP сообщения

SOAP (от англ. Simple Object Access Protocol — простой протокол доступа к объектам) — протокол обмена структурированными сообщениями в распределённой вычислительной среде. Первоначально SOAP предназначался в основном для реализации удалённого вызова процедур (RPC). Сейчас протокол используется для обмена произвольными сообщениями в формате XML, а не только для вызова процедур. Официальная спецификация последней версии 1.2 протокола никак не расшифровывает название SOAP.SOAP является расширением протокола XML-RPC.

SOAP может использоваться с любым протоколом прикладного уровня: SMTP, FTP, HTTP, HTTPS и др. Однако его взаимодействие с каждым из этих протоколов имеет свои особенности, которые должны быть определены отдельно. Чаще всего SOAP используется поверх HTTP.

SOAP является одним из стандартов, на которых базируются технологии веб-служб.

Структура протокола

Сообщение SOAP выглядит так:

SOAP-конверт SOAP-заголовок Элемент заголовка 1 Элемент заголовка 2 … Элемент заголовка N Тело SOAP Элемент тела N … Элемент тела 2 Элемент тела 1

Пример

Пример SOAP-запроса на сервер интернет-магазина:

<soap:Envelope xmlns:soap=»http://schemas.xmlsoap.org/soap/envelope/»> <soap:Body> <getProductDetails xmlns=»http://warehouse.example.com/ws»> <productID>12345</productID> </getProductDetails> </soap:Body> </soap:Envelope>

Пример ответа:

<soap:Envelope xmlns:soap=»http://schemas.xmlsoap.org/soap/envelope/»> <soap:Body> <getProductDetailsResponse xmlns=»http://warehouse.example.com/ws»> <getProductDetailsResult> <productID>12345</productID> <productName>Стакан граненый</productName> <description>Стакан граненый. 250 мл.</description> <price>9.95</price> <currency> <code>840</code> <alpha3>USD</alpha3> <sign>$</sign> <name>US dollar</name> <accuracy>2</accuracy> </currency> <inStock>true</inStock> </getProductDetailsResult> </getProductDetailsResponse> </soap:Body> </soap:Envelope>

Недостатки

  • Первый недостаток в РНР, там SOAP технология немного не правильно написано, и там приходится подключать стороннюю библиотеку NuSaop («http://sourceforge.net/projects/nusoap/«). С версии РНР 5.3 это исправлено и теперь работает нормально.
  • Использование SOAP для передачи сообщений увеличивает их объём и снижает скорость обработки. В системах, где скорость важна, чаще используется пересылка XML-документов через HTTP напрямую, где параметры запроса передаются как обычные HTTP-параметры.
  • Хотя SOAP является стандартом, некоторые программы часто генерируют сообщения в несовместимом формате. Например, запрос, сгенерированный AXIS-клиентом, не будет понят сервером WebLogic.

См. также

Ссылки