SOAP — Википедия

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

SOAP является расширением протокола XML-RPC.

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

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

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

[править | править код]
Структура 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.

Примечания

[править | править код]
  1. Latest SOAP versions (англ.). Дата обращения: 19 июня 2005. Архивировано 15 апреля 2021 года.