Ответ
SOAP (Simple Object Access Protocol) — это протокол на основе XML для обмена структурированными сообщениями в распределённых системах, обычно поверх HTTP. Это основа многих веб-сервисов (WS) и часть набора стандартов WS-*.
Структура SOAP-сообщения (XML):
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Header>
<!-- Опциональные метаданные (безопасность, транзакции) -->
</soap:Header>
<soap:Body>
<!-- Основное содержимое запроса или ответа -->
<m:GetUserRequest xmlns:m="http://example.com/ws">
<m:UserId>12345</m:UserId>
</m:GetUserRequest>
</soap:Body>
</soap:Envelope>
Характеристики и особенности:
- Формальность и стандартизация: Строгая спецификация (W3C), встроенная поддержка ошибок через
Fault-элемент. - Независимость от транспорта: Может работать поверх HTTP, SMTP, JMS и др.
- Расширяемость (WS-*): Поддерживает комплексные стандарты для безопасности (
WS-Security), транзакций (WS-Transaction), надежной доставки и т.д. - Контрактный подход: Взаимодействие определяется WSDL (Web Services Description Language)-файлом, который описывает endpoint, операции и структуру данных (XML Schema).
| Сравнение с REST: | Критерий | SOAP | REST (HTTP/JSON) |
|---|---|---|---|
| Формат | XML | JSON, XML, текст и др. | |
| Подход | Протокол (операции) | Архитектурный стиль (ресурсы) | |
| Стандарты | Строгие (WS-*, WSDL) | Использует возможности HTTP (методы, коды) | |
| Кэширование | Нет | Нативное (HTTP) | |
| Использование | Корпоративные системы, финансы, legacy-интеграции | Публичные API, мобильные приложения, микросервисы |
Когда выбирать SOAP? Когда требуется гарантированная безопасность, транзакции, формальный контракт (WSDL) или интеграция со старыми системами, уже использующими веб-сервисы.