Главная » Java, Web, XML » Формат сообщения DIME

0

В мае 2001 года появились первые сообщения о том, что фирмы IBM и Microsoft предложили новый формат DIME (Direct Internet Message Encapsulation) для записи сообщений с дополнениями, не использующий MIME-тип multipart. В июне 2002 года появился черновой вариант спецификации DIME. Его можно посмотреть по адресу http://www.ibm.com/developerworks/ws-dime/.

Сообщение DIME состоит из нескольких частей, называемых записями (record). В начале каждой записи идут несколько полей, отмечающих характеристики записи. Каждая запись определяется тремя основными характеристиками:

?           длиной в байтах своего содержимого (поле data_length);

?        типом, записываемым строкой URI, MIME-типом или как-то по- другому (поле type);

?           необязательным идентификатором — строкой URI (поле ID).

Длина записи ограничена 232 – 1 байтами. Допустимы записи нулевой длины.

Тип записи может быть любым. Длина поля type заносится в поле

а формат поля type, — строка другое — определяется полем typet. если тип записи определяется строкой URI, то значение поля typejt равно 0x01, если тип записи определяется MIME-типом — то 0x02. Значение Охоз записывается, если тип записи неизвестен, при этом значение поля type_length равно нулю. Поле typet равно 0x04, если содержимое записи отсутствует. В таком случае поля TYPE_LENGTH И DATA_LENGTH раВНЫ НуЛЮ.

Идентификатор записи ID может быть любой строкой в виде URI. Его длина, записываемая в поле id_length, всегда выравнивается до величины, кратной 4.

Кроме этих трех характеристик, запись может быть снабжена номером своей версии и несколькими дополнительными полями. Номер версии — это версия спецификации DIME, сейчас это 1. Спецификация не определяет назначение дополнительных полей, но предписывает, чтобы у них были определены тип и длина.

Тип всего сообщения DIME определен как MIME-тип application/dime. Сообщение DIME может входить с этим типом как одна из записей в другое сообщение DIME.

Первая запись DIME-сообщения помечается значением 1 флага MB (Message Begin), последняя запись — значением 1 флага ME (Message End). У сообщения, состоящего всего из одной записи, оба флага равны 1.

Несколько записей могут содержать связанную информацию. Все такие записи должны быть одного и того же типа, у них должен совпадать номер версии. Такие записи помечаются флагом CF (Chunk Flag), у первой и промежуточных записей этот флаг равен 1, у последней записи флаг CF равен о.

Итак, сообщение DIME может содержать какие угодно записи, относящиеся к Web-службам или совершенно другой природы. Правила применения DIME-сообщений к пересылке SOAP-посланий с дополнениями изложены в спецификации        Ее можно посмотреть по адресу

http://www.ibm.com/developerworks/ws-attach.htinl.

Сообщение DIME, содержащее SOAP-послание, состоит из первичного SOAP-послания и нескольких вторичных частей произвольной природы. Это могут быть изображения различных форматов, записи звука в различных кодировках, программные коды, не обязательно определенные какими- нибудь типами MIME.

Первой записью сообщения DIME должно быть первичное SOAP-послание. Значение поля type первой записи для версии SOAP 1.1 должно совпадать с идентификатором пространства имен http://schemas.xmlsoap.org/soap/envelope/, для версии SOAP 1.2 тип первой записи — application/soap+xml. У первой записи может быть необязательный идентификатор, у следующих записей идентификатор должен быть обязательно. Он используется для ссылок из одних записей сообщения на другие записи с помощью атрибута href.

Спецификация DIME описывает только формат упаковки нескольких записей в одно сообщение. Она ничего не говорит о способах пересылки полученного сообщения. Единственное условие — при пересылке сообщения POST-методом протокола HTTP в поле заголовка Content-Type следует указывать ТИП application/dime.

Из этого краткого описания видно, что сообщение DIME определено гораздо точнее, чем            multipart. Поля, записанные в начале каждой записи сообщения DIME, определяют тип и длину каждой записи. Это дает возможность программе, разбирающей сообщение, сделать необходимые проверки, не просматривая все сообщение целиком. Это экономит время и ресурсы компьютера.

С другой стороны, такое точное описание сообщения DIME можно сделать только каким-нибудь инструментальным средством, автоматически создающим сообщение. Не стоит и пытаться написать сообщение DIME вручную.

Литература:

Хабибуллин И. Ш. Разработка Web-служб средствами Java. — СПб.: БХВ-Петербург, 2003. — 400 с: ил.

По теме:

  • Комментарии