Вы меня не поняли. XML в данном случае контейнер, ASN.1 язык описания содержимого этого контейнера, DTD, XSD, RELAX NG — тоже. Если языки описывают одно и тоже, можно сделать вывод, что они эквиваленты. Этого уже достаточно, чтобы считать сравнение DTD, XSD, RELAX NG vs ASN.1 корректным, а XML vs ASN.1 — нет.
Бонус: из всего этого следует, что схемы XML теоретически возможно перевести на ASN.1, тогда эти ваши Структуры Данных можно генерировать также, как и прочий эйэсенный хлам.
На сколько я понял, специфицируются только форматы сообщений, а сами потоковые бинарные данные нет. Есть что-нибудь такое чтобы прям по полочкам от самого абстрактного уровня и до битов? Или ASN.1 для этого не применяется?
Я пытаюсь выяснить у носителя языка возможно ли на нём описывать\кодировать данные изначально чуждые языку или этот язык вещь в себе. Например, возможно ли описать существующий бинарный формат, и после бинарного кодирования получить файл совместимый с приложениями предназначенными для работы с такими файлами.
Это всё не из праздного любопытства, у нас есть проект-долгожитель, который производит бинарные данные, начинался он на Дельфи ещё при царе Горохе, потом С++, потом понадобилось на сервере с помощью PHP некоторую часть данных обрабатывать, сейчас стало понятно, что было бы не плохо иметь доступ к этим данным из .NET. В итоге, имеется куча маленьких велосипедов для доступа к этим данным и один большой на C++. Если бы можно было на чём-то описать прародителя всех велосипедов и генерировать из него для каждого языка\платформы свою проекцию, сохранив при этом бинарную совместимость — это была бы сказка.
ASN.1 не может генерировать произвольный бинарный формат. Бинарник, полученный из описания в ASN.1 имеет чёткую структуру, и описать уже существующий бинарный протокол, используя ASN.1 не получится.
В Wireshark есть поддержка MPEG Audio, и лежит файл с описанием формата в ASN.1. Но сам поток там не описывается, да и не применяется asn.1 для кодирования потоковых данных.
Флеймить по этой теме не имеет смысла, так как ниши у XML и ASN.1 разные, хотя и пересекаются в некоторой области, отличной от нуля. Но всё равно, в большинстве случаев надо использовать здравый смысл и выбрать тот инструмент, который лучше других подходит для решения проблемы. Фанатично пытаться повсюду использовать какой-то один формат в ущерб задаче — по меньшей мере глупо.
ASN.1 ещё долго не уйдёт со сцены, так что работать с ним надо уметь. PB только что появился и пройдут ещё годы, прежде чем он получит такой же вес, как и ASN.1.
Я про en.wikipedia.org/wiki/CMS_protocol подумал.
А в разборе Cryptographic Message Syntax что сложного? Можно ещё посмотреть на такие протоколы, как H.248 и H.323, там тоже ASN.1 используется и всё вполне нормально разбирается.
Как много в IT любви к аббревиатурам :)
Разбор не особо сложный — сложно для понимания. Хотя краем глаза глянул на H.323 — тож без поллитры не разберешься :)
Ага, то-то в линуксе и большинстве сетевых устройств NAT h.323 представляет из себя эвристику, которая в общем случае не работает, а работает только с определенными опциями.
То-то решения для sip-телефония плодятся как грибы.
То-то фирма dlink закрыла поддержку h.323 в шлюзах.
Казалось бы, причём тут ASN.1?
С таким же успехом можно высказываться против передачи данных с помощью байтов, аргументируя это тем, что от H.323 отказываются, а он передаётся байтами.
Можно и дальше расширить: практические примеры показывают, что бинарные протоколы, даже использующие ASN.1, все равно не становятся достаточно удобными и простыми в сопровождении.
А отказываться не надо. Надо внимательно взвешивать технологии при их выборе.
Когда у человека единственный инструмент — молоток, то всё вокруг кажется гвоздями. Когда единственный инструмент — PHP, всё становится текстовым протоколом.
Вместо того, чтобы делать выводы обо мне по моим сегодняшним постам, лучше почитайте RFC — узнаете, что вот уже 40 лет текстовые протоколы двигают Интернет.
И занятия эти сводятся к унаследованным сетям связи и каналам с крайне низкой пропускной способностью.
А там где нету этих проблем, современные протоколы получаются текстовыми. Взять хотя бы относительно свежий MGCP: казалось бы, те же самые бравые мужи-телефонисты из nortel проектировали, но протокол почему-то вышел текстовым.
С SIP та же история — разрабочик Bell Labs.
Да.
Я вообще не пойму, с какой целью ведётся этот спор. Хотите сказать, что работать с ASN.1 не надо, так как формат плохой? Или то, что бинарные форматы не нужны? Или просто поговорить приспичило?
Ну и пусть. Это дурное воспитание.
А если считать телекоммуникациями еще и Интернет, то объем разработок в этой области гораздо больше разработок перекладывающих байтики связистов. И получается ASN.1 не особо общепринят.
ASN.1 и Erlang