Открыть сервис

SOAP

SOAP (от англ. Simple Object Access Protocol — простой протокол доступа к объектам) — это протокол обмена структурированными сообщениями в распределённой вычислительной среде, основанный на языке разметки XML. SOAP является одним из ключевых протоколов веб-служб (web services), обеспечивающим взаимодействие между приложениями, написанными на разных языках программирования и работающими на различных платформах. Протокол определяет формат сообщений, правила их обработки и способы передачи через транспортные протоколы, чаще всего HTTP и SMTP.

История

Разработка SOAP началась в 1998 году в компании Microsoft под руководством Дейва Вайнера (Dave Winer) и Боба Аткинсона (Bob Atkinson). Первоначально протокол назывался XML-RPC (XML Remote Procedure Call) и предназначался для вызова удалённых процедур через HTTP с использованием XML-формата. В 1999 году Microsoft совместно с DevelopMentor представила SOAP 0.9, который вскоре был передан на рассмотрение в консорциум World Wide Web Consortium (W3C).

В 2000 году была опубликована спецификация SOAP 1.1, которая легла в основу большинства современных реализаций. В 2003 году W3C выпустил рекомендацию SOAP 1.2, которая внесла значительные изменения: протокол был переименован в SOAP (без расшифровки «Simple Object Access Protocol»), были уточнены правила обработки ошибок, введена поддержка различных моделей обмена сообщениями (не только «запрос-ответ», но и «однонаправленный»). В 2007 году вышла версия 1.2 Second Edition, которая является действующей на начало 2020-х годов.

Архитектура и принципы работы

SOAP основан на модели клиент-сервер, где клиент отправляет запрос, а сервер возвращает ответ. Сообщения SOAP передаются через транспортный протокол (чаще всего HTTP), но протокол не привязан к конкретному транспорту — могут использоваться SMTP, JMS (Java Message Service), TCP и другие.

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

Каждое сообщение SOAP представляет собой XML-документ, который состоит из следующих элементов:

  1. Конверт (Envelope)корневой элемент, который идентифицирует документ как сообщение SOAP. Содержит пространство имён http://schemas.xmlsoap.org/soap/envelope/ (для SOAP 1.1) или http://www.w3.org/2003/05/soap-envelope (для SOAP 1.2).
  2. Заголовок (Header) — необязательный элемент, содержащий метаданные: информацию об аутентификации, транзакциях, маршрутизации. Заголовок может включать блоки, адресованные конкретным узлам обработки.
  3. Тело (Body) — обязательный элемент, содержащий основную информацию запроса или ответа. Включает либо данные вызова процедуры (имя метода и параметры), либо результат выполнения, либо описание ошибки (Fault).
  4. Ошибка (Fault) — специальный элемент внутри Body, используемый для передачи информации об ошибках. Содержит код ошибки, описание, причину и дополнительные данные.

Пример простого сообщения SOAP (запрос):

``xml <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">; <soap:Body> <getPrice xmlns="http://example.com/stock">; <symbol>MSFT</symbol> </getPrice> </soap:Body> </soap:Envelope> ``

Модели обмена сообщениями

SOAP поддерживает несколько моделей обмена:

Транспортные протоколы

Хотя SOAP не привязан к конкретному транспорту, наиболее часто используется HTTP. При передаче через HTTP сообщение SOAP помещается в тело HTTP-запроса (POST) или ответа. Заголовок HTTP Content-Type устанавливается в text/xml (SOAP 1.1) или application/soap+xml (SOAP 1.2). Также может использоваться заголовок SOAPAction (для SOAP 1.1), который указывает целевую операцию.

При использовании SMTP сообщение SOAP вкладывается в тело электронного письма. При использовании JMS — передаётся через очередь или тему.

Связь с WSDL и UDDI

SOAP часто используется в сочетании с другими технологиями веб-служб:

Преимущества и недостатки

Преимущества

Недостатки

Применение

SOAP широко используется в корпоративных информационных системах, где требуется высокая надёжность, безопасность и поддержка сложных транзакций. Типичные области применения:

В России SOAP применяется в ряде государственных информационных систем, в том числе в системе межведомственного электронного взаимодействия (СМЭВ), которая обеспечивает обмен данными между федеральными и региональными органами власти. СМЭВ использует SOAP-сообщения, передаваемые через защищённые каналы связи.

Критика и альтернативы

С середины 2000-х годов SOAP подвергается критике за избыточную сложность и низкую производительность по сравнению с REST (Representational State Transfer), который использует JSON и более простой подход к проектированию API. REST-сервисы легче в разработке, быстрее работают и требуют меньше ресурсов. В результате SOAP постепенно уступает позиции в веб-разработке, особенно в публичных API и мобильных приложениях.

Тем не менее, SOAP остаётся востребованным в корпоративном секторе, где важны строгая типизация, поддержка транзакций и стандартизированная безопасность. Многие крупные компании (Microsoft, IBM, Oracle) продолжают поддерживать SOAP в своих продуктах.

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →