SOAP (от — простой протокол доступа к объектам) — протокол обмена структурированными сообщениями в распределённой вычислительной среде. Первоначально SOAP предназначался в основном для реализации удалённого вызова процедур (RPC). Сейчас протокол используется для обмена произвольными сообщениями в формате XML, а не только для вызова процедур. Официальная спецификация последней версии 1.2 протокола никак не расшифровывает название SOAP.
SOAP является расширением протокола XML-RPC.
SOAP может использоваться с любым протоколом прикладного уровня: SMTP, FTP, HTTP, HTTPS и др. Однако его взаимодействие с каждым из этих протоколов имеет свои особенности, которые должны быть определены отдельно. Чаще всего SOAP используется поверх HTTP.
SOAP является одним из стандартов, на которых базируются технологии веб-служб.
Структура протокола Сообщение SOAP выглядит так: Envelope — корневой элемент, который определяет сообщение и пространство имен, использованное в документе. Header — содержит атрибуты сообщения, например: информация о безопасности или о сетевой маршрутизации. Body — содержит сообщение, которым обмениваются приложения. Fault — необязательный элемент, который предоставляет информацию об ошибках, которые произошли при обработке сообщений.
Пример Пример SOAP-запроса на сервер интернет-магазина:
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 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>
Пример ответа: <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 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 для передачи сообщений увеличивает их объём и снижает скорость обработки. В системах, где скорость важна, чаще используется пересылка информации в менее многословных форматах, вплоть до бинарных, и зачастую по более быстрым базовым протоколам, например UDP.
См. также REST WSDL WDDX
Примечания
Ссылки Спецификация SOAP SOAP Версия 1.2 Часть 0: Учебник для начинающих
Категория:Сетевые протоколы Категория:Веб-программирование Категория:XML Категория:Стандарты Интернета Категория:Стандарты на основе XML Категория:Стандарты W3C