Данный раздел определяет функцию SOAP "Действие".
8.5.1 Имя функции SOAP
Идентификатор функции SOAP "Действие": URI [ИСО/МЭК 40210, подраздел 5.6] "http://www.w3.org/2003/05/soap/features/action/".
8.5.2 Описание
Многие привязки SOAP 1.2 к нижележащим протоколам, вероятно, используют тип медиа "application/soap+xml" (см. приложение A) для передачи сериализованных XML сообщений SOAP. Тип медиа определяет дополнительный параметр action, который, помимо прочего, может использоваться для оптимизации обработки или маршрутизации. Функция "Действие" определяет известные URI, чтобы показать, что параметр action поддерживается в привязке, которая использует MIME, и также для того, чтобы ссылаться на значение самого параметра.
8.5.3 Конечный автомат функции SOAP "Действие"
Функция SOAP "Действие" определяет единственное свойство, которое описано в таблице 14. Значение данного свойства ДОЛЖНО быть абсолютным URI [RFC 3986] и НЕ ДОЛЖНО быть пустым.
Таблица 14 - Определение свойства для функции SOAP "Действие"
Имя свойства | Тип свойства |
http://www.w3.org/2003/05/soap/features/action/Action | xsd:anyURI |
Если у свойства http://www.w3.org/2003/05/soap/features/action/Action есть значение в отправителе SOAP, использующем привязку, поддерживающую данную функцию, то отправитель ДОЛЖЕН использовать значение свойства в качестве значения параметра action в указателе типа медиа.
Наоборот, если получатель SOAP обнаруживает значение в параметре action указателя типа медиа, то получатель ДОЛЖЕН сохранить это значение в свойстве http://www.w3.org/2003/05/soap/features/action/Action.
9 Привязка SOAP к HTTP
9.1 Введение
Привязка SOAP к HTTP обеспечивает использование HTTP для операций SOAP. Привязка соответствует спецификации "Структура привязки протокола SOAP" (см. [ИСО/МЭК 40210, раздел 7]) и поддерживает шаблоны обмена сообщениями и функции, описанные в разделе 8.
9.1.1 Опциональность
Привязка SOAP к HTTP опциональна, узлам SOAP НЕ ТРЕБУЕТСЯ ее реализовывать. Про узел SOAP, который правильно и полностью реализует привязку SOAP к HTTP, говорят, что он "соответствует привязке SOAP 1.2 к HTTP".
Спецификация SOAP версии 1.2 не исключает возможность разработки других привязок к HTTP или привязок к другим протоколам, но связь с узлами, использующими подобные другие привязки, не является целью. Заметим, что другие привязки SOAP к HTTP МОГУТ быть реализованы с целью поддержки других шаблонов обмена сообщениями, отличающихся от описанных в 8.2 и 8.3. Такие альтернативные привязки МОГУТ поэтому использовать функции и коды состояния HTTP, не требуемые для данной привязки.
9.1.2 Использование HTTP
Привязка SOAP к HTTP определяет базовый URI согласно правилам HTTP/1.1 [RFC 2616], то есть, базовый URI - это URI запроса HTTP (значение поля Request-URI в строке запроса) или значение поля Content-Location заголовка HTTP.
Данная привязка SOAP к HTTP предназначена для надлежащего использования протокола HTTP как протокола приложения. Например, успешные ответы содержат коды состояния 200 или 202, а отказы обозначаются как 4XX или 5XX. Данная привязка не предназначена для использования всех функций HTTP; она определяет использование протокола HTTP исключительно с целью связывания с другими узлами SOAP, реализующими эту же привязку. Поэтому данная привязка SOAP к HTTP не определяет использование и/или значение всех возможных методов HTTP, полей заголовка и кодов ответов. Она определяет только то, что имеет отношение к шаблонам, описанным в 8.2 и 8.3, или то, что, вероятно, будет представлено механизмами HTTP (такими, как прокси), действующими между узлами SOAP.
Определенные необязательные функции, предоставляемые данной привязкой, зависят от возможностей, предоставленных HTTP/1.1, например согласование содержимого. Поэтому реализациям СЛЕДУЕТ использовать HTTP/1.1 [RFC 2616] (или более поздние совместимые версии, которые используют тот же старший номер версии . Реализации МОГУТ также быть развернуты, используя HTTP/1.0, несмотря на то, что в таком случае определенные дополнительные функции привязки могут не быть предоставлены.
________________
В данном случае речь идет о HTTP 1.
Примечание - Реализации привязки SOAP к HTTP должны учитывать тот факт, что промежуточные узлы HTTP/1.0 (которые также могут быть промежуточными узлами SOAP) могут изменять представление сообщений SOAP даже в ситуациях, где и начальный отправитель SOAP, и конечный получатель SOAP используют HTTP/1.1.
9.1.3 Взаимодействие с реализациями HTTP, не являющимися реализациями SOAP
В случае использования с шаблонами обмена сообщениями SOAP, прежде всего "ответ SOAP" (см. 8.3), сообщения HTTP, сформированные данной привязкой, скорее всего, не будут отличаться от сформированных реализацией HTTP, не поддерживающей SOAP. Соответственно, при использовании данной привязки между узлами SOAP и другими реализациями HTTP может быть достигнута определенная степень взаимодействия. Например, стандартный веб-сервер (т.е. не написанный специально для соответствия данной спецификации) может использоваться для ответов на HTTP GET запросы с Content-Type, равным "application/soap+xml", инициированные SOAP. Такое взаимодействие не является нормативной функцией данной спецификации.
Даже при том, что HTTP часто используется на известном порту TCP 80, использование HTTP не ограничивается данным портом. Тем самым возможно наличие выделенного HTTP сервера для обработки данных SOAP на индивидуальном порту TCP. Альтернативно этому, возможно использование отдельного виртуального узла для обработки данных SOAP. Однако, такая конфигурация связана с вопросами удобства и не является требованием данной спецификации (см. [ИСО/МЭК 40210, 10.3.1]).
9.1.4 Тип медиа HTTP
Соответствующие данной привязке реализации:
1 ДОЛЖНЫ быть способны отправлять и получать сообщения, сериализированные с использованием типа медиа "application/soap+xml"; надлежащее использование и параметры данного типа описаны в приложении А;
2 МОГУТ отправлять запросы и ответы, используя другие типы медиа, если эти типы медиа предусматривают, как минимум, передачу XML SOAP инфо-набора;
3 МОГУТ при отправке запросов генерировать поле Accept заголовка HTTP. Это поле заголовка должно отвечать условиям:
ДОЛЖНО указывать на возможность принять как минимум "application/soap+xml";
МОЖЕТ дополнительно указывать на готовность принять другие типы медиа, которые удовлетворяют требованиям, указанным выше в перечислении 2.
9.2 Имя привязки
Идентификатор данной привязки: URI (см. [ИСО/МЭК 40210, раздел 7]) "http://www.w3.org/2003/05/soap/bindings/HTTP/".
9.3 Поддерживаемые шаблоны обмена сообщениями
Реализация привязки SOAP к HTTP ДОЛЖНА поддерживать следующие шаблоны обмена сообщениями (ШОС):
"http://www.w3.org/2003/05/soap/mep/request-response/" (см.8.2); "http://www.w3.org/2003/05/soap/mep/soap-response/" (см. 8.3).
9.4 Поддерживаемые функции
Реализация привязки SOAP к HTTP ДОЛЖНА поддерживать следующие дополнительные функции:
"http://www.w3.org/2003/05/soap/features/web-method/" (см. 8.4);
"http://www.w3.org/2003/05/soap/features/action/" (см. 8.5).
Множество допустимых значений свойства http://www.w3.org/2003/05/soap/features/web-method/Method в данной привязке к HTTP зависит от используемого ШОС (он указывается в свойстве http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/ExchangePatternName).
Таблица 15 - Возможные значения свойства функции "Веб-метод"
http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/ExchangePatternName | http://www.w3.org/2003/05/soap/features/web-method/Method |
http://www.w3.org/2003/05/soap/mep/request-response/ | "POST" |
http://www.w3.org/2003/05/soap/mep/soap-response/ | "GET" |
Примечание - Другая привязка SOAP Версии 1.2 к HTTP может допускать другие комбинации http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/ExchangePatternName и http://www.w3.org/2003/05/ soap/features/web-method/Method.
9.5 Операции шаблонов обмена сообщениями
Для экземпляров привязок, соответствующих данной спецификации:
- узел SOAP, инстанцированный на клиенте HTTP, может иметь роль (т.е. свойство http://www.w3.org/2002/12/soap/bindingFramework/ExchangeContext/Role) "RequestingSOAPNode";