Введение
Формат сериализации данных Fast Infoset (или FI) - это международный стандарт, который определяет двоичный формат кодирования для набора информации XML (XML Infoset) в качестве альтернативы формату документа XML. Он направлен на обеспечение более эффективной сериализации, чем основанный на тексте формат XML. FI - это эффективное беспотерйное сжатие, аналогичное gzip, для XML, за исключением того, что, хотя первоначальная форматизация потеряна, никакая информация не теряется при преобразовании из XML в FI и обратно в XML. В то время как цель сжатия заключается в уменьшении физического размера данных, FI направлена на оптимизацию как размера документа, так и производительности обработки. Спецификация Fast Infoset определена как ITU T, так и органами по стандартизации ISO/IEC. FI официально определяется в ITU T Rec. X.891 и ISO/IEC 24824 1, и называется Fast Infoset. Стандарт был опубликован ITU T 14 мая 2005 года и ISO 4 мая 2007 года. Стандартный документ Fast Infoset можно скачать на сайте МСЭ. Хотя в документе не утверждается, что интеллектуальная собственность (ИС) ограничивает реализацию или использование, на странице ii предупреждается, что она получила уведомления, и предмет может не быть полностью свободен от утверждений ИС. Распространенное заблуждение заключается в том, что FI требует поддержки инструмента ASN.1. Хотя в официальной спецификации используется обозначение ASN.1, стандарт включает в себя обозначение управления кодированием (ECN), а инструменты ASN.1 не требуются в реализации. Альтернатива FI - FleXPath.
Fast Infoset (or FI) is an international standard that specifies a binary encoding format for the XML Information Set (XML Infoset) as an alternative to the XML document format. It aims to provide more efficient serialization than the text based XML format. FI is effectively a lossless compression, analogous to gzip, for XML, except that while the original formatting is lost, no information is lost in the conversion from XML to FI, and back to XML. While the purpose of compression is to reduce physical data size, FI aims to optimize both document size and processing performance. The Fast Infoset specification is defined by both the ITU T and the ISO/IEC standards bodies. FI is officially defined in ITU T Rec. X.891 and ISO/IEC 24824 1, and entitled Fast Infoset. The standard was published by ITU T on May 14, 2005, and by ISO on May 4, 2007. The Fast Infoset standard document can be downloaded from the ITU website. Though the document does not assert intellectual property (IP) restrictions on implementation or use, page ii warns that it has received notices and the subject may not be completely free of IP assertions. A common misconception is that FI requires ASN.1 tool support. Although the formal specification uses ASN.1 notation, the standard includes Encoding Control Notation (ECN) and ASN.1 tools are not required by implementations. An alternative to FI is FleXPath.
Структура
Основной формат файла - ASN.1 с блоками тега/длины/значения. Текстовые значения атрибутов и элементов хранятся с префиксами длины, а не с окончательными делимитаторами, а сегменты данных не требуют эскаппера для специальных символов. Эквивалент конечных тегов ("терминаторы") необходим только в конце списка дочерних элементов. Бинарные данные передаются в собственном формате и не требуют конвертации в формат передачи, такой как base64. Fast Infoset - это формат более высокого уровня, построенный на формах и обозначении ASN.1. Названия элементов и атрибутов хранятся в потоке октетов, в отличие от традиционных схем кодирования ASN.1. В результате обычный XML-файл может быть восстановлен из бинарного потока без ссылки на XML-схему, и XML-схему не нужно выражать в виде определения ASN.1. (ASN.1 "Тэг" - это просто названия типов, например, строки, целые числа или сложные типы.) ASN.1 вместе с ECN используется для определения формата файла. Для большинства строк создается таблица индексов, которая включает в себя имена элементов и атрибутов, а также их значения. Это означает, что текст повторяющихся тегов и значений появляется только один раз в документе.
Референтная реализация
Java-исполнение спецификации FI доступно в рамках реализации JAXB Eclipse. Библиотека является открытым исходным кодом и распространяется на условиях лицензии Apache 2.0. Несколько проектов используют эту реализацию, включая эталонную реализацию для JAX WS, используемую в Eclipse Metro. Реализация QtitanFastInfoset для C++ доступна под коммерческой лицензией в качестве компонента для Qt framework.
Выступление
Поскольку быстрые инфосеты сжимаются как часть процесса генерации XML, они намного быстрее, чем с использованием алгоритмов сжатия стиля Zip в потоке XML, хотя вывод не так хорошо сжат. Производительность анализа типа SAX в Fast Infoset также намного быстрее, чем производительность анализа XML 1.0, даже без компрессии в стиле Zip. Типичное увеличение скорости анализа, наблюдаемое для эталонной реализации Java, составляет фактор 10 по сравнению с Java Xerces и фактор 4 по сравнению с драйвером Piccolo (один из самых быстрых анализаторов XML на основе Java).
Типичные применения
Портативные устройства Мобильные устройства обычно имеют низкие соединения данных с низкой пропускной способностью и более медленные процессоры. Fast Infoset использует меньшую пропускную способность, чем XML, и его обработка быстрее, что делает его лучшим выбором. Хранение больших объемов данных При хранении XML в файле или базе данных объем данных, производимых системой, часто может превышать разумные пределы, с рядом недостатков: время доступа увеличивается по мере считывания большего количества данных, нагрузка на процессор увеличивается, поскольку обработка XML-данных требует больше энергии, а затраты на хранение растут. Сохранение XML-данных в формате Fast Infoset может сократить объем данных на 80 процентов. Передача XML через Интернет Когда приложение передает данные через Интернет, пропускная способность сети может быть основным узким местом, серьезно ухудшая производительность клиентских приложений и ограничивая мощность сервера для обработки запросов. Сокращение объема данных, передаваемых через Интернет, сокращает время, необходимое для отправки или получения сообщения, и увеличивает количество транзакций, которые сервер может обрабатывать в час.