SOAP и REST — протоколы веб-сервисов¶
SOAP (Simple Object Access Protocol) и REST (Representational State Transfer) — два основных подхода к построению веб-сервисов и обмену данными между распределёнными системами. SOAP — это протокол обмена структурированными сообщениями на базе XML, разработанный консорциумом W3C; REST — архитектурный стиль, предложенный Рой Филдингом в 2000 году, основанный на принципах работы гипертекста и стандартных методов HTTP. Оба подхода широко применяются в корпоративной разработке, интеграции систем и публичных API, однако существенно различаются по устройству, области применения и требованиям к инфраструктуре.
¶История
¶SOAP
Протокол SOAP появился в конце 1990-х годов. В 1998 году компания Microsoft представила спецификацию SOAP 0.9 как способ вызова удалённых процедур поверх HTTP. В 1999 году вышла версия 1.1, а в 2003 году консорциум W3C утвердил стандарт SOAP 1.2. Протокол изначально задумывался как транспортно-независимый: сообщения SOAP могут передаваться по HTTP, SMTP, TCP и другим протоколам. Ключевую роль в развитии SOAP сыграло появление стандарта WSDL (Web Services Description Language), описывающего интерфейс сервиса в машиночитаемом виде.
¶REST
Термин REST ввёл Рой Филдинг в своей докторской диссертации 2000 года «Architectural Styles and the Design of Network-based Software Architectures». Филдинг описал REST как архитектурный стиль, выведенный из практики работы Всемирной паутины: ресурсы идентифицируются URI, клиент-серверное взаимодействие строится на методах HTTP (GET, POST, PUT, DELETE), состояние сессии не хранится на сервере. Популярность REST резко выросла в середине 2000-х годов благодаря удобству для браузерных и мобильных приложений и отказу от громоздких XML-схем.
¶Устройство и принципы
¶SOAP
Сообщение SOAP имеет строгую XML-структуру: конверт (Envelope), заголовок (Header) и тело (Body), где размещается запрос или ответ. Дополнительно могут использоваться элементы Fault для описания ошибок. Ключевые особенности:
- строгая типизация через XML-схемы (XSD);
- поддержка WS-стандартов: WS-Security, WS-ReliableMessaging, WS-AtomicTransaction;
- контракт сервиса описывается документом WSDL;
- транспортная независимость.
¶REST
REST-сервис представляет набор ресурсов, доступных по уникальным URI. Клиент взаимодействует с ресурсами через стандартные HTTP-методы, а состояние передаётся в форматах JSON, XML или других. Принципы REST по Филдингу:
- Единообразие интерфейса.
- Отделение клиент-сервер.
- Отсутствие состояния (stateless).
- Кэшируемость ответов.
- Слоистая архитектура.
- Код по требованию (опционально).
¶Сравнение
| Критерий | SOAP | REST |
|---|---|---|
| Формат данных | XML | JSON, XML и др. |
| Транспорт | HTTP, SMTP, TCP | HTTP |
| Контракт | WSDL | OpenAPI/Swagger, RAML |
| Безопасность | WS-Security | TLS, OAuth 2.0 |
| Кэширование | Ограниченно | Нативно через HTTP |
| Вес сообщений | Высокий | Низкий |
| Поддержка транзакций | WS-AtomicTransaction | Нет в стандартном виде |
¶Применение
SOAP традиционно используется в корпоративных интеграциях, банковских и государственных системах, где критичны надёжность доставки, аудит и строгие контракты. Примеры — интеграция ERP-систем, обмен с платёжными шлюзами по стандарту ISO 20022.
REST стал стандартом де-факто для публичных API, мобильной разработки и микросервисной архитектуры. Большинство крупных сервисов — от социальных сетей до государственных порталов — предоставляют REST-интерфейсы.
¶Критика
SOAP критикуют за избыточность, сложность отладки и высокую стоимость внедрения. REST, в свою очередь, упрекают в отсутствии строгой типизации и стандартизированных контрактов (хотя спецификация OpenAPI частично закрывает этот пробел), а также в сложности реализации транзакций и надёжной доставки.
¶Источники
- Fielding R. T. Architectural Styles and the Design of Network-based Software Architectures. — University of California, Irvine, 2000.
- W3C SOAP 1.2 Specification.
- Richardson L., Amundsen M., Ruby S. RESTful Web APIs. — O'Reilly, 2013.
- Erlich J. SOAP vs REST: Understanding the Differences. — IBM Developer, 2021.
