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 и обратно.
- Один запрос — один ответ: клиент должен отправить запрос и дождаться ответа от сервера, прежде чем продолжить выполнение следующих операций. Это может привести к блокировке клиентского приложения, если запрос долго обрабатывается.
- Возможность нарушения работы клиента при смене описания веб-сервиса: смена описания потребует дополнительных усилий для согласования изменений между поставщиком и потребителем сервиса.