Адрес: 142704, г. Москва, пос. Мосрентген, Институтский проезд, д. 2

Сериализация экземпляров классов в бинарный поток

XML предназначен для обмена информацией между программами. Представляет собой некий формат для хранения структурированных данных в текстовом виде. На его основе создаются более специализированные языки разметки. .

Как и в большинстве сфер IT технологий, XML активно внедрился и в область систем безопасности. Главной причиной этого является то, что использование XML решает проблемы интеграции подсистем на уровне ПО, что достигается за счет наличия открытого единого стандарта и множества стандартов его сопровождающих (SOAP , XML Schema, и т д), наличия открытых средств обработки XML (SAX, DOM парсеры) и независимости XML от платформ разработки. Однако существует ряд недостатков при использовании XML: размер XML документа существенно больше бинарного представления тех же данных, возрастает стоимость хранения, обработки и передачи данных, XML не содержит встроенной в язык поддержки типов данных и т. д. Для устранения недостатков XML консорциумом W3C был разработан стандарт EXI(Efficient XML Interchange), стандарт бинарного представления XML документов.

Автор данной статьи предлагает, на основе стандарта EXI, способ динамической генерации сериализаторов для заданного класса данных. В текущей реализации EXI сериализация класса данных возможно только через текстовое представление экземпляра класса в виде XML, т е по пути 1 – 2 – 3 (рис. 1).

Данный способ не является оптимальным, необходимо проводить сериализацию напрямую из 1 в 3, таким образом удастся избежать избыточности текстового представления XML.

Структурная схема Класс данных — XML — EXI
Рис. 1 Структурная схема Класс данных — XML — EXI


На рис. 2 изображена диаграмма последовательности сериализации экземпляра класса данных. Отличительной особенностью данной реализации является заблаговременное создание по заданной структуре (mapping) класса его сериализатора. Этот подход позволяет сократить время, требуемое на генерацию бинарного потока.

Диаграмма последовательности сериализации экземпляра класса данных
Рис. 2 Диаграмма последовательности сериализации экземпляра класса данных


SerCreator динамически генерирует сериализатор (ConcretSerA) для заданного типа (Type t), после чего с помощью модифицированной реализации EXI (MyExiLib) получаем бинарный поток данных.

Используя данный подход, мы получаем удобный и быстрый способ генерации бинарного стандарта, который, несомненно, улучшит производительность работы программно-аппаратных комплексов и уменьшит трафик, передаваемый по сети. Кроме того полученный бинарный стандарт обладает всеми преимуществами XML и классических бинарных стандартов одновременно, при этом предложенная реализация EXI, очевидно будет работать быстрее, чем имеющаяся на данный момент.

УДК 621.397
Автор: Д.Л. Филиппов

Московский физико-технический институт (государственный университет)
ЗАО «Компания Безопасность»
Читайте также: