SOAP API

SOAP API

В конце 1990-х годов протокол SOAP был разработан для обмена данными в формате XML между клиентом и сервером. Давайте разберемся что такое SOAP API сейчас и в каких случаях его использовать. Поговорим о недостатках, а также почему ему на пятки наступает REST API.

SOAP(Simple Object Access Protocol) — это протокол обмена сообщениями между компьютерными системами.

SOAP API (Application Programming Interface) — это интерфейс, который позволяет взаимодействовать с удаленными сервисами или приложениями с использованием SOAP протокола. SOAP API основан на использовании XML для описания структуры и содержимого сообщений. Сообщения в SOAP API представляют собой XML-документы, которые содержат данные и вызовы методов для удаленного выполнения операций.

Базовые понятия SOAP API

Пакеты. В SOAP API данные передаются в виде пакетов — это обертки для информации, передаваемой между клиентом и сервером. Каждый пакет содержит заголовок (header) и тело (body). В заголовке можно указать дополнительные метаданные, такие как информацию о безопасности или версии протокола. В теле пакета находятся сами данные, которые могут быть представлены в виде XML-структуры.

Правила кодировки. SOAP API работает с XML для кодирования данных. XML (eXtensible Markup Language) использует теги и атрибуты для описания структуры данных. SOAP определяет набор правил, которые определяют, как данные должны быть представлены в XML-формате. Например, SOAP определяет правила для сериализации объектов, передачи значений и обработки ошибок.

Стили взаимодействия. SOAP API поддерживает различные стили взаимодействия, которые определяют, как клиент и сервер обмениваются данными, например:

  • RPC-стиль. В RPC-стиле клиент вызывает удаленный метод на сервере, передавая ему параметры. Сервер выполняет метод и возвращает результат обратно клиенту. RPC-стиль абстрагирует вызовы удаленных методов, делая их похожими на вызовы локальных методов.
  • Document-style. В Document-стиле данные передаются в виде XML-документа. Вместо вызова методов, клиент и сервер обмениваются структурированными XML-данными. Document-style более гибкий и позволяет передавать сложные объекты и атрибуты.

Модель данных SOAP

Модель данных SOAP определяет типы данных, которые могут быть переданы и позволяет определять пользовательские типы данных и их структуру.

Элементы модели данных SOAP

Элементы XML: нужны для представления данных в SOAP сообщениях. Каждый элемент имеет имя и может содержать другие элементы или текстовые данные.

Атрибуты XML: используются для представления дополнительной информации об элементе. Они имеют имя и значение и могут быть использованы для передачи метаданных или управления обработкой данных.

Простые типы данных: строки, числа, даты и логические значения. Они могут быть использованы для представления простых значений в SOAP сообщениях.

Сложные типы данных: структуры и массивы. Структуры содержат несколько элементов разных типов, а массивы — несколько элементов одного типа.

Пространства имен: существуют для разрешения конфликтов имен элементов и типов данных. Пространства имен позволяют уникально идентифицировать элементы и типы данных в рамках SOAP сообщения.

Что может SOAP API

  • Создавать структурированные сообщения: при помощи описания формата сообщений в XML, который понятен для большинства языков программирования и платформ
  • Работать с различными протоколами: такими как HTTP, HTTPS, SMTP, FTP. Это делает его гибким и позволяет интегрировать системы, использующие разные протоколы
  • Поддерживать разные платформы и языки программирования: такие как Java, .NET, PHP. Это делает его доступным для широкого круга разработчиков и позволяет создавать межплатформенные приложения
  • Расширять функциональность: SOAP API позволяет определять собственные пользовательские типы данных и имеет такие расширения, как WS-Security для обеспечения безопасности или WS-ReliableMessaging для обеспечения надежной доставки сообщений.

Популярность и актуальность

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

В последние годы популярность SOAP снизилась в связи с развитием более легковесных и простых в использовании протоколов, таких как REST (Representational State Transfer). REST API стал более известным из-за своей простоты, гибкости и поддержки форматов данных, таких как JSON.

В итоге, выбор между SOAP API и другими протоколами зависит от конкретных требований и контекста проекта.

Отличия SOAP от REST

Архитектура:

  • REST использует стандартные HTTP-методы, такие как GET, POST, PUT и DELETE
  • SOAP работает с форматом XML для сериализации данных и предоставляет возможность обмена сложными объектами и атрибутами.

Протокол передачи данных:

  • REST основан на протоколе HTTP
  • SOAP более гибок в выборе протокола передачи данных.

Формат данных:

  • REST работает как с JSON, XML, так и с простым текстом.
  • SOAP использует XML для сериализации и передачи данных.

Универсальность и простота использования:

  • REST прост и гибок в использовании.
  • SOAP предоставляет богатый набор функций и поддерживает сложные операции и транзакции. SOAP требует наличия WSDL (Web Services Description Language) для описания веб-служб.

Пример SOAP API

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:m="http://www.example.com/stock">
<soap:Header/>
<soap:Body>
<m:GetStockPrice>
<m:StockName>IBM</m:StockName>
</m:GetStockPrice>
</soap:Body>
</soap:Envelope>

Пример REST API

GET /api/stocks/IBM HTTP/1.1
Host: example.com

В примере SOAP мы видим структурированное XML-сообщение, в котором указывается операция GetStockPrice и параметр StockName со значением IBM.

В примере REST мы видим простой HTTP-запрос GET, в котором указывается адрес ресурса /api/stocks/IBM для получения информации об акции IBM.

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

  • В интеграции сложных систем. SOAP поддерживает передачу сложных объектов и атрибутов, что позволяет эффективно обмениваться данными между системами.
  • Когда есть необходимость в строгих стандартах безопасности с поддержкой SSL. SOAP API использует WS-Security для обеспечения безопасности приложений на уровне предприятия и для связи с унаследованными системами.
  • Когда нужны надежные функции обмена сообщениями. Если вам необходимо гарантировать, что сообщения будут доставлены в надежном порядке и без потерь, то SOAP API обеспечит надежную доставку сообщений между системами при помощи расширения WS-ReliableMessaging.
  • Когда необходимо сохранить конфиденциальность. SOAP API включает в себя соответствие стандарту ACID (Atomicity, Consistency, Isolation, and Durability) и это соответствие уменьшает избыточность и повышает безопасность и целостность сообщений.

Недостатки SOAP

  • Объемные сообщения: SOAP API использует XML для сериализации данных, что приводит к увеличению объема передаваемых сообщений. Проблемы возникают при передаче больших объемов данных или при работе с медленными сетевыми соединениями.
  • Поддержка только одного формата: SOAP API ограничен использованием только XML в качестве формата данных. В некоторых случаях это может означать дополнительные накладные расходы на преобразование данных из других форматов в XML и обратно.
  • Один запрос — один ответ: клиент должен отправить запрос и дождаться ответа от сервера, прежде чем продолжить выполнение следующих операций. Это может привести к блокировке клиентского приложения, если запрос долго обрабатывается.
  • Возможность нарушения работы клиента при смене описания веб-сервиса: смена описания потребует дополнительных усилий для согласования изменений между поставщиком и потребителем сервиса.
Софья Пирогова

Софья Пирогова

Главный редактор / Автор статей
Георгий Бабаян

Георгий Бабаян

Основатель и CEO Эльбрус Буткемп