Введение

XML binary Optimized Packaging (XOP) — это механизм, определенный для сериализации XML информационных наборов (инфосетов), содержащих двоичные данные, а также для десериализации обратно в XML информационный набор.

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

XOP позволяет сериализовать двоичную часть XML Infoset без использования XML-сериализатора. Текстовая сериализация XML Infoset требует кодирования любых двоичных данных в формате base64. XOP позволяет избежать этого, извлекая двоичные данные из XML Infoset, чтобы XML Infoset не содержал двоичных данных, и эти данные могли быть сериализованы другим способом. Таким образом, XOP может уменьшить размер сериализованных данных (поскольку кодирование base64 увеличивает размер примерно на 33%) и (в зависимости от реализации) повысить эффективность обработки. Однако это приводит к увеличению объема данных и, соответственно, к дополнительным ресурсам, необходимым для их передачи или хранения.

Расходы

XOP вводит дополнительный уровень обработки. Следовательно, это приводит к увеличению сложности и дополнительным затратам на обработку. Представление пакетов XOP также вносит некоторые накладные расходы. Эти накладные расходы пренебрежимо малы при работе с большими объемами бинарных данных, но могут быть существенными, если бинарные данные небольшие.

Операция

XOP работает с одним XML Infoset. Бинарные части исходного XML-инфосета извлекаются, в результате чего остается "XOP-инфосет" (по сути, это исходный XML-инфосет, в котором бинарные части заменены внешними ссылками). Эти ссылки в XOP-инфосете представлены с помощью элемента "xop:Include". XOP-инфосет вместе с извлеченным содержимым может быть сериализован в представление, называемое "XOP-пакетом". XOP-пакет может быть отправлен или сохранен. Для восстановления исходного XML-инфосета XOP-пакет десериализуется в XOP-инфосет и извлеченное содержимое, после чего извлеченное содержимое восстанавливается в исходном XML-инфосете.

Пакеты XOP

XOP может использоваться с различными механизмами упаковки. Механизм упаковки определяет способ представления набора данных XOP (XOP Infoset) и бинарных фрагментов. Спецификация XOP определяет, как MIME может быть использован в качестве механизма упаковки. При использовании с MIME набор данных XOP (XOP Infoset) представляется в виде XML в корневой части MIME, а бинарные фрагменты – в остальных частях MIME. Эти остальные части MIME могут быть сериализованы как бинарные данные, что позволяет избежать кодирования в Base64, если бы они оставались внутри набора данных XML (XML Infoset). XOP не предписывает обязательное использование механизма упаковки MIME, поэтому могут применяться и другие механизмы упаковки.