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

SO-протокол — модель взаимодействия веб-сервисов

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

История и происхождение

Протокол SOAP был разработан в конце 1990-х годов совместно компаниями Microsoft, IBM, Lotus Development и UserLand Software. Первая версия спецификации была опубликована в 1998 году, а в 2000 году консорциум W3C выпустил рекомендацию SOAP 1.1. В 2003 году вышла версия SOAP 1.2, которая получила статус рекомендации W3C и стала основой для дальнейшего развития протокола.

Изначально SOAP задумывался как расширение протокола HTTP для передачи вызовов удалённых процедур (RPC). Со временем протокол эволюционировал в более универсальный механизм обмена документами, что позволило использовать его не только для вызовов методов, но и для передачи бизнес-документов в формате XML.

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

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

  • Envelope — конверт сообщения, задающий структуру и определяющий, что является содержимым сообщения.
  • Header — необязательный заголовок, содержащий метаданные: информацию об авторизации, маршрутизации, идентификаторы транзакций.
  • Body — тело сообщения с непосредственными данными запроса или ответа.

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

SOAP поддерживает два основных стиля обмена:

СтильОписание
RPCВызов удалённых процедур: запрос содержит имя метода и аргументы, ответ — результат выполнения
DocumentОбмен целыми XML-документами, соответствующими заранее определённой схеме (XSD)

Транспорт и связывание

SOAP не привязан к конкретному транспортному протоколу. Наиболее распространённым является SOAP over HTTP, но спецификация допускает использование SMTP, TCP, JMS и других протоколов. Механизм связывания (binding) определяет, как SOAP-сообщение упаковывается в транспортный пакет.

Важной частью экосистемы SOAP является язык описания веб-сервисов WSDL (Web Services Description Language), который описывает доступные операции, форматы сообщений и адреса эндпоинтов. Для поиска сервисов используется UDDI-реестр.

SOAP и REST

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

  • SOAP строго типизирован и требует описания контракта (WSDL), REST работает с произвольными ресурсами.
  • SOAP использует XML, REST — чаще JSON, что делает его легковеснее.
  • SOAP обеспечивает встроенные механизмы транзакций (WS-AtomicTransaction) и безопасности (WS-Security), в REST эти возможности реализуются на уровне приложения.

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

Применение

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

  • Банковская интеграция — обмен платёжными сообщениями по стандартам ISO 20022.
  • Государственные услуги — взаимодействие ведомств через шины данных.
  • Промышленная автоматизация — протокол OPC UA частично основан на идеях SOAP.
  • Телекоммуникации — стандарты 3GPP для интерфейсов между сетевыми элементами.

Критика

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

Источники:

  • W3C SOAP 1.2 Specification
  • W3C WSDL 2.0 Specification
  • «Web Services Essentials» — Ethan Cerami, O'Reilly, 2002
  • «RESTful Web Services» — Leonard Richardson, Sam Ruby, O'Reilly, 2007
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru