Открыть сервис

SOAP with Attachments

SOAP with Attachments (SwA) — это расширение протокола SOAP, предназначенное для передачи в составе SOAP-сообщений вложений произвольного формата (бинарных данных, таких как изображения, документы, аудио- и видеофайлы), которые не кодируются в основной XML-структуре сообщения. SwA определяется спецификацией W3C и использует стандарт MIME (Multipurpose Internet Mail Extensions) для упаковки нескольких частей в одно сообщение, где одна часть содержит SOAP-конверт, а остальные — вложения. Этот подход позволяет эффективно передавать большие объёмы данных, не увеличивая размер XML-кода и не требуя их преобразования в текстовый формат (например, Base64).

История и предпосылки

Протокол SOAP (Simple Object Access Protocol) изначально был разработан для обмена структурированными данными в распределённых вычислительных средах, в первую очередь в веб-сервисах. Его основой является XML-конверт, который содержит заголовки и тело сообщения. Однако стандартный SOAP 1.1 (2000 год) и последующие версии (SOAP 1.2, 2003 год) не предусматривали прямой передачи бинарных данных. Для включения таких данных в тело сообщения требовалось кодирование в Base64, что увеличивало размер сообщения примерно на 33% и затрудняло обработку на стороне получателя.

В начале 2000-х годов, с ростом популярности веб-сервисов для обмена документами, изображениями и другими мультимедийными файлами, возникла необходимость в стандартизированном способе передачи вложений. В 2002 году консорциум W3C опубликовал первую рабочую версию спецификации «SOAP with Attachments», которая была основана на более ранних предложениях, в частности от компании Microsoft (в рамках технологии .NET Remoting). В 2004 году спецификация была принята как рекомендация W3C (W3C Note). Параллельно развивались альтернативные подходы, такие как DIME (Direct Internet Message Encapsulation) от Microsoft и более поздний MTOM (Message Transmission Optimization Mechanism), который стал частью стандарта SOAP 1.2 и в значительной степени вытеснил SwA.

Архитектура и принцип работы

SOAP with Attachments использует модель MIME для инкапсуляции множества частей в одном сообщении. Сообщение SwA представляет собой составной MIME-документ, где:

Ссылка на вложение из SOAP-сообщения осуществляется с помощью специального атрибута href в элементе Body или Header, где указывается URI в формате cid:идентификатор (Content-ID). Например: <attachment href="cid:image123@example.com"/>. Таким образом, получатель может извлечь нужное вложение по его идентификатору, не разбирая весь XML.

Структура MIME-сообщения

Типичное MIME-сообщение SwA имеет следующий вид (упрощённо):

``` MIME-Version: 1.0 Content-Type: Multipart/Related; boundary="MIME_boundary"; type="text/xml"

--MIME_boundary Content-Type: text/xml; charset=UTF-8 Content-Transfer-Encoding: 8bit

<?xml version="1.0"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="..."> <SOAP-ENV:Body> <myMethod> <attachment href="cid:image123@example.com"/> </myMethod> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

--MIME_boundary Content-Type: image/jpeg Content-Transfer-Encoding: binary Content-ID: image123@example.com

[бинарные данные JPEG-изображения]

--MIME_boundary-- ```

Отличия от других методов передачи вложений

MTOM (Message Transmission Optimization Mechanism)

MTOM — более современный стандарт (рекомендация W3C с 2005 года), который является частью SOAP 1.2. В отличие от SwA, MTOM не требует отдельной MIME-структуры для вложений. Вместо этого он использует механизм оптимизации передачи: бинарные данные, закодированные в Base64 внутри XML, автоматически заменяются на MIME-части при передаче по сети. На стороне получателя они снова восстанавливаются в Base64. Это делает MTOM прозрачным для разработчика: код веб-сервиса работает с бинарными данными как с обычными строками Base64, а транспортный уровень выполняет оптимизацию.

Основные различия:

DIME (Direct Internet Message Encapsulation)

DIME — проприетарный протокол от Microsoft, использовавшийся в ранних версиях .NET Remoting. Он также инкапсулирует несколько частей, но использует собственный формат записи, несовместимый с MIME. DIME не получил широкого распространения и был вытеснен SwA и MTOM.

Применение

SOAP with Attachments применялся в следующих сценариях:

Ограничения и критика

Несмотря на свою полезность, SwA имеет ряд недостатков:

Статус и современное состояние

На сегодняшний день SOAP with Attachments считается устаревшей технологией. Основные стандарты веб-сервисов (WS-I Basic Profile 1.1 и выше) рекомендуют использовать MTOM для передачи бинарных данных. Большинство современных платформ (Java EE, .NET Core, Python Zeep) поддерживают MTOM «из коробки», в то время как поддержка SwA сокращается. Тем не менее, в унаследованных (legacy) системах, разработанных в начале 2000-х годов, SwA может всё ещё использоваться. Миграция с SwA на MTOM обычно требует изменений в контрактах веб-сервисов (WSDL) и в клиентском коде.

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →