Найти тему
Merion Academy

SOAP - протокол имени мыльной оперы

Сначала выясним что такое протокол SOAP (Simple Object Access Protocol). Это протокол обмена сообщениями в вычислительной среде, созданный в 1998 году группой программистов во главе с Дейвом Винером. Консорциум W3C поддерживает протокол SOAP. Окончательный вариант представленного стандарта - SOAP 1.2.

Simple Object Access Protocol - протокол доступности объектов. Это называлось протоколом версии SOAP 1.1. Данное наименование отражает его значимость - обращение к различным методам для удаленных объектов. В настоящее время имя протокола SOAP сильно поменялось, и поэтому вы можете услышать другое имя от разработчиков.

SOAP не может отличить вызовы от процедур и ответов, и его возможности включают определение форматов сообщений в виде конкретного XML-документа. Сообщение может содержать информацию о вызовах процедур, ответах, запросах и так далее.

Разница между SOAP запросом и ответом
Разница между SOAP запросом и ответом

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

SOAP является базовой моделью одностороннего подключения, что позволяет обеспечить согласованный обмен сообщениями между получателем и отправителем. Технология SOAP включает в себя специальное соглашение, которое предназначено для преобразования односторонних сообщений работая по принципу "запрос-ответ", а также возможность определить передачу всего документа XML.

ОБЩАЯ СТРУКТУРА SOAP СООБЩЕНИЯ

Общая структура SOAP сообщения
Общая структура SOAP сообщения

Сообщение SOAP - это документ XML, информация которого складывается из трех основных элементов: конверта, заголовка и тела.

ОБРАБОТКА ОШИБОК В SOAP-СООБЩЕНИЯХ

Если сервер SOAP обнаруживает ошибку при обработке входящего сообщения SOAP (Simple Object Access Protocol), обработка останавливается, и клиенту отправляется сообщение SOAP с элементом ошибки и сообщением об ошибке.

ТИПЫ ОШИБОК:

Список кодов ошибок постоянно меняется и расширяется. Версия 1.1 определяет следующие типы ошибок:

  • VersionMismatch - Неверное пространство имен (неверная версия или неверное имя).
  • MustUnderstand - Блок заголовка, помеченный атрибутом mustUnderstand со значением 1, не соответствует его синтаксису, определенному в схеме документа.
  • Client - XML-документ, содержащий сообщение, создан неправильно и поэтому сервер не способен его подвергнуть обработке. Клиент обязан изменить сообщение.
  • Server - Сервер не способен подвергнуть обработке правильно зарегистрированное сообщение по внутренним причинам.

ТИПЫ ОШИБОК В ВЕРСИИ 1.2:

  • VersionMismatch - Неправильное пространство имен (неверная версия или ее имя были введены неправильно, или в сообщении было обнаружено имя элемента XML, не определенное в этом пространстве имен). Сервер записывает элемент в заголовок ответа, который отображает вложенные элементы с допустимыми именами пространства имен, которые понимает сервер.
  • MustUnderstand - Блок заголовка, помеченный атрибутом mustUnderstand со значением true, не отвечает своему синтаксису, определенному в схеме документа.
  • Data Encoding Unknown - В сообщении встречаются непонятные данные, возможно, они записаны в неизвестной кодировке.
  • Sender - Документ XML, содержащий сообщение, искажен, и сервер не может его обработать. Клиент должен изменить сообщение.
  • Receiver - Сервер не может обработать правильно записанное сообщение по своим внутренним причинам, например, отсутствует необходимый анализатор XML.

Сервер может добавить некоторые типы ошибок к представленным выше типам ошибок. Обычно они подробны стандартным, и сообщения о них появляются в элементах, как показано выше. Вкратце - вот что из себя представляет этот протокол.