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

SOAP 1.2

SOAP 1.2 (изначально Simple Object Access Protocol, позже просто Service-Oriented Access Protocol) — это версия протокола обмена структурированными сообщениями в распределённых вычислительных средах, стандартизированная консорциумом W3C (World Wide Web Consortium). SOAP 1.2 является эволюционным развитием протокола SOAP 1.1 и предназначен для обеспечения взаимодействия между веб-сервисами (web services) независимо от платформы, операционной системы и языка программирования. Протокол определяет формат сообщений, правила их обработки и механизмы связывания с транспортными протоколами, чаще всего с HTTP и SMTP. Основное отличие SOAP 1.2 от предыдущей версии заключается в формальном уточнении спецификации, введении расширяемой архитектуры и улучшенной поддержке различных транспортных протоколов.

История и стандартизация

Предпосылки создания

Протокол SOAP был разработан в конце 1990-х годов компаниями Microsoft, DevelopMentor и UserLand Software как простой способ удалённого вызова процедур (RPC) через HTTP. Первая версия (SOAP 1.0) была опубликована в 1998 году, а SOAP 1.1 — в 2000 году. Однако спецификация 1.1 содержала ряд неоднозначностей и ограничений, что затрудняло её широкое внедрение и совместимость реализаций.

Разработка SOAP 1.2

В 2001 году W3C сформировал рабочую группу XML Protocol Working Group, которая занялась стандартизацией следующей версии протокола. Работа велась в тесном сотрудничестве с ведущими IT-компаниями, включая Microsoft, IBM, Sun Microsystems, Oracle и другие. Основными целями были:

  • Устранение неоднозначностей спецификации SOAP 1.1.
  • Улучшение поддержки различных транспортных протоколов, включая HTTP, SMTP, TCP и другие.
  • Введение формальной модели обработки сообщений.
  • Обеспечение расширяемости и модульности.

Публикация стандарта

SOAP 1.2 был принят в качестве рекомендации W3C (W3C Recommendation) 24 июня 2003 года. Документ состоял из трёх частей:

  • Part 1: Messaging Framework — определяет структуру сообщений, модель обработки и основные понятия.
  • Part 2: Adjuncts — описывает привязки к транспортным протоколам, включая HTTP, и механизмы RPC.
  • Part 3: One-Way MEP (добавлен позже) — определяет шаблон обмена сообщениями «однонаправленный» (one-way).

В 2007 году была опубликована вторая редакция SOAP 1.2, которая исправляла ошибки и уточняла некоторые аспекты. На сегодняшний день SOAP 1.2 является последней стабильной версией протокола; разработка SOAP 1.3 не ведётся, так как стандарт считается завершённым.

Архитектура и основные понятия

Сообщение SOAP

Сообщение SOAP 1.2 представляет собой XML-документ, соответствующий определённой схеме. Структура сообщения включает:

  • Конверт (Envelope)корневой элемент, который содержит всё сообщение. В SOAP 1.2 пространство имён для конверта — http://www.w3.org/2003/05/soap-envelope`.
  • Заголовок (Header) — необязательный элемент, содержащий метаданные, такие как аутентификационные данные, транзакционные идентификаторы, маршрутизацию и т.д. Заголовок может содержать несколько блоков, каждый из которых может быть помечен атрибутами role (роль узла, который должен обработать блок) и mustUnderstand (обязательность обработки).
  • Тело (Body) — обязательный элемент, содержащий основную полезную нагрузку сообщения. В теле передаются данные запроса или ответа, а также информация об ошибках (Fault).
  • Ошибка (Fault) — специальный элемент в теле, используемый для передачи информации об ошибках. В SOAP 1.2 структура Fault включает обязательные элементы Code (код ошибки), Reason (человекочитаемое описание) и необязательные Node, Role и Detail.

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

SOAP 1.2 определяет модель обработки сообщений, основанную на понятии узлов SOAP (SOAP nodes). Сообщение может проходить через несколько узлов, каждый из которых может выполнять определённые действия:

  • Отправитель (Sender) — узел, создающий сообщение.
  • Посредник (Intermediate) — узел, который может обрабатывать заголовки и пересылать сообщение дальше.
  • Получатель (Receiver) — конечный узел, обрабатывающий тело сообщения.

Каждый блок заголовка может быть адресован определённому узлу с помощью атрибута role. В SOAP 1.2 определены три стандартные роли:

Шаблоны обмена сообщениями (MEP)

SOAP 1.2 поддерживает несколько шаблонов обмена сообщениями:

  • Request-Response — запрос-ответ: отправитель посылает запрос, получатель возвращает ответ.
  • One-Way — однонаправленный: отправитель посылает сообщение без ожидания ответа.
  • Notification — уведомление: отправитель посылает сообщение нескольким получателям (реализуется через посредников).

Привязки к транспортным протоколам

HTTP-привязка

Наиболее распространённой привязкой SOAP 1.2 является HTTP. Спецификация определяет:

  • SOAPAction — в SOAP 1.2 этот HTTP-заголовок стал необязательным, в отличие от SOAP 1.1, где он был обязательным.
  • Content-Type — для SOAP 1.2 используется application/soap+xml (вместо text/xml в SOAP 1.1). Это позволяет отличать SOAP-сообщения от обычных XML-документов.
  • HTTP-методы — обычно используется POST, но возможен и GET для однонаправленных сообщений.

Другие привязки

Хотя спецификация SOAP 1.2 описывает только привязку к HTTP, архитектура протокола позволяет создавать привязки к другим транспортным протоколам, таким как SMTP (электронная почта), TCP, JMS (Java Message Service) и другим. На практике такие привязки используются реже, но они поддерживаются в некоторых реализациях.

Отличия от SOAP 1.1

Основные отличия SOAP 1.2 от SOAP 1.1:

ХарактеристикаSOAP 1.1SOAP 1.2
Пространство имёнhttp://schemas.xmlsoap.org/soap/envelope/`http://www.w3.org/2003/05/soap-envelope`
Content-Typetext/xmlapplication/soap+xml
SOAPActionОбязательный HTTP-заголовокНеобязательный
Модель ошибокПростая структура FaultРасширенная структура Fault с кодом, причиной, узлом и деталями
Роли узловНе формализованыФормально определены три стандартные роли
Поддержка MEPТолько request-responseRequest-response, one-way, notification
РасширяемостьОграниченнаяМодульная архитектура с возможностью добавления новых функций

Применение и значение

Интеграция корпоративных систем

SOAP 1.2 широко применяется в корпоративных информационных системах для интеграции различных приложений, особенно в среде Java (JAX-WS) и .NET (Windows Communication Foundation). Протокол обеспечивает надёжную передачу данных, поддержку транзакций, безопасности (через WS-Security) и других расширений.

Веб-сервисы

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

Критика и ограничения

Несмотря на широкое распространение, SOAP 1.2 подвергается критике за:

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

В результате с конца 2000-х годов наблюдается тенденция к переходу на RESTful веб-сервисы, особенно в мобильных и веб-приложениях. Однако SOAP 1.2 остаётся востребованным в финансовом секторе, телекоммуникациях, государственных информационных системах и других областях, где требуется высокая надёжность и соответствие стандартам.

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

  • Название «Simple Object Access Protocol» было признано неудачным, так как протокол не является простым и не ограничивается доступом к объектам. Начиная с SOAP 1.2, аббревиатура перестала расшифровываться.
  • SOAP 1.2 стал первым протоколом веб-сервисов, получившим статус рекомендации W3C.
  • В 2004 году компания Microsoft выпустила реализацию SOAP 1.2 в составе Windows Communication Foundation (WCF), что способствовало его широкому внедрению.
  • SOAP 1.2 поддерживает не только RPC-стиль, но и документо-ориентированный обмен сообщениями, что делает его гибким для различных сценариев.

Источники

  • W3C Recommendation: SOAP Version 1.2 Part 1: Messaging Framework (Second Edition) — 2007
  • W3C Recommendation: SOAP Version 1.2 Part 2: Adjuncts (Second Edition) — 2007
  • W3C Note: SOAP Version 1.2 Part 3: One-Way MEP — 2004
  • Box, D., Ehnebuske, D., Kakivaya, G., et al. (2000). Simple Object Access Protocol (SOAP) 1.1. W3C Note.
  • Snell, J., Tidwell, D., & Kulchenko, P. (2002). Programming Web Services with SOAP. O'Reilly Media.

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

На главную BFOmetr →