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

MTOM

MTOM (Message Transmission Optimization Mechanism) — это стандартный метод оптимизации передачи двоичных данных в сообщениях протокола SOAP (Simple Object Access Protocol), определённый спецификацией W3C. MTOM позволяет передавать большие объёмы двоичных данных (изображения, документы, аудиофайлы) в составе SOAP-сообщений без их кодирования в текстовый формат Base64, что значительно снижает накладные расходы на размер сообщения и повышает производительность.

История и стандартизация

MTOM был разработан в рамках деятельности рабочей группы W3C (World Wide Web Consortium) для решения проблемы передачи двоичных данных в веб-сервисах. До появления MTOM единственным способом включения двоичных данных в SOAP-сообщения было их кодирование в Base64, что увеличивало размер данных примерно на 33% и требовало дополнительных вычислительных затрат на кодирование и декодирование.

Спецификация MTOM была опубликована в качестве рекомендации W3C 25 января 2005 года. Она базируется на технологии XML-binary Optimized Packaging (XOP), которая также является рекомендацией W3C. MTOM и XOP тесно связаны: XOP определяет формат упаковки двоичных данных, а MTOM — механизм их передачи в контексте SOAP.

Принцип работы

MTOM использует модель передачи данных, основанную на многокомпонентных MIME-сообщениях (Multipurpose Internet Mail Extensions). Вместо того чтобы включать двоичные данные непосредственно в XML-документ в виде текста Base64, MTOM заменяет их специальными ссылками (XOP Include), указывающими на отдельные MIME-части сообщения.

Процесс передачи данных с использованием MTOM включает следующие этапы:

  1. Формирование SOAP-сообщения: Создаётся стандартное SOAP-сообщение, в котором двоичные данные представлены в виде элементов с типом xs:base64Binary.
  2. Оптимизация: При обработке сообщения MTOM-процессор извлекает двоичные данные из XML-структуры и помещает их в отдельные MIME-части многокомпонентного сообщения.
  3. Создание ссылок: В XML-документе на месте двоичных данных размещаются элементы <xop:Include> с атрибутом href, указывающим на Content-ID соответствующей MIME-части.
  4. Передача: Многокомпонентное MIME-сообщение отправляется по протоколу HTTP (или другому транспортному протоколу) с использованием метода POST.
  5. Восстановление: На стороне получателя MTOM-процессор восстанавливает исходное SOAP-сообщение, заменяя ссылки на MIME-части обратно на двоичные данные.

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

MTOM-сообщение представляет собой многокомпонентное MIME-сообщение, состоящее из нескольких частей:

  • Основная часть (root part): Содержит XML-документ SOAP с элементами <xop:Include> вместо двоичных данных. Эта часть имеет MIME-тип application/xop+xml.
  • Дополнительные части: Каждая содержит один двоичный объект данных. Эти части имеют MIME-тип, соответствующий типу передаваемых данных (например, image/jpeg, application/pdf), и уникальный Content-ID.

Пример структуры MTOM-сообщения:

``` Content-Type: multipart/related; boundary="MIME_boundary"; type="application/xop+xml"; start="root@example.com"

--MIME_boundary Content-Type: application/xop+xml; charset=UTF-8; type="text/xml" Content-Transfer-Encoding: 8bit Content-ID: root@example.com

<?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:xop="http://www.w3.org/2004/08/xop/include">; <soap:Body> <uploadFile> <fileName>document.pdf</fileName> <fileData> <xop:Include href="cid:file@example.com"/> </fileData> </uploadFile> </soap:Body> </soap:Envelope>

--MIME_boundary Content-Type: application/pdf Content-Transfer-Encoding: binary Content-ID: file@example.com

... двоичные данные PDF-файла ...

--MIME_boundary-- ```

Преимущества и недостатки

Преимущества

  1. Снижение размера сообщения: Двоичные данные передаются в исходном формате, без дополнительного кодирования, что уменьшает размер сообщения примерно на 33% по сравнению с Base64.
  2. Экономия вычислительных ресурсов: Отсутствие необходимости кодирования и декодирования двоичных данных снижает нагрузку на процессор как на стороне отправителя, так и на стороне получателя.
  3. Совместимость: MTOM полностью совместим с существующими SOAP-инфраструктурами. Веб-сервисы, не поддерживающие MTOM, могут обрабатывать сообщения как обычные SOAP-сообщения с данными в формате Base64.
  4. Потоковая передача: MTOM поддерживает потоковую передачу больших объёмов данных, что позволяет обрабатывать файлы, размер которых превышает доступную память.

Недостатки

  1. Сложность реализации: Требуется поддержка MTOM на уровне веб-сервера и клиента, что усложняет разработку и отладку.
  2. Дополнительные накладные расходы: Для небольших объёмов данных (менее нескольких килобайт) накладные расходы на создание многокомпонентного MIME-сообщения могут превышать выгоду от отказа от Base64.
  3. Ограниченная поддержка: Не все веб-сервисы и клиентские библиотеки поддерживают MTOM, особенно в устаревших системах.

Применение

MTOM широко используется в веб-сервисах, где требуется передача больших объёмов двоичных данных. Основные области применения включают:

  • Системы электронного документооборота: Передача PDF-документов, изображений, подписанных файлов.
  • Медицинские информационные системы: Обмен рентгеновскими снимками, результатами МРТ и другими медицинскими изображениями в формате DICOM.
  • Мультимедийные сервисы: Загрузка и скачивание аудио- и видеофайлов через веб-сервисы.
  • Финансовые системы: Передача отсканированных копий документов, чеков и других финансовых записей.

Поддержка в программном обеспечении

MTOM поддерживается большинством современных платформ для разработки веб-сервисов:

  • Java: Apache CXF, Axis2, Spring Web Services, JAX-WS RI.
  • .NET: Windows Communication Foundation (WCF) с использованием привязки BasicHttpBinding или WSHttpBinding с включённым MTOM.
  • Python: Библиотеки Zeep, Spyne.
  • PHP: Расширение SOAP с включённой опцией MTOM.
  • Ruby: Библиотека Savon.

В России MTOM используется в государственных информационных системах, в частности, в системе межведомственного электронного взаимодействия (СМЭВ) для передачи файлов большого размера.

Альтернативы

Помимо MTOM, существуют и другие методы оптимизации передачи двоичных данных в веб-сервисах:

  • Base64: Простейший метод, не требующий дополнительной поддержки, но увеличивающий размер данных на 33%.
  • SOAP with Attachments (SwA): Более ранний стандарт, использующий MIME-вложения, но не поддерживающий ссылки на двоичные данные из XML.
  • DIME (Direct Internet Message Encapsulation): Устаревший протокол, разработанный Microsoft, который не получил широкого распространения.
  • RESTful веб-сервисы: Использование HTTP напрямую для передачи двоичных данных (например, через multipart/form-data) без применения SOAP.

Источники

  1. W3C Recommendation: "SOAP Message Transmission Optimization Mechanism" (2005).
  2. W3C Recommendation: "XML-binary Optimized Packaging" (2005).
  3. "Web Services: Principles and Technology" — Michael P. Papazoglou (2007).
  4. "Java Web Services: Up and Running" — Martin Kalin (2009).
  5. "SOAP Web Services" — Snell, Tidwell, Kulchenko (2002).
  6. Документация Apache CXF: "MTOM and XOP Support".
  7. Документация Microsoft WCF: "MTOM Encoding".

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

На главную BFOmetr →