В последнее время меня все чаще стала посещать мысль о принципиальной несовместимости XML и эффективных программ
В связи с этим, меня заинтересовала возможность создания документов, полностью дублирующих все возможности XML, но без его проблем с эффективностью разбора. Поискал в гугле — и у меня просто глаза разбежались от обилия реализаций и дискуссий на эту тему
К сожалению, большинство этих обсуждений — это holy war в чистом виде, и полезной информации там не очень много.
Поэтому хотелось бы спросить — а кто уже использовал какие-то реализации сабжа в своих проектах? Какие именно реализации? Какие остались впечатления?
Дарней -> "Binary XML"
Д> В последнее время меня все чаще стала посещать мысль о принципиальной Д> несовместимости XML и эффективных программ Д> В связи с этим, меня заинтересовала возможность создания документов, Д> полностью дублирующих все возможности XML, но без его проблем с Д> эффективностью разбора. Поискал в гугле — и у меня просто глаза Д> разбежались от обилия реализаций и дискуссий на эту тему Д> К сожалению, большинство этих обсуждений — это holy war в чистом Д> виде, и полезной информации там не очень много. Д> Поэтому хотелось бы спросить — а кто уже использовал какие-то Д> реализации сабжа в своих проектах? Какие именно реализации? Какие Д> остались впечатления?
А что для тебя является критерием эффективности? Что не устраивает?
Yury Kopyl aka hrg | Любой служащий должен строго выполнять свои
обязанности. А практически каждый занимается на работе чем хочет. (с)
Паркинсон
Как бинарный способ енкодинга данных, функционально аналогичный XML-ю могу порекомендовать ASN.1
Давным давно устоявшийся и по сю пору плавно эволюционирующий промышленный стандарт ( родился аж в 80х годах прошлого века)
С инструментарием правда ситуацию осветить пожалуй не смогу — в своих проектах используем собственную библиотеку по работе с ASN.1. Библиотечка была создана года два назад по результатам обзора рынка на тот момент — все бесплатное было "ниже плинтуса" да еще с неудобными лицензиями, а платное либо не по карману, либо не устраивало по другим критериям.. Возможно сейчас ситуация изменилась в лучшую сторону ...
J.J.OK -> "Re: Binary XML"
JO> Здравствуйте, Дарней, Вы писали: JO> [...]
JO> Как бинарный способ енкодинга данных, функционально аналогичный JO> XML-ю могу порекомендовать ASN.1 JO> Давным давно устоявшийся и по сю пору плавно эволюционирующий JO> промышленный стандарт ( родился аж в 80х годах прошлого века) JO> С инструментарием правда ситуацию осветить пожалуй не смогу — в JO> своих проектах используем собственную библиотеку по работе с ASN.1. JO> Библиотечка была создана года два назад по результатам обзора рынка JO> на тот момент — все бесплатное было "ниже плинтуса" да еще с JO> неудобными лицензиями, а платное либо не по карману, либо не JO> устраивало по другим критериям.. Возможно сейчас ситуация изменилась JO> в лучшую сторону ...
Хм... у меня вопрос — а какие задачи вы решали? Для чего нужен был именно
бинарный формат?
Yury Kopyl aka hrg | Любой служащий должен строго выполнять свои
обязанности. А практически каждый занимается на работе чем хочет. (с)
Паркинсон
Здравствуйте, hrg, Вы писали:
hrg>J.J.OK -> "Re: Binary XML"
JO>> Здравствуйте, Дарней, Вы писали: JO>> [...]
hrg>Хм... у меня вопрос — а какие задачи вы решали? Для чего нужен был именно hrg>бинарный формат?
Удостоверяющий Центр сделали — тот который X.509-сертификаты выдает и кое что еще. В общем наша поляна — все что вокруг PKI и защищенного документооборота и цифровых подписей. В этой области все (почти ) стандартизировано и все ( почти ) на ASN.1
Здравствуйте, hrg, Вы писали:
hrg>А что для тебя является критерием эффективности? Что не устраивает?
Я вижу в XML как минимум одну принципиальную проблему:
Для того, чтобы найти некоторый элемент в документе, необходимо просмотреть весь текст от начала документа до начала нужного элемента. Это — в том случае, если использовать SAX. В случае с DOM все еще хуже
Иными словами — если программе нужно извлечь из файла конфигурации .NET некоторый параметр, и этот параметр последний в списке — то парсер будет добросовестно просматривать весь список параметров, пока не найдет параметр с нужным именем
Возможность читать XML в notepad'e — это полезная фича... но не такой же ценой.
Здравствуйте, J.J.OK, Вы писали:
JJO>Как бинарный способ енкодинга данных, функционально аналогичный XML-ю могу порекомендовать ASN.1
хотелось бы такой формат, который совместим по всем фичам — иными словами, чтобы можно было заменить парсер XML на парсер этого формата без необходимости менять логику. Например, довольно часто упоминается некий BiM — он используется как часть стандарта MPEG-7.
[...]
Д>Я вижу в XML как минимум одну принципиальную проблему:
Д>Для того, чтобы найти некоторый элемент в документе, необходимо просмотреть весь текст от начала документа до начала нужного элемента. Это — в том случае, если использовать SAX. В случае с DOM все еще хуже Д>Иными словами — если программе нужно извлечь из файла конфигурации .NET некоторый параметр, и этот параметр последний в списке — то парсер будет добросовестно просматривать весь список параметров, пока не найдет параметр с нужным именем
Д>Возможность читать XML в notepad'e — это полезная фича... но не такой же ценой.
ну тогда прямая дорога хранить конфиги в базе хотя если тебя больше заботит ресурсоемкость "просмотра" и компактность енкодинга, а не сам факт того что нужно "просматривать" — то варианты остаются
J.J.OK -> "Re[3]: Binary XML"
hrg>>Хм... у меня вопрос — а какие задачи вы решали? Для чего нужен был hrg>>именно hrg>>бинарный формат?
JO> Удостоверяющий Центр сделали — тот который X.509-сертификаты выдает JO> и кое что еще. В общем наша поляна — все что вокруг PKI и JO> защищенного документооборота и цифровых подписей. В этой области все JO> (почти ) стандартизировано и все ( почти ) на ASN.1
Понятно. Глупый вопрос — а просто сжатый zip-ом xml не прокатил был?
Дарней -> "Re[2]: Binary XML"
hrg>>А что для тебя является критерием эффективности? Что не устраивает?
Д> Я вижу в XML как минимум одну принципиальную проблему:
Д> Для того, чтобы найти некоторый элемент в документе, необходимо Д> просмотреть весь текст от начала документа до начала нужного Д> элемента. Это — в том случае, если использовать SAX. В случае с DOM Д> все еще хуже
Хм... а насколько часто происходят эти поиски? Наколько велик документ?
Yury Kopyl aka hrg | Любой служащий должен строго выполнять свои
обязанности. А практически каждый занимается на работе чем хочет. (с)
Паркинсон
Здравствуйте, hrg, Вы писали:
hrg>Хм... а насколько часто происходят эти поиски? Наколько велик документ?
я говорю не о каком-то конкретном случае, а "в общем"
В случае XML нет например эффективного способа реализовать DOM через fly-weight. Поэтому остаются только два варианта — кэшировать все данные из документа в памяти (пожирает ресурсы), или каждый раз искать данные в документе (очень медленно).
Здравствуйте, Дарней, Вы писали:
AVK>>Здесь МС пытается что то на эту тему сообразить, но что из этого получится
Д>А почему там написано, что это obsolete?
А потому что у них семь пятниц на неделе. Новые классы и методы, объявленные obsolete последнее время стали попадаться прямо таки массово. С одной стороны непонятно что в итоге будет, с другой стороны вроде как видно что работат по проектированию ведется серьезная, а не как получится. ИМХО с большой долей вероятности бинарная реализация XmlWriter будет, но вот какая
когда дело доходить до бинарщины — значит важен размер и скорость
значит тебе ни один формат не подойдет, потому что он будет иметь некие излишества для поддержки общности
JJO>Как бинарный способ енкодинга данных, функционально аналогичный XML-ю могу порекомендовать ASN.1 JJO>Давным давно устоявшийся и по сю пору плавно эволюционирующий промышленный стандарт ( родился аж в 80х годах прошлого века) JJO>С инструментарием правда ситуацию осветить пожалуй не смогу — в своих проектах используем собственную библиотеку по работе с ASN.1. Библиотечка была создана года два назад по результатам обзора рынка на тот момент — все бесплатное было "ниже плинтуса" да еще с неудобными лицензиями, а платное либо не по карману, либо не устраивало по другим критериям.. Возможно сейчас ситуация изменилась в лучшую сторону ...
Библиотека работы с ASN.1 (по-моему, достаточно богатая) есть в Erlang.
По поводу альтернативы XML кое-что любопытное есть здесь. (Кстати, там есть интересные идеи и помимо альтернативного формата)
Здравствуйте, Banch, Вы писали:
B>когда дело доходить до бинарщины — значит важен размер и скорость B>значит тебе ни один формат не подойдет, потому что он будет иметь некие излишества для поддержки общности
Скорость не важна если позиционировать XML как формат конфиг-файлов 2-3 килобайтных, редактируемых в notepad.
Но преобразовывать объектную модель в текстовый формат, для передачи по сети, и после передачи обратно в объектную модель — это уже очень сомнитльное удовольствие.
Здравствуйте, Дарней, Вы писали:
Д>Я вижу в XML как минимум одну принципиальную проблему:
Д>Для того, чтобы найти некоторый элемент в документе, необходимо просмотреть весь текст от начала документа до начала нужного элемента. Это — в том случае, если использовать SAX. В случае с DOM все еще хуже Д>Иными словами — если программе нужно извлечь из файла конфигурации .NET некоторый параметр, и этот параметр последний в списке — то парсер будет добросовестно просматривать весь список параметров, пока не найдет параметр с нужным именем
А чем поможет бинарный формат? Его ведь так же необходимо прочитать.
В данном случае помогут только индексы, их есть и у XML.
Д>Возможность читать XML в notepad'e — это полезная фича... но не такой же ценой.