Uso di Abstract Syntax Notation (ASN.1)

6

Il problema dell'interscambio di dati elettronici su reti è ben noto e compreso. Oggi, i formati più comuni per lo scambio di dati sono cose come XML e JSON. Esistono vari pro e contro nell'usare un formato rispetto all'altro e alcuni formati si prestano meglio a determinati set di dati.

Sto programmando da un po 'di tempo e ho appena incontrato ORA ASN .1 (Abstact Syntax Notation) formato, che è apparentemente utilizzato in alcuni protocolli Internet come LDAP, ed è in realtà piuttosto vecchio (negli anni di Internet). Ho letto un po 'del formato. Come JSON, fornisce i tipi di dati primitivi (booleano, intero, ecc.) E anche i tipi di sequenza e set.

È un po 'diverso da JSON o XML nel senso che, mentre la notazione stessa è leggibile dall'uomo, la codifica di solito non è leggibile dall'uomo (di solito è codificata in un formato binario).

C'è qualche ragione per cui questo formato è usato così raramente? (Oppure ho sbagliato completamente, ed è effettivamente usato spesso?) L'ho appena sentito per la prima volta, e non l'ho mai sentito in nessuna delle varie discussioni che ho letto sul meriti di JSON, YAML, XML o qualsiasi altro formato di interscambio. C'è un grosso svantaggio di ASN.1 che impedisce di utilizzarlo più ampiamente?

    
posta Channel72 22.07.2013 - 16:59
fonte

3 risposte

3

ASN.1 è in realtà molto usato. Ogni cellulare realizzato oggi utilizza le regole di codifica non allineate ASN.1 come parte del suo protocollo di basso livello. ASN.1 è utilizzato nei protocolli di aviazione per le comunicazioni tra terra e aeroplani. ASN.1 è utilizzato nelle comunicazioni con i satelliti (come nei sistemi GPS). ASN.1 viene utilizzato nelle comunicazioni tra le banche e nelle transazioni con carta di credito. Ogni volta che ti connetti a un sito Web sicuro utilizzando https, stai utilizzando ASN.1. ASN.1 viene utilizzato per i sistemi di pedaggio elettronico in modo che non sia necessario fermarsi ai caselli per pagare il pedaggio autostradale o autostradale. ASN.1 è utilizzato da alcune compagnie di navigazione per tenere traccia dei loro pacchetti. Queste alcune delle aree in cui viene utilizzato ASN.1.

È un peccato che non abbia ottenuto pubblicità come un modo robusto di macchine disparate con sistemi operativi eterogenei e persino di linguaggi di programmazione disparati tutti in grado di comunicare tra loro.

Supporta anche la comunicazione con i motori di schema XML tramite le regole di codifica XML. L'ultima generazione di telefoni cellulari che utilizzano LTE (Long Term Evolution) fa molto affidamento su ASN.1, quindi non sta andando via in qualunque momento presto. È una tecnologia matura con una comprovata esperienza e continua ad essere ampiamente utilizzata.

    
risposta data 22.07.2013 - 19:50
fonte
2

Ci sono probabilmente dei motivi principali per cui ASN.1 sembra essere usato così poco rispetto a XML / JSON.

  1. Contrariamente a XML (e JSON), ASN.1 è not un formato di interscambio di dati, ma principalmente un linguaggio per definire cosa significano i dati scambiati (più un intero insieme di modi per codificare quei dati). Come linguaggio di definizione dei dati, ASN.1 è molto più simile alle definizioni dello schema XML o DTD (Definizioni dei tipi di documento). Poiché esiste una moltitudine di modi (sia formali che informali) per definire il significato di un messaggio di interscambio di dati, ma meno formati di interscambio di dati effettivi di uso comune, è più probabile che si verifichi un formato specifico rispetto a uno di essi. metodi di definizione formale.

  2. Come notato, ASN.1 viene solitamente utilizzato in combinazione con i formati di interscambio binario. Ciò significa che se si lavora in un ambiente che si occupa principalmente di formati leggibili dall'uomo (come molti dei protocolli Internet), è improbabile che si incontrino le definizioni ASN.1 per lo scambio di dati. D'altra parte, se lavori in un ambiente che utilizza tradizionalmente protocolli binari puri, potresti avere molta più familiarità con le notazioni ASN.1.

In sintesi, l'apparente popolarità di XML / JSON rispetto a ASN.1 è in parte dovuta al confronto tra mele e arance (formato di interscambio rispetto al linguaggio di definizione) e può essere in parte spiegato dal background culturale (di programmazione).

    
risposta data 22.07.2013 - 17:55
fonte
1

Il contenuto binario asn.1 è ottimizzato per dati minimi e ingombro dell'implementazione. Questo era importante nei giorni in cui i sistemi embedded avevano solo 2k di ram.

Oggi è più importante avere un formato intuitivo leggibile dall'uomo.

    
risposta data 22.07.2013 - 19:14
fonte

Leggi altre domande sui tag