ГОСТ Р ИСО/МЭК 40220-2015 Информационные технологии (ИТ). W3C SOAP. Версия 1.2. Часть 2. Дополнения (вторая редакция) стр. 6

Рисунок 1 - Модель, описывающая свойства, совместно используемые SOAP и привязкой
7.1.3 Свойства и функции
Функция может использовать сразу несколько свойств, и, наоборот, одно свойство может участвовать в нескольких функциях. Например, свойства "идентификатор пользователя" и "пароль" могут определять функцию "аутентификация". Еще пример: одно свойство "идентификатор сообщения" может использоваться и в функции "транзакция", и в функции "корреляция сообщений".

8 Шаблоны обмена сообщениями и функции SOAP

8.1 Соглашения о свойствах для шаблонов обмена сообщениями SOAP

В таблице 2 описаны свойства (в соответствии с представленными в настоящем стандарте соглашениями об именовании свойств), на которые опирается описание шаблонов обмена сообщениями (ШОС). Другие свойства могут быть включены в спецификацию конкретных ШОС, но свойства, приведенные в данной таблице, в целом применимы ко всем ШОС.
Таблица 2 - Определения свойств, на которые опирается описание ШОС
Имя свойства:http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/ExchangePatternName.Значение: имя используемого ШОС. Тип: xs:anyURI
Имя свойства:http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/FailureReason. Значение: значение, которое обозначает определенную шаблоном, независимую от привязки причину отказа обмена сообщениями. Спецификации привязки нижележащего протокола могут определять свойства для передачи деталей отказа, специфических для привязки. Тип: xs:anyURI
Имя свойства: http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/Role.Значение: идентификатор определяемой шаблоном роли локального узла SOAP, участвующего в обмене сообщениями. Тип: xs:anyURI
Имя свойства: http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/State.Значение: идентификатор текущего состояния обмена сообщениями. Этим значением управляет экземпляр привязки, и его значение может использоваться другими объектами, контролирующими процесс обмена сообщениями. Тип: xs:anyURI

8.2 Шаблон обмена сообщениями SOAP "запрос-ответ"

В данном разделе определяется шаблон обмена сообщениями (ШОС) "запрос-ответ". В нем описывается абстрактное представление работы этого ШОС. Данный раздел не предназначен для описания настоящей реализации или для предложений о том, как должна быть структурирована реальная реализация.
8.2.1 Имя функции SOAP
Идентификатор данного шаблона обмена сообщениями: URI [ИСО/МЭК 40210, подраздел 5.6] "http://www.w3.org/2003/05/soap/mep/request-response/".
8.2.2 Описание
ШОС SOAP "запрос-ответ" определяет шаблон для обмена сообщениями SOAP, в котором за сообщением, исполняющим роль запроса, следует сообщение, исполняющее роль ответа. Сообщение-ответ МОЖЕТ содержать конверт SOAP, в противном случае ответ ДОЛЖЕН быть определяемым привязкой сообщением, указывающим, что запрос был получен. При отсутствии отказа нижележащего протокола данный ШОС состоит ровно из двух сообщений.
При нормальном функционировании обмена сообщениями, соответствующими ШОС "запрос-ответ", сообщение-запрос сначала передается от запрашивающего узла SOAP к отвечающему узлу SOAP. После успешной обработки сообщения-запроса отвечающим узлом SOAP сообщение-ответ передается от отвечающего узла SOAP запрашивающему узлу SOAP.
Аварийная работа во время обмена сообщениями "запрос-ответ" может быть вызвана отказом при передаче сообщения запроса, отказом отвечающего узла SOAP на обработку сообщения запроса или отказом при передаче сообщения ответа. Информирование о таких отказах может быть опущено на одном или обоих запрашивающем и отвечающем узлах SOAP, а также может быть осуществлено посредством генерации отказа SOAP или отказа, определяемого привязкой (см. 8.2.4). Кроме того, в случае аварийной работы каждый узел SOAP, участвующий в обмене сообщениями, может по-разному определять успешность выполнения операции обмена сообщениями.
Область применения ШОС "запрос-ответ" ограничена обменом сообщениями запроса и ответа между одним запрашивающим и одним отвечающим узлами SOAP. Данный шаблон не налагает требований ни на корреляции между множественными запросами, ни на определенную синхронизацию множественных запросов. Реализации МОГУТ поддерживать несколько запросов (и связанную с ними обработку ответов) одновременно.
8.2.3 Описание конечного автомата
ШОС "запрос-ответ" определяет ряд свойств, описанных в таблице 3.
Таблица 3 - Определения свойств для ШОС "запрос-ответ"
Имя свойства: http://www.w3.org/2003/05/soap/mep/OutboundMessage.Значение: абстрактная структура, представляющая текущее исходящее сообщение в обмене сообщениями. Данная структура абстрагирует и конверт SOAP и все остальные информационные структуры, которые передаются вместе с конвертом. Тип: не определен
Имя свойства: http://www.w3.org/2003/05/soap/mep/lnboundMessage.Значение: абстрактная структура, представляющая текущее входящее сообщение в обмене сообщениями. Данная структура абстрагирует и конверт SOAP и все остальные информационные структуры, которые передаются вместе с конвертом. Тип: не определен
Имя свойства: http://www.w3.org/2003/05/soap/mep/lmmediateDestination. Значение: идентификатор следующего пункта назначения исходящего сообщения. Тип: xs:anyURI
Имя свойства: http://www.w3.org/2003/05/soap/mep/lmmediateSender.Значение: идентификатор непосредственного отправителя входящего сообщения.Тип: xs:anyURI
Чтобы инициировать обмен сообщениями, удовлетворяющий шаблону обмена сообщений "запрос-ответ", отвечающий узел SOAP создает экземпляр локального контекста обмена сообщениями. В таблице 4 описана инициализация контекста.
Таблица 4 - Создание экземпляра контекста обмена сообщениями для запрашивающего узла SOAP
Имя свойства:http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/ExchangePatternName. Значение:"http://www.w3.org/2003/05/soap/mep/request-response/"
Имя свойства:http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/FailureReason.Значение: "None"Примечания: относительный URI, базовый URI которого - значение свойства с именем http://www.w3.org/2002/12/soap/bindingFramework/ExchangeContext/ExchangePatternName
Имя свойства: http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/Role.Значение: "RequestingSOAPNode".Примечания: относительный URI, базовый URI которого - значение свойства с именем http://www.w3.org/2002/12/soap/bindingFramework/ExchangeContext/ExchangePatternName
Имя свойства: http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/State.Значение: "Init".Примечания: относительный URI, базовый URI которого - значение свойства с именем http://www.w3.org/2002/12/soap/bindingFramework/ExchangeContext/Role
Имя свойства: http://www.w3.org/2003/05/soap/mep/OutboundMessage. Значение: абстрактное сообщения запроса
Имя свойства: http://www.w3.org/2003/05/soap/mep/lmmediateDestination. Значение: идентификатор (URI), указывающий на отвечающий узел SOAP
Могут присутствовать и другие свойства, имеющие отношения к операциям экземпляра контекста обмена сообщениями. Такие свойства инициализируются согласно их собственным спецификациям.
После инициализации контекста обмена сообщениями, управление окружением передается (соответствующему спецификации) локальному экземпляру привязки.
На рисунке 2 представлены логические переходы между состояниями запрашивающего и отвечающего узлов SOAP во время обмена сообщениями. В каждом узле SOAP локальные экземпляры привязки обновляют (логически) значение свойства http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/State для отражения текущего состояния процесса обмена сообщениями. Имена состояний - относительные URI, заданные относительно значения базового URI, которое содержится в свойстве http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/Role локального контекста обмена сообщениями.
Когда локальный экземпляр привязки отвечающего узла SOAP начинает получать входящее сообщение запроса, он логически создает экземпляр окружения обмена сообщениями. В таблице 5 представлены свойства, которые привязка инициализирует при создании экземпляра контекста.

Рисунок 2 - Диаграмма переходов ШОС "запрос-ответ"

607 × 381 пикс.     Открыть в новом окне
Рисунок 2 - Диаграмма переходов ШОС "запрос-ответ"
Таблица 5 - Создание контекста обмена сообщениями для входящего запроса в отвечающем узле SOAP
Имя свойства:http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/ExchangePatternName.Значение: "http://www.w3.org/2003/05/soap/mep/request-response/".Примечание: инициализируется как можно раньше в жизненном цикле обмена сообщениями
Имя свойства:http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/FailureReason.Значение: "None".Примечание: относительный URI, базовый URI которого - значение свойства с именем http://www.w3.org/2002/12/soap/bindingFramework/ExchangeContext/ExchangePatternName
Имя свойства: http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/Role.Значение: "RespondingSOAPNode".Примечания: относительный URI, базовый URI которого - значение свойства с именем http://www.w3.org/2002/12/soap/bindingFramework/ExchangeContext/ExchangePattemName.Инициализируется как можно раньше в жизненном цикле обмена сообщениями
Имя свойства: http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/State.Значение: "Init".Примечания: относительный URI, базовый URI которого - значение свойства с именем http://www.w3.org/2002/12/soap/bindingFramework/ExchangeContext/Role
Когда происходит переход между состояниями у запрашивающего и отвечающего узлов SOAP, локальный экземпляр привязки логически обновляет отдельные свойства. В таблицах 6 и 7 описаны эти обновления для запрашивающих и отвечающих узлов SOAP соответственно.
Таблица 6 - Переходы для запрашивающего узла SOAP
Текущее состояние
Init ИнициализацияУсловие перехода: безусловный переход.Следующее состояние: "Запрос".Действие: начать передачу абстрактного сообщения запроса, содержащегося в http://www.w3.org/2003/05/soap/mep/OutboundMessage
Requesting ЗапросУсловие перехода: отказ при передаче сообщения.Следующее состояние: "Отказ".Действие: установить http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContextFailureReason в "transmissionFailure"
Requesting ЗапросУсловие перехода: начато получение сообщения ответа. Следующее состояние: "Отправка и получение".Действие: изменить значение http://www.w3.org/2003/05/soap/mep/lmmediateSender для обозначения отправителя сообщения ответа (может отличаться от значений в http://www.w3.org/2003/05/soap/mep/lmmediateDestination). Начать конструировать абстрактное сообщение ответа в http://www.w3.org/2003/05/soap/mep/lnboundMessage
Sending + Receiving Отправка и получениеУсловие перехода: отказ при передаче сообщения.Следующее состояние: "Отказ".Действие: установить значение http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/FailureReason в "exchangeFailure"
Условие перехода: завершена отправка сообщения запроса. Завершено получение сообщения ответа.Следующее состояние: "Успех".Действие: если в ответе получен конверт SOAP (т.е. в http://www.w3.org/2003/05/soap/mep/InboundMessage), то обработать его согласно модели обработки SOAP
Таблица 7 - Переходы для отвечающего узла SOAP
Текущее состояние
Init ИнициализацияУсловие перехода: начато получение сообщения запроса.Следующее состояние: "Получение".Действие: изменить значение http://www.w3.org/2003/05/soap/mep/lmmediateSender для обозначения отправителя сообщения запроса (если возможно его определить). Начать конструировать абстрактное сообщение запроса http://www.w3.org/2003/05/soap/mep/InboundMessage. Передать управление контекста обмена сообщениями процессору SOAP
Receiving ПолучениеУсловие перехода: отказ приема сообщения.Следующее состояние: "Отказ".Действие: установить значение переменной http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/FailureReason в "receptionFailure"
Условие перехода: начало сообщения ответа доступно в http://www.w3.org/2003/05/soap/mep/OutboundMessage.Следующее состояние: "Получение и отправка".Действие: начать передачу сообщения ответа. Если в абстрактном сообщении в http://www.w3.org/2003/05/soap/mep/OutboundMessage представлен конверт, включить его в сообщение ответа
Receiving + SendingПолучение и отправкаУсловие перехода: отказ при обмене сообщениями.Следующее состояние: "Отказ".Действие: установить значение переменной http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/FailureReason в "exchangeFailure"
Условие перехода: завершено получение сообщения запроса. Завершена отправка сообщения ответа. Следующее состояние: "Успех"
Привязка, которая реализует данный ШОС, МОЖЕТ предоставлять потоковую передачу ответов SOAP. Это означает, что отвечающие узлы SOAP МОГУТ начать передачу ответа SOAP в то время, пока запрос SOAP все еще находится в процессе получения и обработки. Если узлы SOAP реализуют привязку, поддерживающую потоковую передачу, применяются следующие правила:
- ДОЛЖНЫ быть выполнены все правила по 6.2, относящиеся к потоковой передаче индивидуальных сообщений SOAP, и для запросов, и для ответов SOAP;
- при использовании потоковой передачи привязки SOAP запрашивающие узлы SOAP ДОЛЖНЫ избегать взаимной блокировки при получении и при необходимости обработки информации из ответа SOAP, в то время как передается запрос SOAP.
Примечание - В зависимости от используемой реализации и размера обрабатываемых сообщений, это правило МОЖЕТ потребовать от приложений SOAP, чтобы потоковая обработка ответа уровня приложения происходила параллельно с генерацией запроса;
- запрашивающий узел SOAP МОЖЕТ перейти в состояние "Fail", и таким образом прервать передачу исходящего запроса SOAP, основываясь на информации, содержащейся в ответе SOAP входящего потока.
8.2.4 Обработка отказов
Участвующие в ШОС "запрос-ответ" узлы SOAP во время работы могут генерировать отказы SOAP.
Если отказ SOAP сгенерирован отвечающим узлом SOAP, находящимся в состоянии "Получение", то отказ SOAP помещается в http://www.w3.org/2003/05/soap/mep/OutboundMessage, и конечный автомат переходит в состояние "Получение и отправка".
Данный ШОС не специфицирует порождение или обработку отказов SOAP, сгенерированных запрашивающим узлом SOAP во время обработки сообщения ответа, в состояниях, следующих за состоянием "Успех" в таблице переходов запрашивающего узла SOAP (см. таблицу 6).

8.3 Шаблон обмена сообщениями SOAP "ответ SOAP"

Данный раздел определяет шаблон обмена сообщениями (ШОС) "ответ SOAP". В нем описывается абстрактное представление работы данного ШОС. Данный раздел не предназначен для описания реальной реализации или для предложений, как должна быть структурирована реальная реализация.
8.3.1 Имя функции SOAP