Расширенные возможности протокола SOAP и случаи, когда он нужен
Расширенные возможности протокола SOAP и случаи, когда он нужен
Рассказываем, в каких случаях поможет протокол обмена сообщениями SOAP, а в каких лучше использовать REST, и показываем пример работы SOAP в Python.
SOAP (Simple Object Access Protocol) — это протокол обмена сообщениями в виде XML. Он помогает доставлять системные сообщения от одного сервера к другому. SOAP может работать через ряд распространённых протоколов, таких как HTTP, SMTP, TCP или UDP. Его используют в трёх случаях:
1. Нужны безопасность и надёжность — когда приложение требует сложных механизмов аутентификации, шифрования и конфиденциальности. К примеру, SOAP используют в банковских приложениях для безопасных транзакций и передачи данных от клиентов.
2. Нужна интеграция с существующими системами — если нужно интегрироваться с устаревшими системами или корпоративными приложениями, которые уже используют SOAP.
3. Нужна поддержка сложных операций — если нужны многоуровневая обработка операций и транзакций. К примеру, протокол применяют в CRM и других программах для бизнеса.
SOAP чаще всего используют в крупных учреждениях, где нужно обеспечить безопасный и надёжный обмен сообщениями между сайтами и приложениями. Например, протокол SOAP применяют банки, брокеры, страховые компании, госучреждения, сервисы по продаже и бронированию билетов и т. д.
Использовать протокол SOAP учат на курсе «Системный аналитик». Студенты за 9 месяцев осваивают рабочие инструменты системных аналитиков, языки программирования, выполняют проекты и практические работы. По окончании обучения студенты получают диплом о профессиональной подготовке и сертификат.
1. Интегрироваться с другими платформами. Для форматирования сообщений SOAP API использует XML — это текстовый формат, он легко читается и может быть обработан практически любым языком программирования, который поддерживает текстовые форматы: Java, C#, Python, PHP и другими.
2. Поддерживать различные протоколы передачи. SOAP может работать через такие протоколы, как HTTP, SMTP и FTP. Это позволяет интегрировать веб-сервисы в существующие системы без изменений в инфраструктуре.
3. Добавлять дополнительные функции. SOAP позволяет добавлять дополнительные функции через расширения, например WS-Security (защита данных) и WS-ReliableMessaging (надёжная доставка сообщений). Это помогает адаптировать веб-сервисы под специфические требования бизнеса.
4. Определять ошибки. SOAP определяет стандартный способ обработки ошибок. Когда происходит ошибка, сервер может вернуть SOAP Fault, который содержит информацию о проблеме, — это помогает понять природу проблемы и способы её решения.
5. Поддерживать асинхронные вызовы. Протокол позволяет клиентам продолжать выполнение других задач, пока ожидается ответ от сервера.
SOAP предлагает несколько расширенных возможностей. Вот некоторые из них:
● WS-Security — поддерживает расширенные механизмы безопасности. Его используют для подтверждения личности пользователей и систем, для защиты данных при передаче и обеспечения их подлинности.
● WS-ReliableMessaging — обеспечивает доставку сообщений. Он гарантирует, что сообщения будут доставлены точно и в правильном порядке даже при сетевых сбоях или временных отключениях. Например, протокол применяют при отправке запросов на переводы между банками или в системах обработки медицинских данных, чтобы информация о пациентах доставлялась без потерь и в правильном порядке.
● WS-Addressing — позволяет указывать адреса сообщений в веб-сервисах и обрабатывать асинхронные вызовы. Благодаря этому протоколу отправители и получатели сообщений смогут определять, как и куда должны направляться сообщения.
Например, протокол применяют при отправке заказа от клиента к серверу, когда нужно указать, куда отправить уведомление о статусе заказа — например, на электронную почту или личный кабинет пользователя.
● WS-Coordination — обеспечивает координацию между несколькими веб-сервисами, позволяет им работать совместно в рамках одной транзакции или процесса.
Как и SOAP, REST придерживается формата «запрос-ответ», но есть и отличия.
Рассмотрим пример использования SOAP в Python. Чтобы не писать вручную полный XML-код для выполнения запросов API и не анализировать XML-код ответа, установим библиотеку zeep — модуль, который написан на Python, — чтобы упростить работу с XML.
В Python есть библиотеки для разных задач. Например, с помощью библиотеки pytz можно работать с часовыми поясами, а с помощью spyne — написать и вызвать веб-сервис SOAP
Теперь запустите клиент SOAP на основе конечной точки SOAP и вызовите службу с помощью функции getuser с параметром, например 1, 2, 3.
Getuser() — это функция Getpass в Python, которая возвращает имя пользователя в системе. Getuser() используют, например, при разработке приложений с предусмотренной аутентификацией или персонализацией
Сообщения SOAP состоят максимум из четырёх блоков:
● Soap:Envelope — механизм идентификации XML как SOAP;
● soap:Header — заголовок, механизм добавления функций в сообщения SOAP;
● soap:Body — тело сообщения SOAP.
Ещё можно прописать soap:Fault — это механизм, который показывает ошибки, когда вызов SOAP API не удаётся завершить. Например, он может показать неточное форматирование SOAP, ошибку обработки на сервере и несоответствие типов данных.
Вот пример, как может выглядеть структура вызова SOAP и ответ на него:
Вызовы SOAP API можно выполнять с помощью обычного HTTP-запроса. Посмотрим, как будет выглядеть тот же вызов из примера выше, с использованием библиотеки запросов Requests для Python — она позволяет работать с HTTP-запросами любого уровня сложности.
В этом примере response.content будет включать необработанный XML-ответ, который нужно проанализировать, чтобы определить имя пользователя и другие данные, возвращаемые SOAP API
Совет эксперта
Читать также: