Kdybyste chtěl ušetřit a nevyžadoval normativní texty, je na Internetu ke stažení kniha s velice podrobným popisem ASN.1:
http://www.oss.com/asn1/bookreg2.html
Jako největší problém ASN.1 vidím špatnou dostupnost free implementací parserů pro ASN.1 data. Nevím jak teď, ale před pár lety byly k dispozici jen komerční parsery a ASN toolkity, jejichž cena byla podstatně vyšší než cena ISO norem. Oproti tomu je k dispozici zdarma mnoho parserů XML.
Uvedu jiný příklad "jména a příjmení", řekněme jen pro SIZE(1..20)
Někdo se teď (v Evropské unii) bude jmenovat František Løkenbundn - je to nebo není na 20 znaků?
To se podle mě bez informací o kódu nedá správně naimplementovat, pouze tvůrci teorie to ještě nepochopili (a asi už nepochopí, jak je vidět i ze standardů a doporučení vydávaných u nás.)
Jste trdlo, když chcete něco implementovat pořádně, udělejte to podle nějakých open source zdrojáků, nikdy podle těch ukecaných iso referencí. Mimochodem v jejich referenční implementaci BER parseru byl pěkný buffer overflow. :)
Zní to příjemně, skoro jako reklama. Aniž bych si chtěl nárokovat nějakou vlastní absolutní pravdu, zkusím jen vyložit svůj pohled.
Vzhledem k četným referencím mám dojem, že standard ASN.1 vznikl v těsné kooperaci s ostatními projekty ISO OSI sítí. Kdo někdy například absolvoval přednášku o sítích od Jiřího Peterky, má v souvislosti s projekty OSI zafixovanou v paměti jedinou věc - návrh "od stolu". Bez širšího testování a zpětných vazeb. Všechny standardy jsou samozřejmě ISO, nebo ITU-T, nebo dokonce obojí, ale v praxi živořící na pokraji zájmu vedle volně dostupných specifikací jako jsou např. RFC, které se standardy mohou stát až při existenci dvou nezávislých implementací a širším testování.
S ASN.1 jsem se setkal poněkud nedobrovolně. Chtěl jsem trochu prozkoumat protokol SNMP a mimo jiné i zjistit proč je jeho volně dostupných implementací tak poskrovnu. Pohled do příslušného RFC nastíní, že SNMP je opravdu "simple", ale je definováno v ASN.1 a bez jeho znalosti se až ke konkrétnímu způsobu kódování údajů nedostanete.
Dobrá tedy, následoval jsem odkazy na dva ISO standardy z roku 1987 - ISO 8824 (ASN.1) a ISO 8825 (Basic Encoding Rules for ASN.1). A hle, tyto verze už nejsou platné a neprodávají se. Místo toho tu máme nové standardy 8824-1 až 8824-4 s několika doplněními v celkové ceně 600 CHF (asi 11000 Kč?) a standard 8825-1 s doplněním v celkové ceně 122 CHF (něco přes 2000 Kč?). Ano, jsou tam ještě specifikace dalších kódování - ISO 8825-2 až 8825-5 v celkové ceně 786 CHF (skoro 15000 Kč), ale těm jsem už opravdu nevěnoval žádnou pozornost.
Po kratším řádění na Googlu jsem zjistil, ze ty původní verze standardů z roku 1987 jsou obsahově stejné jako standardy ITU-T X.208 a X.209, které se ještě dají koupit. (Všimněte si, že se téměř musím doprošovat, aby mi někdo PRODAL něco, co mě zároveň nutí používat!) Po ještě delším řádění zjišťuji, že mi někdo ušetřil peníze a (nelegálně) je zveřejnil na Internetu. (Díky.)
Po pročtení standardů už je mi celkem jasné proč implementace tak jednoduchého protokolu, jakým je SNMP, už není ani zdaleka tak jednoduchá a proč bylo v novějších verzích specifikace SNMP nutné věnovat tolik místa vymezování podmnožiny ASN.1, která se pro definice smí použít.
Mně ta notace připadá jako syntakticky nešťastná, pokud se její uživatel dost nesnaží tak i nejednoznačná a její "základní" kódování zbytečně složité. Nemluvě o tom, že přečíst si pár stránek za v nové verzi už téměř pár desítek tisíc korun k tomu abych implementoval volně specifikovaný a jednoduchý Internetový protokol, to mi připadá už trochu moc. :-(