LINUX.ORG.RU

Почему asn1 так не сильно популярен?

 , ,


1

8

В последнее время много читал про эту штуку. На выходных пытался запилить простенький проект для обмена данными в лаборатории между двумя приложениями на хосте и виртуалке. С одной стороны эрланг, с другой - с. До рабочего состояния не дошло (будем считать, что я безрукий), но общее впечатление об asn1ct и libtasn1 получил очень даже хорошее.

Так вот у меня вопрос. Почему asn1 не так сильно популярен, как хотелось бы? Взять протокол того же дибаса например. Зачем было изобретать свой протокол, если можно было просто написать asn спеки? Тоже самое относится к протоколам вроде dhcp. С xmpp вроде понятно - он должен быть расширяем, что с asn сделать сложно наверное (я не уверен). Но тот же sip например? Какой вообще смысл делать human readable протокол, если заранее известно, что ни один human читать его не будет?

Спасибо.

Какой вообще смысл делать human readable протокол, если заранее известно, что ни один human читать его не будет?

говори за себя.

вкратце, большую роль играют два фактора: а) асн малоизвестен, и б) асн оверкомпликейтед. как ты понимаешь, эти два фактора связаны.

val-amart ★★★★★ ()

Взять протокол того же дибаса например. Зачем было изобретать свой протокол, если можно было просто написать asn спеки?

Ну, я думаю, недоученные ПТУшники, которые писали спеки DBus, просто не слышали об ASN.1 С технической стороны - разве в ASN.1 есть интроспекция?

Интереснее, почему существуют Thrift и protobuf. Сам Валкин затруднился ответить :)

tailgunner ★★★★★ ()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от tailgunner

разве в ASN.1 есть интроспекция?

Теоретически можно засунуть set в sequence of например. А встроеные типы и в дибасе есть.

nanoolinux ★★★★ ()
Ответ на: комментарий от val-amart

С пунктом а согласен. А пункт б - даже не знаю. Неужели в индустрии так много неосиляторов? Всё так плохо?

nanoolinux ★★★★ ()
Ответ на: комментарий от ates

Ух ты, интересно! Спасибо. Я вообще отметил, что в современной мобильной связи, и вообще там, где руку приложили „дипломированные инженеры“, только его для передачи и используют. Что как бы намекает.

nanoolinux ★★★★ ()
Ответ на: комментарий от nanoolinux

ящетаю что такая запись имени начисто убивает производительность, и если уж соглашаться на некоторые послабления, то сразу записывать

(Сан Валкин)
. А если выжимать по максимуму, то только переписывать на ОКамле.

stevejobs ★★★★☆ ()

Может быть сам ASN.1 не так популярен, но кодирование данных в BER/DER довольно распространено. ИМХО, что ASN.1 имеет не очень большую популярность в массах из-за не очень большого количества достойных инструментальных средств для разных языков программирования. Помимо того же Си и Эрланга ничего достойного припомнить не могу. Для Java в своё время достаточно живой библиотеки (на уровне того же libtasn хотя бы, чего уж говорить про Эрланг) не нашёл, пришлось использовать то, что есть в Bounty Castle, но это неудобно, т.к. фактически пришлось повторять всё описание схемы, но в ООП, что нахрен не надо. С pyasn1 то же самое. Хотя с последним можно было на коленке наваять простенький транслятор, но быстрее всё-таки было руками перефигачить.

GBullfinch ()
Ответ на: комментарий от stevejobs

Думаю это уже от религии зависит. Можно ещё SELECT Валкин WHERE Валкин IS Сан. Я не спец в sql если что)

nanoolinux ★★★★ ()
Ответ на: комментарий от nanoolinux

Я вообще отметил, что в современной мобильной связи, и вообще там, где руку приложили „дипломированные инженеры“, только его для передачи и используют.

ASN.1 - это телекомовский стандарт. У того же RDP ноги растут из телекома - там ASN.1; то же и с LDAP, и с SNMP.

tailgunner ★★★★★ ()
Последнее исправление: tailgunner (всего исправлений: 2)
Ответ на: комментарий от nanoolinux

Ну такое, знаешь, походу его делали в первую очередь для потребностей E///, тот же diameter который в LTE дофига, ток не давно появился, да и клиент LDAP тоже не давно сравнительно появился.

А если глянуть по софту который пишется - так вообще, почему то все в веб лезут в erlang. На днях сталкнулся с проблемой что ESL сборки erlang без sctp идут - а всем пофиг, типа хз что это. Вот такой телеком.

ates ()

он переусложнен.

К тому же - что мне вот в protocol buffers нравится - так это forward compatibility. Т.е. расширение структуры сообщения, а в некоторых случаях даже замена типа - не ломает обратную совместимость. Не знаю как в ASN.1 BER с этим, но подозреваю что никак.

Короче, ASN.1 не нужен. Он сложный и мудацкий.

Protocol buffer удобнее и проще. А для тех, кому нужно одни и те же структуры еще в какой-нибудь JSON засовывать, чтобы скажем, на UI выводить - есть такая штука как piqi: http://piqi.org

lovesan ★★ ()
Ответ на: комментарий от lovesan

Короче, ASN.1 не нужен. Он сложный и мудацкий.

Пришел лавсан и всё прояснил! Спасибо тебе, бро.

ymn ★★★★★ ()

ASN.1 предназначен для описания различных нетривиальных протоколов. Популярное — это одноклассники и вконтакт. Там лишние сложности не нужны.

anonymous ()

Не знаю как сейчас дело обстоит, но в свое время пришлось отказаться от ASN1 из-за полного отсутствия вменяемого инструмента для декларации структур. + было 2 либы (одна под оффтопик, вторая под *nix) так вот иногда первая могла накодить так, что вторая просто ниосиливала. В результате напилили свой лисапед с варинтами флоатами, который потом легко заменился на протобуфер

anonymous ()
Ответ на: комментарий от lovesan

К тому же - что мне вот в protocol buffers нравится - так это forward compatibility. Т.е. расширение структуры сообщения, а в некоторых случаях даже замена типа - не ломает обратную совместимость. Не знаю как в ASN.1 BER с этим

Так же.

tailgunner ★★★★★ ()
Ответ на: комментарий от nanoolinux

под никс не скажу (просто не имел с ней дела), под венду была платная с платным компилятором же. Писали какие-то не то англичане, не то Ирландия. libasn1 тогда еще не было. 2001 год.

anonymous ()
Ответ на: комментарий от lovesan

К тому же - что мне вот в protocol buffers нравится - так это forward compatibility.

А ты догадайся, откуда это слямзили.

Короче, ASN.1 не нужен.

Не аргумент. Это стандарт, и он оптимален для трансфера структурированной информации.

anonymous ()
Ответ на: комментарий от tailgunner

С технической стороны - разве в ASN.1 есть интроспекция?

Зачем она в asn, который по большей части, реализует кодирование/декодирование. Фишка с оверхедом, в большинстве своем не нужная, легко реализуемая на базе протокола.

anonymous ()
Ответ на: комментарий от tailgunner

Ну, я думаю, недоученные ПТУшники, которые писали спеки DBus, просто не слышали об ASN.1 С технической стороны - разве в ASN.1 есть интроспекция?

Если рассматривать дибас как протокол обмена данными, то интроспекции там тоже нет. Она прекручена отдельным протоколом в стиле «клиент обязан отзываться на такие-то методы, чтобы сообщать о себе всё, что знает».

Ну, я думаю, недоученные ПТУшники, которые писали спеки DBus, просто не слышали об ASN.1

Кстати, вполне вероятно, что так и есть.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.