Семья | Протокол обмена сообщениями |
---|---|
Разработано | Дэйв Винер , Дон Бокс , Боб Аткинсон и Мохсен Аль-Госейн |
Впервые появился | Первоначально как XML-RPC в июне 1998 года |
Стабильный выпуск | 1.2 / 27 апреля 2007 г . |
SOAP (ранее аббревиатура от Simple Object Access Protocol ) - это спецификация протокола обмена сообщениями для обмена структурированной информацией при реализации веб-сервисов в компьютерных сетях . Он использует набор информации XML для своего формата сообщения и опирается на протоколы прикладного уровня , чаще всего протокол передачи гипертекста (HTTP), хотя некоторые устаревшие системы обмениваются данными по протоколу SMTP для согласования и передачи сообщений.
SOAP позволяет разработчикам вызывать процессы, запущенные в разных операционных системах (таких как Windows , macOS и Linux ), для проверки подлинности, авторизации и взаимодействия с использованием Extensible Markup Language (XML). Поскольку веб-протоколы, такие как HTTP, установлены и работают во всех операционных системах, SOAP позволяет клиентам вызывать веб-службы и получать ответы независимо от языка и платформ.
Характеристики [ править ]
SOAP обеспечивает уровень протокола обмена сообщениями стека протоколов веб-служб для веб-служб. Это протокол на основе XML, состоящий из трех частей:
- конверт, который определяет структуру сообщения [1] и способ ее обработки
- набор правил кодирования для выражения экземпляров определяемых приложением типов данных
- соглашение для представления вызовов процедур и ответов
SOAP имеет три основные характеристики:
- расширяемость (безопасность и WS-адресация входят в число разрабатываемых расширений)
- нейтралитет (SOAP может работать по любому протоколу, например HTTP , SMTP , TCP , UDP )
- независимость (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 [15]
- Модель расширяемости SOAP, определяющая концепции функций SOAP и модулей SOAP [15]
- Структура привязки базового протокола SOAP, описывающая правила для определения привязки к базовому протоколу, который может использоваться для обмена сообщениями SOAP между узлами SOAP [15]
- Конструкция сообщения SOAP, определяющая структуру сообщения SOAP [15]
Строительные блоки SOAP [ править ]
Сообщение SOAP - это обычный XML-документ, содержащий следующие элементы:
Элемент | Описание | Обязательный |
---|---|---|
Конверт | Идентифицирует XML-документ как сообщение SOAP. | да |
Заголовок | Содержит информацию заголовка. | Нет |
Тело | Содержит информацию о вызовах и ответах. | да |
Вина | Предоставляет информацию об ошибках, возникших при обработке сообщения. | Нет |
Транспортные методы [ править ]
И 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> </ мыло: Конверт>
Техническая критика [ править ]
Этот раздел требует дополнительных ссылок для проверки . Август 2020 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) ( |
Преимущества [ править ]
- Характеристика нейтральности 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
- Безопасность веб-служб
Ссылки [ править ]
- ^ Хирш, Фредерик; Кемп, Джон; Илкка, Яни (11 января 2007 г.). Мобильные веб-службы: архитектура и реализация . John Wiley & Sons (опубликовано в 2007 г.). п. 27. ISBN 9780470032596. Проверено 15 сентября 2014 .
Протокол простого доступа к объектам (SOAP) определяет структуру конверта обмена сообщениями, предназначенную для переноса полезной нагрузки приложения в одной части конверта (тела сообщения) и управляющей информации в другой (заголовок сообщения).
- ^ «Адресация веб-служб (WS-адресация)» . www.w3.org . Проверено 15 сентября 2016 .
- ^ "Эксклюзивный журнал разработчиков .NET" Индиго "Интервью с Microsoft Don Box" . Dotnet.sys-con.com . Проверено 4 октября 2012 .
- ^ "Титульные страницы XML по истории SOAP" . Coverpages.org . Проверено 22 июля 2003 .
- ^ «SOAP: простой протокол доступа к объектам» . Сентябрь 1999 г.
- ^ "Дон Бокс по истории SOAP" . XML.com. 2001-04-04.
- ^ «XML-RPC для новичков» . 1998-07-14. Архивировано из оригинального 12 октября 1999 года.
- ^ «Примечание W3C о протоколе простого доступа к объектам (SOAP) 1.1» . W3C. 2000-05-08.
- ^ «Спецификации SOAP» . W3C . Проверено 29 марта 2014 .
- ^ "Рабочая группа W3C XML Protocol" . W3C . Проверено 29 марта 2014 .
- ^ «SOAP версии 1.2, часть 1: платформа обмена сообщениями (второе издание)» . W3C . 27 апреля 2007 . Проверено 15 июня 2012 .
Примечание. В предыдущих версиях этой спецификации имя SOAP было аббревиатурой.
Это уже не так.
(Под разделом 1. Введение)
- ^ «SOAP версии 1.2, часть 1: платформа обмена сообщениями (второе издание)» . www.w3.org . Проверено 14 сентября 2016 .
- ^ «Предложение структуры привязки» . www.w3.org . Проверено 14 сентября 2016 .
- ^ «SOAP версии 1.2, часть 1: платформа обмена сообщениями (второе издание)» . www.w3.org . Проверено 14 сентября 2016 .
- ^ a b c d «SOAP версии 1.2, часть 1: платформа обмена сообщениями (второе издание)» . www.w3.org .
- ^ "IBM Datapower" . 306.ibm.com. 2011-11-30 . Проверено 4 октября 2012 .
- ^ "IBM Zurich XML Accelerator Engine" (PDF) . Проверено 4 октября 2012 .
- ^ «Оценка SOAP для высокопроизводительных бизнес-приложений: торговые системы в реальном времени» . Tenermerx Pty Ltd Технологический университет, Сидней. 2011-11-30 . Проверено 14 марта 2013 .
- ^ "SOAP по протоколу JMS" . IBM . Проверено 22 марта 2020 года .
- ^ "Часто задаваемые вопросы по SOAP-JMS" . Рабочая группа привязки SOAP-JMS . Проверено 22 марта 2020 года .
Дальнейшее чтение [ править ]
- Бенуа Маршал, " Soapbox: Почему я использую SOAP ", IBM
- Уче Огбуджи, « Учебное пособие: обмен сообщениями XML с помощью SOAP », главный консультант, Fouroughtt, Inc.
Внешние ссылки [ править ]
- Страница W3C SOAP
- Спецификация SOAP версии 1.2
- Создать сообщение SOAP на Java