Что такое SOAP протокол?

«Что такое SOAP протокол?» — вопрос из категории Сети, который задают на 22% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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) или интеграция со старыми системами, уже использующими веб-сервисы.