XML-бинарная оптимизированная упаковка
XML-двоичная оптимизированная упаковка (XOP) — это механизм, определенный для сериализации наборов информации XML ( информационных наборов ), содержащих двоичные данные, а также десериализации обратно в набор информации XML.
Преимущества
[ редактировать ]XOP позволяет сериализовать часть двоичных данных информационного набора XML без использования сериализатора XML. Сериализация XML-информационного набора XML основана на тексте, поэтому любые двоичные данные необходимо кодировать с использованием base64 . Использование XOP позволяет избежать этого, извлекая двоичные данные из информационного набора XML, чтобы информационный набор XML не содержал двоичных данных и двоичные данные можно было сериализовать по-другому.
Таким образом, XOP может уменьшить размер сериализации (поскольку кодирование base64 имеет около 33% накладных расходов на размер) и (в зависимости от того, как оно реализовано) может обеспечить эффективность обработки. Такое увеличение размера приводит к необходимости использования дополнительных ресурсов для передачи или хранения данных.
Затраты
[ редактировать ]XOP представляет другой уровень обработки. Следовательно, это вносит дополнительную сложность и накладные расходы на обработку.
Представление пакетов XOP вносит некоторые накладные расходы. Они незначительны, когда двоичные данные велики, но могут быть значительными, если двоичные данные малы.
Операция
[ редактировать ]XOP работает с одним информационным набором XML.
Двоичные части исходного информационного набора XML извлекаются, оставляя «информационный набор XOP» (который по сути представляет собой исходный информационный набор XML, в котором двоичные части заменены внешними ссылками). Ссылки в информационном наборе XOP представлены с помощью элемента «xop:Include». Информационный набор XOP плюс извлеченный контент можно сериализовать в представление, называемое «Пакет XOP». Пакет XOP можно отправить или сохранить.
Чтобы воссоздать информационный набор XML, пакет XOP десериализуется в информационный набор XOP плюс извлеченное содержимое, а затем извлеченное содержимое помещается обратно в информационный набор XML.
XOP-пакеты
[ редактировать ]XOP можно использовать с множеством различных механизмов упаковки. Механизм упаковки определяет, как представляются информационный набор XOP и двоичные фрагменты.
Спецификация XOP определяет, как MIME может использоваться в качестве механизма упаковки. При использовании с MIME информационный набор XOP представлен в виде XML в корневой части MIME, а двоичные фрагменты представлены в других частях MIME. Эти другие части MIME можно сериализовать как двоичные данные, что позволяет избежать необходимости кодировать их в base64, если они остались внутри информационного набора XML.
XOP не требует использования механизма упаковки MIME, поэтому можно использовать другие механизмы упаковки.
Использование в веб-службах SOAP
[ редактировать ]Механизм упаковки MIME является наиболее широко используемым, поскольку XOP обычно используется для представления SOAP сообщений с помощью MTOM .
Например:
...MIME-Version: 1.0 Content-Type: Multipart/Related;boundary=MIME_boundary; ... --MIME_boundary Content-Type: application/xop+xml;...<soap:Envelope> ... <soap:Body> ... <m:photo xmlmime:contentType="image/png"> <xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:http://example.org/me.png"/></m:photo>// binary octets for png--MIME_boundary Content-Type: image/png Content-Transfer-Encoding: binary Content-ID: <http://example.org/me.png>
См. также
[ редактировать ]- MTOM (Механизм оптимизации передачи сообщений)
Ссылки
[ редактировать ]- XML-двоичная оптимизированная упаковка (статья доктора Доббса)