XML - двоичный Оптимизированная Упаковка (XOP) представляет собой механизм , определенный для сериализации в XML - наборов информации ( инфо - наборов ) , которые содержат двоичные данные, а также десериализации обратно в XML Information Set.
Преимущества [ править ]
XOP позволяет сериализовать часть двоичных данных XML Infoset без прохождения через сериализатор 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 Infoset.
XOP не требует использования механизма упаковки MIME, поэтому можно использовать другие механизмы упаковки.
Использование в веб-службах SOAP [ править ]
Механизм упаковки MIME является наиболее широко используемым, поскольку XOP обычно используется для представления сообщений SOAP с помощью MTOM .
Например:
...MIME-версия: 1.0Content-Type: Multipart / Related ; граница = 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>// двоичные октеты для png--MIME_boundary Content-Type: image / png Content-Transfer-Encoding: двоичный Content-ID: <http: // example.org / me.png >
См. Также [ править ]
- MTOM (механизм оптимизации передачи сообщений)
Ссылки [ править ]
- XML-Binary Optimized Packaging (статья доктора Доббса)
Внешние ссылки [ править ]
- Рекомендация W3C по оптимизированной упаковке бинарных файлов XML W3C