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

SOAP 1.1

SOAP 1.1 (Simple Object Access Protocol, версия 1.1) — это сетевой протокол для обмена структурированными сообщениями в распределённых вычислительных средах, основанный на языке XML. Он был разработан для обеспечения взаимодействия между программными компонентами, написанными на разных языках программирования и работающими на различных платформах, независимо от используемых операционных систем и сетевых протоколов. SOAP 1.1 является одной из ключевых технологий веб-сервисов (Web Services), наряду с WSDL (Web Services Description Language) и UDDI (Universal Description, Discovery and Integration).

История

Протокол SOAP был создан компаниями Microsoft, DevelopMentor и UserLand Software в 1998–1999 годах. Первоначально он назывался XML-RPC (XML Remote Procedure Call) и предназначался для упрощения удалённого вызова процедур через HTTP. В 2000 году была опубликована спецификация SOAP 1.1, которая была представлена на рассмотрение консорциуму World Wide Web Consortium (W3C). В 2003 году W3C опубликовал рекомендацию SOAP 1.2, которая является более строгой и расширенной версией протокола, однако SOAP 1.1 остаётся широко используемым в промышленных решениях, особенно в корпоративных системах, построенных на платформе Microsoft .NET и Java EE.

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

SOAP 1.1 представляет собой протокол прикладного уровня, который может работать поверх различных транспортных протоколов, таких как HTTP, SMTP, TCP и JMS. Наиболее распространённым является использование HTTP, так как он позволяет преодолевать ограничения межсетевых экранов (firewalls) и прокси-серверов.

Сообщение SOAP

Сообщение SOAP 1.1 — это XML-документ, который состоит из следующих элементов:

  1. Envelope (конверт)корневой элемент, который обязательно присутствует в каждом сообщении. Он идентифицирует документ как сообщение SOAP и содержит пространство имён (namespace) для версии протокола (http://schemas.xmlsoap.org/soap/envelope/`).
  2. Header (заголовок) — необязательный элемент, который может содержать метаданные, такие как аутентификационные данные, информацию о маршрутизации, транзакциях или управлении сессиями. Заголовок может быть обработан либо промежуточными узлами (intermediaries), либо конечным получателем.
  3. Body (тело) — обязательный элемент, который содержит собственно данные сообщения: либо запрос на вызов метода (RPC), либо ответ на него, либо сообщение об ошибке (Fault).
  4. Fault (ошибка) — необязательный элемент, который может присутствовать только в теле сообщения и используется для передачи информации об ошибках, возникших при обработке сообщения. Он содержит код ошибки, строку описания и, опционально, дополнительные сведения.

Пример структуры сообщения SOAP 1.1

``xml <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:xsd="http://www.w3.org/2001/XMLSchema">; <soap:Header> <auth:Authentication xmlns:auth="http://example.com/auth">; <auth:Username>user</auth:Username> <auth:Password>pass</auth:Password> </auth:Authentication> </soap:Header> <soap:Body> <m:GetWeather xmlns:m="http://example.com/weather">; <m:City>Москва</m:City> </m:GetWeather> </soap:Body> </soap:Envelope> ``

Модель обработки

SOAP 1.1 определяет модель обработки сообщений, основанную на концепции «узлов» (nodes). Узлы могут быть:

  • Отправитель (sender) — создаёт сообщение.
  • Получатель (receiver) — конечный потребитель сообщения.
  • Промежуточный узел (intermediary) — обрабатывает заголовки и может модифицировать или перенаправлять сообщение.

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

Кодирование и привязка к транспорту

Кодирование данных

SOAP 1.1 поддерживает два стиля кодирования:

  1. RPC/encoded — данные сериализуются в соответствии с правилами, определёнными в спецификации SOAP (Section 5). Этот стиль предполагает использование определённых правил для представления массивов, структур и ссылок.
  2. Document/literal — тело сообщения содержит произвольный XML-документ, который не обязательно соответствует правилам кодирования SOAP. Этот стиль является более гибким и широко используется в современных реализациях.

Привязка к HTTP

При использовании HTTP в качестве транспортного протокола, SOAP 1.1 определяет следующие правила:

  • Запрос (Request): HTTP-запрос POST с заголовком Content-Type: text/xml; charset=utf-8. Тело запроса содержит сообщение SOAP.
  • Ответ (Response): HTTP-ответ с кодом 200 OK (в случае успеха) или 500 Internal Server Error (в случае ошибки SOAP). Тело ответа содержит сообщение SOAP с результатом или ошибкой.
  • Заголовок SOAPAction: обязательный HTTP-заголовок, который указывает на цель запроса (например, URI метода). Он используется для маршрутизации и фильтрации запросов.

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

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

  • Платформенная независимость: SOAP 1.1 работает на любых платформах, поддерживающих XML и HTTP.
  • Расширяемость: через заголовки можно добавлять поддержку безопасности, транзакций, надёжной доставки и других корпоративных функций.
  • Строгая типизация: использование WSDL позволяет строго описывать интерфейсы веб-сервисов, что облегчает интеграцию в крупных системах.
  • Поддержка стандартов: SOAP 1.1 интегрируется с такими стандартами, как WS-Security, WS-AtomicTransaction, WS-ReliableMessaging.

Недостатки

  • Избыточность: XML-сообщения SOAP 1.1 имеют большой объём по сравнению с более лёгкими протоколами, такими как REST (Representational State Transfer) или gRPC.
  • Сложность: реализация и отладка SOAP-сервисов требуют больше усилий, чем RESTful-сервисов.
  • Производительность: из-за парсинга XML и дополнительных накладных расходов на обработку заголовков, SOAP 1.1 уступает по скорости более современным протоколам.
  • Зависимость от HTTP: хотя SOAP может работать поверх других протоколов, на практике он почти всегда привязан к HTTP, что ограничивает его применение в некоторых сценариях.

Применение

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

  • Финансовые системы: обработка платежей, обмен данными между банками.
  • Государственные информационные системы: взаимодействие между ведомствами, например, в системах электронного документооборота.
  • Телекоммуникации: управление услугами, биллинг.
  • Промышленность: интеграция ERP-систем (Enterprise Resource Planning) и CRM-систем (Customer Relationship Management).

В России SOAP 1.1 применяется в ряде государственных информационных систем, таких как Единая система межведомственного электронного взаимодействия (СМЭВ), а также в корпоративных решениях крупных компаний.

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

С развитием веб-технологий SOAP 1.1 подвергался критике за излишнюю сложность и громоздкость. Многие разработчики перешли на использование RESTful-сервисов, которые основаны на простых HTTP-методах (GET, POST, PUT, DELETE) и используют JSON (JavaScript Object Notation) вместо XML. Также появились более производительные протоколы, такие как gRPC (основанный на Protocol Buffers) и GraphQL.

Тем не менее, SOAP 1.1 остаётся востребованным в legacy-системах и в сценариях, где требуется строгая контрактная модель и поддержка сложных корпоративных стандартов.

Источники

  1. Simple Object Access Protocol (SOAP) 1.1. W3C Note, 8 May 2000. — World Wide Web Consortium.
  2. SOAP Version 1.2 Part 1: Messaging Framework (Second Edition). W3C Recommendation, 27 April 2007.
  3. Web Services Description Language (WSDL) 1.1. W3C Note, 15 March 2001.
  4. XML Schema Part 1: Structures (Second Edition). W3C Recommendation, 28 October 2004.
  5. Спецификация SOAP 1.1 (русскоязычный перевод). — Microsoft Corporation, 2000.
  6. Электронные услуги: СМЭВ 3.0. — Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации.

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

На главную BFOmetr →