Из Википедии, бесплатной энциклопедии
  (Перенаправлено из SOAP (протокол) )
Перейти к навигации Перейти к поиску

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

SOAP позволяет разработчикам вызывать процессы, запущенные в разных операционных системах (таких как Windows , macOS и Linux ), для проверки подлинности, авторизации и взаимодействия с использованием Extensible Markup Language (XML). Поскольку веб-протоколы, такие как HTTP, установлены и работают во всех операционных системах, SOAP позволяет клиентам вызывать веб-службы и получать ответы независимо от языка и платформ.

Характеристики [ править ]

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

  • конверт, который определяет структуру сообщения [1] и способ ее обработки
  • набор правил кодирования для выражения экземпляров определяемых приложением типов данных
  • соглашение для представления вызовов процедур и ответов

SOAP имеет три основные характеристики:

  1. расширяемость (безопасность и WS-адресация входят в число разрабатываемых расширений)
  2. нейтралитет (SOAP может работать по любому протоколу, например HTTP , SMTP , TCP , UDP )
  3. независимость (SOAP допускает любую модель программирования )

В качестве примера того, что могут делать процедуры SOAP, приложение может отправить запрос SOAP на сервер, на котором включены веб-службы, такие как база данных цен на недвижимость, с параметрами для поиска. Затем сервер возвращает ответ SOAP (документ в формате XML с результирующими данными), например, цены, местоположение, характеристики. Поскольку сгенерированные данные поступают в стандартизованном формате, пригодном для машинного анализа, запрашивающее приложение может интегрировать их напрямую.

Архитектура SOAP состоит из нескольких уровней спецификаций для:

  • формат сообщения
  • Шаблоны обмена сообщениями (MEP)
  • привязки базовых транспортных протоколов
  • модели обработки сообщений
  • расширяемость протокола

SOAP развился как преемник XML-RPC , хотя он заимствует свою транспортную и интерактивную нейтральность из адресации веб-сервисов [2] и конверта / заголовка / тела из других источников (возможно, из WDDX ). [ необходима цитата ]

История [ править ]

SOAP был разработан как протокол объектного доступа и выпущен как XML-RPC в июне 1998 года как часть Frontier 5.1 Дейвом Винером , Доном Боксом , Бобом Аткинсоном и Мохсеном Аль-Госейном для Microsoft , где работали Аткинсон и Аль-Госейн. [3] Спецификация не была доступна до тех пор, пока она не была представлена ​​в IETF 13 сентября 1999 года. [4] [5] По словам Дона Бокса, это произошло из-за политики внутри Microsoft. [6] Из-за колебаний Microsoft Дэйв Винер поставил XML-RPC в 1998 году. [7]

Представленный Интернет-проект не получил статуса RFC и поэтому не считается «веб-стандартом» как таковой. Версия 1.1 спецификации была опубликована в виде примечания W3C 8 мая 2000 года. [8] Поскольку версия 1.1 не достигла статуса рекомендации W3C , она также не может считаться «веб-стандартом». Версия 1.2 спецификации, однако, стала рекомендацией W3C 24 июня 2003 года.

Спецификация SOAP [9] была поддержана Рабочей группой XML протокол [10] в World Wide Web Consortium , пока группа не была закрыта 10 июля 2009 года SOAP первоначально обозначали «Simple Object Access Protocol» , но версии 1.2 стандарта уронил акроним. [11]

После того, как SOAP был впервые представлен, он стал базовым уровнем более сложного набора веб-сервисов , основанного на языке описания веб-сервисов (WSDL), XML-схеме и универсальном обнаружении и интеграции описаний (UDDI). Эти различные сервисы, особенно UDDI, оказались гораздо менее интересными, но их понимание дает полное понимание ожидаемой роли SOAP по сравнению с тем, как на самом деле развивались веб-сервисы.

Терминология SOAP [ править ]

Спецификацию SOAP можно в широком смысле определить как состоящую из следующих трех концептуальных компонентов: концепции протокола, концепции инкапсуляции и концепции сети. [12]

Концепции протокола [ править ]

МЫЛО
Это набор правил, формализующих и управляющих форматом и правилами обработки информации, которой обмениваются отправитель SOAP и получатель SOAP.
Узлы SOAP
Это физические / логические машины с блоками обработки, которые используются для передачи / пересылки, приема и обработки сообщений SOAP. Они аналогичны узлам в сети.
SOAP-роли
На пути сообщения SOAP все узлы принимают на себя определенную роль. Роль узла определяет действие, которое узел выполняет с полученным сообщением. Например, роль « нет» означает, что ни один узел не будет обрабатывать заголовок SOAP каким-либо образом и просто передавать сообщение по своему пути.
Привязка протокола SOAP
Сообщение SOAP должно работать вместе с другими протоколами для передачи по сети. Например, сообщение SOAP может использовать TCP в качестве протокола нижнего уровня для передачи сообщений. Эти привязки определены в структуре привязки протокола SOAP. [13]
Возможности SOAP
SOAP предоставляет только структуру обмена сообщениями. Однако его можно расширить, добавив такие функции, как надежность, безопасность и т. Д. При добавлении функций в структуру SOAP необходимо соблюдать определенные правила.
Модуль SOAP
Набор спецификаций, касающихся семантики заголовка SOAP, для описания любых новых функций, расширяемых в SOAP. Модуль должен реализовывать ноль или более функций. SOAP требует, чтобы модули придерживались установленных правил. [14]

Концепции инкапсуляции данных [ править ]

Сообщение SOAP
Представляет информацию, которой обмениваются 2 узла SOAP.
Конверт SOAP
Это включающий элемент сообщения XML, идентифицирующий его как сообщение SOAP.
Блок заголовка SOAP
Заголовок SOAP может содержать более одного из этих блоков, каждый из которых является дискретным вычислительным блоком внутри заголовка. Как правило, информация о роли SOAP используется для целевых узлов на пути. Говорят, что блок заголовка нацелен на узел SOAP, если роль SOAP для блока заголовка - это имя роли, в которой работает узел SOAP. (например: блок заголовка SOAP с атрибутом роли как ultimateReceiver нацелен только на узел назначения, который имеет эту роль. Заголовок с атрибутом роли как следующий нацелен на каждого посредника, а также на узел назначения.)
Заголовок SOAP
Набор из одного или нескольких блоков заголовков, предназначенных для каждого получателя SOAP.
Тело SOAP
Содержит тело сообщения, предназначенное для получателя SOAP. Интерпретация и обработка тела SOAP определяется блоками заголовков.
Ошибка SOAP
Если узел SOAP не может обработать сообщение SOAP, он добавляет информацию об ошибке в элемент ошибки SOAP. Этот элемент содержится в теле SOAP как дочерний элемент.

Концепции отправителя и получателя сообщений [ править ]

Отправитель SOAP
Узел, передающий сообщение SOAP.
Приемник SOAP
Узел, получающий сообщение SOAP. (Может быть посредником или узлом назначения).
Путь сообщения SOAP
Путь, состоящий из всех узлов, через которые сообщение SOAP достигло конечного узла.
Первоначальный отправитель SOAP
Это узел, который отправил сообщение SOAP для передачи. Это корень пути сообщения SOAP.
Посредник SOAP
Все узлы между отправителем SOAP и предполагаемым местом назначения SOAP. Он обрабатывает нацеленные на него блоки заголовка SOAP и направляет сообщение SOAP конечному получателю SOAP.
Окончательный приемник SOAP
Целевой получатель сообщения SOAP. Этот узел отвечает за обработку тела сообщения и любых нацеленных на него блоков заголовков.

Спецификация [ править ]

Структура SOAP

Спецификация SOAP определяет структуру обмена сообщениями, которая состоит из:

  • Модель обработки SOAP , определяющая правила обработки сообщения SOAP [15]
  • Модель расширяемости SOAP, определяющая концепции функций SOAP и модулей SOAP [15]
  • Структура привязки базового протокола SOAP, описывающая правила для определения привязки к базовому протоколу, который может использоваться для обмена сообщениями SOAP между узлами SOAP [15]
  • Конструкция сообщения SOAP, определяющая структуру сообщения SOAP [15]

Строительные блоки SOAP [ править ]

Сообщение SOAP - это обычный XML-документ, содержащий следующие элементы:

Транспортные методы [ править ]

И SMTP, и HTTP являются допустимыми протоколами прикладного уровня, используемыми в качестве транспорта для SOAP, но HTTP получил более широкое распространение, поскольку он хорошо работает с современной интернет-инфраструктурой; в частности, HTTP хорошо работает с сетевыми брандмауэрами . SOAP также может использоваться через HTTPS (который является тем же протоколом, что и HTTP на уровне приложения, но использует зашифрованный транспортный протокол ниже) с простой или взаимной аутентификацией; это пропагандируемый метод WS-I для обеспечения безопасности веб-сервисов, как указано в базовом профиле WS-I 1.1.

Это главное преимущество перед другими распределенными протоколами, такими как GIOP / IIOP или DCOM , которые обычно фильтруются межсетевыми экранами. SOAP поверх AMQP - еще одна возможность, поддерживаемая некоторыми реализациями. SOAP также имеет преимущество перед DCOM в том, что на него не влияют права безопасности, настроенные на машинах, которые требуют знания как передающих, так и принимающих узлов. Это позволяет слабо связывать SOAP, что невозможно с DCOM . Также существует стандарт OASIS SOAP-over-UDP .

Формат сообщения [ править ]

Информационный набор XML был выбран в качестве стандартного формата сообщений из-за его широкого использования крупными корпорациями и разработок с открытым исходным кодом . Обычно информационный набор XML сериализуется как XML . Широкий спектр свободно доступных инструментов значительно упрощает переход к реализации на основе SOAP. Несколько затянутым синтаксис в XML может быть и преимуществом , и недостатком. Хотя он способствует удобочитаемости для людей, облегчает обнаружение ошибок и позволяет избежать проблем совместимости, таких как порядок байтов (порядок байтов ), он может снизить скорость обработки и быть громоздким. Например, CORBA , GIOP, ICE и DCOM используют гораздо более короткие двоичные форматы сообщений. С другой стороны, доступны аппаратные устройства для ускорения обработки XML- сообщений. [16] [17] Двоичный XML также исследуется как средство оптимизации требований XML к пропускной способности. XML-сообщения по своей самодокументируемой природе обычно имеют больше «накладных расходов» (например, заголовков, вложенных тегов, разделителей), чем фактические данные, в отличие от более ранних протоколов, где накладные расходы обычно составляли относительно небольшой процент от общего сообщения.

Было обнаружено, что в обмене финансовыми сообщениями SOAP приводит к сообщению в 2–4 раза большего размера, чем предыдущие протоколы FIX (обмен финансовой информацией) и CDR (представление общих данных). [18]

Информационный набор XML не требует сериализации в XML. Например, существуют представления XML-инфо-наборов CSV и JSON . Также нет необходимости указывать общую структуру преобразования. Концепция привязок SOAP допускает определенные привязки для конкретного приложения. Недостатком является то, что и отправители, и получатели должны поддерживать эту недавно определенную привязку.

Пример сообщения (инкапсулированный в HTTP) [ править ]

В сообщении ниже запрашивается цена акций AT&T (биржевой код "T").

POST  / InStock  HTTP / 1.1 Хост :  www.example.org Content-Type :  application / soap + xml; charset = utf-8 Content-Length :  299 SOAPAction :  "http://www.w3.org/2003/05/soap-envelope"<? xml version = "1.0"?> <soap: Envelope  xmlns: soap = "http://www.w3.org/2003/05/soap-envelope"  xmlns: m = "http: //www.example. org " >  <soap: Header>  </ soap: Header>  <soap: Body>  <m: GetStockPrice>  <m: StockName> T </ m: StockName>  </ m: GetStockPrice>  </ soap: Body> </ мыло: Конверт>

Техническая критика [ править ]

Преимущества [ править ]

  • Характеристика нейтральности SOAP явно делает его пригодным для использования с любым транспортным протоколом. Реализации часто используют HTTP в качестве транспортного протокола, но могут использоваться и другие популярные транспортные протоколы. Например, SOAP также можно использовать через SMTP, JMS [19] [20] и очереди сообщений .
  • SOAP в сочетании с обменом сообщениями и ответами HTTP легко туннелируется через существующие брандмауэры и прокси и, следовательно, не требует модификации широко распространенных вычислительных и коммуникационных инфраструктур, существующих для обработки сообщений сообщений и ответов HTTP.
  • В SOAP доступны все возможности XML, включая простую интернационализацию и расширяемость с помощью пространств имен XML.

Недостатки [ править ]

  • При использовании стандартной реализации и привязки SOAP / HTTP по умолчанию информационный набор XML сериализуется как XML. Чтобы повысить производительность для особого случая XML со встроенными двоичными объектами, был введен механизм оптимизации передачи сообщений .
  • При использовании HTTP в качестве транспортного протокола и без использования адресации веб-служб или служебной шины предприятия роли взаимодействующих сторон фиксируются. Только одна сторона (клиент) может пользоваться услугами другой стороны.
  • SOAP менее «прост», чем следует из названия. Многословие протокола, медленная скорость синтаксического анализа XML и отсутствие стандартизированной модели взаимодействия привели к доминированию служб, использующих протокол HTTP более непосредственно. См., Например, ОТДЫХ .

См. Также [ править ]

  • SOAP с вложениями
  • SOAP с API вложений для Java
  • SOAP-поверх-UDP
  • Список протоколов веб-сервисов
  • Механизм оптимизации передачи сообщений (MTOM)
  • XML-двоичная оптимизированная упаковка (XOP)
  • Extensible User Interface Protocol (XUP)  - протокол пользовательского интерфейса на основе SOAP.
  • SOAPjr  - гибрид SOAP и JSON-RPC
  • WebSocket
  • Безопасность веб-служб

Ссылки [ править ]

  1. ^ Хирш, Фредерик; Кемп, Джон; Илкка, Яни (11 января 2007 г.). Мобильные веб-службы: архитектура и реализация . John Wiley & Sons (опубликовано в 2007 г.). п. 27. ISBN 9780470032596. Проверено 15 сентября 2014 . Протокол простого доступа к объектам (SOAP) определяет структуру конверта обмена сообщениями, предназначенную для переноса полезной нагрузки приложения в одной части конверта (тела сообщения) и управляющей информации в другой (заголовок сообщения).
  2. ^ «Адресация веб-служб (WS-адресация)» . www.w3.org . Проверено 15 сентября 2016 .
  3. ^ "Эксклюзивный журнал разработчиков .NET" Индиго "Интервью с Microsoft Don Box" . Dotnet.sys-con.com . Проверено 4 октября 2012 .
  4. ^ "Титульные страницы XML по истории SOAP" . Coverpages.org . Проверено 22 июля 2003 .
  5. ^ «SOAP: простой протокол доступа к объектам» . Сентябрь 1999 г.
  6. ^ "Дон Бокс по истории SOAP" . XML.com. 2001-04-04.
  7. ^ «XML-RPC для новичков» . 1998-07-14. Архивировано из оригинального 12 октября 1999 года.
  8. ^ «Примечание W3C о протоколе простого доступа к объектам (SOAP) 1.1» . W3C. 2000-05-08.
  9. ^ «Спецификации SOAP» . W3C . Проверено 29 марта 2014 .
  10. ^ "Рабочая группа W3C XML Protocol" . W3C . Проверено 29 марта 2014 .
  11. ^ «SOAP версии 1.2, часть 1: платформа обмена сообщениями (второе издание)» . W3C . 27 апреля 2007 . Проверено 15 июня 2012 . Примечание. В предыдущих версиях этой спецификации имя SOAP было аббревиатурой. Это уже не так. (Под разделом 1. Введение)
  12. ^ «SOAP версии 1.2, часть 1: платформа обмена сообщениями (второе издание)» . www.w3.org . Проверено 14 сентября 2016 .
  13. ^ «Предложение структуры привязки» . www.w3.org . Проверено 14 сентября 2016 .
  14. ^ «SOAP версии 1.2, часть 1: платформа обмена сообщениями (второе издание)» . www.w3.org . Проверено 14 сентября 2016 .
  15. ^ a b c d «SOAP версии 1.2, часть 1: платформа обмена сообщениями (второе издание)» . www.w3.org .
  16. ^ "IBM Datapower" . 306.ibm.com. 2011-11-30 . Проверено 4 октября 2012 .
  17. ^ "IBM Zurich XML Accelerator Engine" (PDF) . Проверено 4 октября 2012 .
  18. ^ «Оценка SOAP для высокопроизводительных бизнес-приложений: торговые системы в реальном времени» . Tenermerx Pty Ltd Технологический университет, Сидней. 2011-11-30 . Проверено 14 марта 2013 .
  19. ^ "SOAP по протоколу JMS" . IBM . Проверено 22 марта 2020 года .
  20. ^ "Часто задаваемые вопросы по SOAP-JMS" . Рабочая группа привязки SOAP-JMS . Проверено 22 марта 2020 года .

Дальнейшее чтение [ править ]

  • Бенуа Маршал, " Soapbox: Почему я использую SOAP ", IBM
  • Уче Огбуджи, « Учебное пособие: обмен сообщениями XML с помощью SOAP », главный консультант, Fouroughtt, Inc.

Внешние ссылки [ править ]

  • Страница W3C SOAP
  • Спецификация SOAP версии 1.2
  • Создать сообщение SOAP на Java