вторник, 1 февраля 2022 г.

SOAP

Источник: https://ru.wikipedia.org/wiki/SOAP

SOAP (от англ. Simple Object Access Protocol — простой протокол доступа к объектам — протокол обмена структурированными сообщениями в распределённой вычислительной среде.

Распределительная вычислительная среда (англ. Distributed Computing Environment, сокр. DCE) — система программного обеспечения. DCE предоставляет фреймворк и средства разработки клиент-серверных приложений.

Фреймворк (англицизм, неологизм от framework — остов, каркас, рама, структура) — программная платформа, определяющая структуру программной системы; программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта.

Первоначально SOAP предназначался в основном для реализации удалённого вызова процедур (RPC). Сейчас протокол используется для обмена произвольными сообщениями в формате XML, а не только для вызова процедур.

RPC - удалённый вызов процедур (иногда вызов удалённых процедур; RPC от англ. remote procedure call) — класс технологий, позволяющих программам вызывать функции или процедуры в другом адресном пространстве (на удалённых узлах, либо в независимой сторонней системе на том же узле).

SOAP является расширением протокола XML-RPC.

XML-RPC (от англ. eXtensible Markup Language Remote Procedure Call — XML-вызов удалённых процедур) — стандарт/протокол вызова удалённых процедур, использующий XML для кодирования своих сообщений и HTTP в качестве транспортного механизма. Является прародителем SOAP, отличается исключительной простотой в применении. XML-RPC, как и любой другой интерфейс Remote Procedure Call (RPC), определяет набор стандартных типов данных и команд, которые программист может использовать для доступа к функциональности другой программы, находящейся на другом компьютере в сети.

SOAP может использоваться с любым протоколом прикладного уровня: SMTP, FTP, HTTP, HTTPS и др. Однако его взаимодействие с каждым из этих протоколов имеет свои особенности, которые должны быть определены отдельно. Чаще всего SOAP используется поверх HTTP.

SOAP является одним из стандартов, на которых базируются технологии веб-служб.


Источник: https://wiki.merionet.ru/servernye-resheniya/28/soap-protokol-imeni-mylnoj-opery/

SOAP (Simple Object Access Protocol). Это протокол обмена сообщениями в вычислительной среде, созданный в 1998.

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

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

Далее про ошибки в SOAP-сообщениях 


Источник: https://www.ibm.com/docs/ru/rsas/7.5.0?topic=standards-soap

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

Несмотря на отсутствие зависимости от конкретного транспортного протокола, в большинстве случаев протокол SOAP используется совместно с протоколом HTTP для обеспечения поддержки существующей инфраструктуры сети Internet. SOAP позволяет создавать привязки и использовать обнаруженные Web-службы, описывая пути для маршрутизации сообщений. 

SOAP - это протокол на основе XML, описывающий три части каждого сообщения:

Пакет.  

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

Правила кодировки.  

Набор правил кодировки описывает экземпляры типов данных приложения. Правила кодировки задают механизм сериализации для обмена экземплярами типов данных приложения. SOAP задает независимую от языка программирования схему типов данных на основе XSD, а также набор правил кодировки для всех типов данных. 

Стили взаимодействия. 

Операции взаимодействия можно реализовать в формате вызова удаленных процедур (RPC) или обмена сообщениями (документами). 

Стили связывания: SOAP поддерживает два стиля взаимодействия:

  • Вызов удаленных процедур (RPC):  Вызов операции с возвратом результата.
  • Обмен документами:  Этот стиль предусматривает обмен документами или сообщениями


SOAP API

Источник: https://blog.skillfactory.ru/glossary/soap-api/

SOAP — это протокол, по которому веб-сервисы взаимодействуют друг с другом или с клиентами. Название происходит от сокращения Simple Object Access Protocol («простой протокол доступа к объектам»). SOAP API — это веб-сервис, использующий протокол SOAP для обмена сообщениями между серверами и клиентами. При этом сообщения должны быть написаны на языке XML в соответствии со строгими стандартами, иначе сервер вернет ошибку.

Особенности SOAP API

SOAP может использоваться с протоколами SMTP, FTP, HTTP, HTTPS. Чаще всего — с HTTP как с наиболее универсальным: его поддерживают все браузеры и серверы. Корректное SOAP-сообщение состоит из нескольких структурных элементов: Envelope, Header, Body и Fault.


Envelope («конверт»). Это корневой элемент. Определяет XML-документ как сообщение SOAP с помощью пространства имен xmlns_soap=»http://www.w3.org/2003/05/soap-envelope/». Если в определении будет указан другой адрес, сервер вернет ошибку.

Header («заголовок»). Включает в себя атрибуты сообщения, связанные с конкретным приложением (аутентификация, проведение платежей и так далее). В заголовке могут использоваться три атрибута, которые указывают, как принимающая сторона должна обрабатывать сообщение, — mustUnderstand, actor и encodingStyle. Значение mustUnderstand — 1 или 0 — говорит принимающему приложению о том, следует ли распознавать заголовок в обязательном или опциональном порядке. Атрибут actor задает конкретную конечную точку для сообщения. Атрибут encodingStyle устанавливает специфическую кодировку для элемента. По умолчанию SOAP-сообщение не имеет определенной кодировки.

Body («тело»). Сообщение, которое передает веб-приложение. Может содержать запрос к серверу или ответ от него.

Fault («ошибка»). Опциональный элемент. Передает уведомление об ошибках, если они возникли в ходе обработки сообщения. Может содержать вложенные элементы, которые проясняют причину возникновения ошибки:

  • faultcode — код неполадки;
  • faultstring — «человекопонятное» описание проблемы;
  • faultactor — информация о программном компоненте, который вызвал ошибку;
  • detail — дополнительные сведения о месте возникновения неполадки.

Отличия SOAP от REST

SOAP — протокол, а REST — архитектурный стиль, набор правил по написанию кода. REST был представлен в 2000 году. К этому времени недостатки SOAP были очевидны:

  • объемные сообщения;
  • поддержка только одного формата — XML;
  • схема работы по принципу «один запрос — один ответ»;
  • смена описания веб-сервиса может нарушить работу клиента.

В каких случаях используют SOAP

  • Асинхронная обработка и последующий вызов. Стандарт SOAP 1.2 обеспечивает клиенту гарантированный уровень надежности и безопасности.
  • Формальное средство коммуникации. Если клиент и сервер имеют соглашение о формате обмена, то SOAP 1.2 предоставляет жесткие спецификации для такого типа взаимодействия.
  • Операции с состоянием. Если приложение требует, чтобы состояние сохранялось от одного запроса к другому, то стандарт SOAP 1.2 предоставляет структуру для поддержки таких требований. 

Применение SOAP при интеграции систем

Источник: https://systems.education/soap-integration

SOAP основывается на технологии удаленного вызова процедур.

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

Пример:

Я открываю на своем компьютере браузер, который является клиентом. По протоколу HTTP он обращается к серверу (назовем его HTTP-server).

На этом HTTP-сервере живёт приложение, которое отдает мне информацию, о том, что акция Компании стоит, к примеру, 252 доллара. Однако, откуда само приложение, живущее на HTTP-сервере, знает стоимость акции?

А все очень просто — приложение в данном случае выступило как SOAP-client и запросило эту информацию на другом сервере (назовем его SOAP-server).

Взаимодействие SOAP-client и SOAP-server происходит по протоколу SOAP поверх HTTP. Что значит поверх? Это значит, что клиент и сервер общаются по протоколу HTTP, но по этому протоколу передаётся не просто стандартное сообщение HTTP, а некий конвертик с письмом, причем это письмо написано по правилам протокола SOAP.

То есть сайт, который передал мне информацию о Компании, сам запросил SOAP-server (то есть биржу акций) по протоколу HTTP и вложил сообщение в конвертик SOAP.

Таким образом, информация о курсе акции пришла ко мне не напрямую с биржи, а через посредника — через SOAP-client.

Стек протоколов веб-сервисов


Когда мы работаем по сети, мы работаем с протоколами TCP/IP — это нижний, сетевой уровень протоколов. Весь интернет базируется на протоколе HTTP. HTTP является просто транспортом, с помощью которого информация передается по сети.

Чтобы передать какое-либо сообщение по сети, оно должно соответствовать правилам протокола HTTP. А дальше в пакетик, передаваемый по протоколу HTTP, вкладывается сообщение по протоколу SOAP. И все это живет по правилам, описанным в файле WSDL.

Как устроен xml-документ?

Первая строка документа — XML-декларация, она указывает на версию XML (version="1.0″) и тип кодировки документа (encoding="utf-8″).

XML-декларация всегда начинается с символов <?xml и заканчивается символами ?>.
Декларация должна располагаться в самом начале файла, то есть первым символом файла должна быть угловая скобка и никаких концов строки или пробелов.

Правильно оформленный XML соответствует правилам:
  • Каждый открывающий тег должен иметь соответствующий закрывающий тег.
  • Теги не могут перекрывать друг друга.
  • XML- документы должны иметь только один корневой элемент.
  • Регистр символов (верхний/нижний) для XML существенен.

Что ещё есть в xml-документе?
Всё XML-сообщение (наша записочка) заворачивается в так называемый корневой тег.

Правильно оформленный XML это такой XML, который соответствует стандартам языка и может быть разобран приложением, то есть приложение его получит, проверит синтаксис и начнет разбирать.

Важно понимать, что приложение не будет разбирать XML если он не будет правильно оформлен. В этом случае приложение придёт к выводу, что XML повредили или подменили по дороге.

То есть с точки зрения приложения XML представляет собой дерево, состоящее из узлов. 

Узлы вкладываются друг друга, и получается, что XML-документ можно представить в виде перевернутого дерева, только дерево растет вниз.

Атрибуты элементов в XML
Теги могут содержать атрибуты, то есть мы можем вложить атрибуты в корневой тег. 

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

Атрибуты — это пары имя/значение, поставленные в соответствие одному из элементов. Они должны находиться при открывающем теге, но не при закрывающем.

Атрибуты всегда должны иметь значение, даже если значением является всего лишь пустая строка. Значения атрибутов должны заключаться в кавычки. При этом согласно синтаксису XML допускаются как двойные, так и одинарные кавычки.

Если вам придется руками формировать XML-документ, никогда не пишите в одном документе и двойные и одинарные кавычки, просто потому что вам лень аккуратненько расставить однотипные, поскольку это может привести к ошибкам.

Если нам нужно определить пространство имён (семью), к которому относится тег, мы заводим специальный атрибут. Этот атрибут называется XML namespace, сокращенно xmlns. Именно в xmlns мы пишем адрес — то место, где публикуется стандарт стандарта языка.

Что из себя представляет семья тегов?
Правило такое: если тег, у которого указано пространство имён, содержит вложенные теги, то эти вложенные теги относятся к тому же пространству имён.

Пространство имён записывается как атрибут и это тоже узел дерева, только узел другого типа. У него также есть текстовое содержимое, только это особое текстовое содержимое. В целом, это тоже XML-документ просто узлы здесь разные (элементные и атрибутные).

Сообщения SOAP

Envelope и Body — теги, которые прописаны в протоколе SOAP. То есть, если вы отправляете запрос по протоколу SOAP, то у вас должен быть тег Envelope и вложенный в него тег Body. Это нужно просто запомнить.

SOAP-ENV — обозначение пространства имён, то есть теги Envelope и Body относятся к пространству имён SOAP-овского окружения и это не что иное, как краткое указание на то, что есть определенное семейство тегов. 

Web Services Description Language (WSDL)
WSDL — документ, благодаря которому приложение заранее знает, какие должны прийти данные внутри каких тегов.

Основные теги с которыми вы столкнетесь в описании WSDL-сервера:
  • Message — сообщения, используемые web-сервисом.
  • PortType — список операций, которые могут быть выполнены с
  • сообщениями.
  • Binding — способ, которым сообщение будет доставлено.
Как все это выглядит?
На веб-сервисе лежит файл WSDL. И клиент, и сервер руководствуются в своей работе этим файлом: читают его и разбираются, как устроен сервис. И клиент, и сервер умею читать этот файл и получать из него информацию, так как они знают стандарт SOAP и то, как должен быть устроен файл WSDL.

Выводы
Главным недостатком SOAP является то, что при его использовании для передачи сообщений, он увеличивает их объём и снижает скорость обработки.

Преимущества приложения, созданного на основании REST:
  • Надёжность (за счёт отсутствия необходимости сохранять информацию о состоянии клиента, которая может быть утеряна).
  • Производительность (за счёт использования кеша).
  • Масштабируемость.
  • Прозрачность взаимодействия между системами по сети.
  • Простота интерфейсов.
  • Портативность компонентов.
  • Лёгкость внесения изменений.
  • Способность эволюционировать, приспосабливаясь к новым требованиям.
Поясним несколько важных моментов. Если говорить о простоте интерфейсов, то разумеется REST проще, так как передает информацию в файле формата JSON, а формат JSON специально создан для языка JavaScript, на котором работает браузер.

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

Относительно легкости внесения изменений хочется заметить: для того, чтобы изменить WSDL, мы, разумеется, можем изменить адрес, но это непросто. SOAP — консервативный протокол, он используется преимущественно в Legacy-системах, но, тем ни менее, знание SOAP пользуется достаточно большим спросом.

В сфере информационных технологий унаследованными системами называют устаревшие методы, технологии, вычислительные системы или приложения, которые используются до сих пор. Часто слово «унаследованный» подразумевает, что система задала стандарты для всех последующих.

Унаследованные системы — это просто компьютерные системы, которые продолжают использоваться для работы.

Комментариев нет:

Отправить комментарий