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

SOAP — протокол обмена данными в XML

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

История

Разработка SOAP началась в 1998 году в компании Microsoft как часть инициативы по созданию протокола для обмена данными между приложениями на разных платформах. Первая версия спецификации (SOAP 1.0) была опубликована в 1999 году. В 2000 году консорциум W3C выпустил версию SOAP 1.1, которая получила широкое распространение в индустрии. В 2007 году была принята рекомендация W3C SOAP 1.2, ставшая актуальной версией стандарта.

Принцип работы

SOAP использует HTTP (или другие транспортные протоколы, например SMTP) в качестве транспортного слоя. Запрос и ответ передаются в виде XML-документов. Структура сообщения SOAP включает три основных компонента:

Дополнительно может использоваться блок Fault для описания ошибок.

Структура SOAP-запроса

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

```xml POST /service HTTP/1.1 Content-Type: text/xml; charset=utf-8 SOAPAction: "urn:example:GetPrice"

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">; <soap:Header> <auth:Token xmlns:auth="urn:example:auth">abc123</auth:Token> </soap:Header> <soap:Body> <m:GetPrice xmlns:m="urn:example:price"> <m:Product>soap</m:Product> </m:GetPrice> </soap:Body> </soap:Envelope> ```

Ответ содержит аналогичную структуру с данными в теле сообщения или блоком Fault при ошибке.

Ключевые особенности

  • Транспортная независимость — SOAP не привязан к HTTP, хотя HTTP является наиболее распространённым транспортом.
  • Строгая спецификация — формат сообщений описывается схемами WSDL (Web Services Description Language), что обеспечивает предсказуемость обмена.
  • **Поддержка WS-* спецификаций** — расширения для безопасности (WS-Security), надёжной доставки (WS-ReliableMessaging), транзакций (WS-Transaction) и других корпоративных требований.
  • Возможность работы через брандмауэры — использование стандартного HTTP-порта упрощает прохождение сетевых фильтров.

SOAP и REST

SOAP часто сравнивают с REST (Representational State Transfer) — альтернативным подходом к построению веб-сервисов. Основные различия:

КритерийSOAPREST
Формат данныхXML (обязателен)JSON, XML, HTML и др.
ОписаниеWSDLOpenAPI (Swagger)
СтрогостьВысокаяНизкая
Корпоративные расширенияWS-*Ограничены
ПростотаСложнееПроще

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

Применение

SOAP-сервисы применяются в следующих областях:

  • Банковские системы — интербанковские платежи, обмен данными с платёжными системами.
  • Государственные сервисы — обмен информацией между ведомствами (например, в России SOAP-сервисы используются в системах межведомственного взаимодействия ЕСИА и СМЭВ).
  • Промышленная автоматизация — интеграция SCADA-систем и ERP-систем.
  • Телекоммуникации — биллинговые системы и системы управления абонентами.

Критика

Основные претензии к SOAP связаны с его громоздкостью: XML-формат увеличивает объём сообщений по сравнению с JSON, а необходимость строгого описания WSDL усложняет разработку. Для ряда задач REST-подход оказывается более практичным.

Источники

  • W3C SOAP 1.2 Specification
  • W3C SOAP 1.1 Note
  • «Web Services: Concepts, Architectures and Applications» — G. Alonso et al.
  • «RESTful Web Services» — L. Richardson, S. Ruby
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru