2012-06-29 12 views

risposta

15

ASN.1 e JSON non sono strettamente confrontabili. JSON è un formato dati. ASN.1 è un linguaggio di schema più insiemi multipli di regole di codifica, ognuno dei quali produce formati di dati diversi per un dato schema. Quindi, la domanda originale è in qualche modo parallela alla domanda "XML Schema vs. XML: quando è appropriato usarli?" Un confronto più equo sarebbe tra ASN.1 e JSON Schema.

Detto questo, alcuni punti da considerare:

  • ASN.1 ha regole di codifica binaria. Considerare se la codifica binaria o di testo sia preferibile per la propria applicazione.
  • ASN.1 ha anche regole di codifica XML. Puoi scegliere di utilizzare una codifica basata su testo utilizzando ASN.1, se lo desideri.
  • ASN.1 consente di sviluppare altre regole di codifica. In effetti, abbiamo specificato le nostre regole (non standardizzate) per codificare ASN.1 in JSON. Ho parlato di questo sul nostro sito aziendale here
  • Come con lo schema XML, esistono strumenti per la compilazione di ASN.1. Questi sono comunemente indicati come strumenti di associazione dei dati. L'output del compilatore è costituito da strutture dati per contenere i dati e codice per la codifica/decodifica da/verso le varie codifiche (binario, XML o, se si utilizza il nostro strumento, JSON).
  • Non sono sicuro di quali strumenti di associazione dati esistano per JSON Schema. Non sono nemmeno sicuro di quanto sia maturo/stabile lo schema JSON, mentre ASN.1 è piuttosto maturo e stabile.
  • Scegliendo JSON Schema e ASN.1, si noti che JSON Schema è associato a JSON, mentre ASN.1 non è associato a nessuna rappresentazione particolare.
2

È possibile utilizzare ASN.1 indipendentemente dal fatto che sia necessario serializzare i messaggi che potrebbero essere inviati a un destinatario utilizzando C, C++, C#, Java o qualsiasi altro linguaggio di programmazione con il motore di codifica/codificatore ASN.1. ASN.1 fornisce anche più regole di codifica che hanno vantaggi in circostanze diverse. Ad esempio, DER viene utilizzato quando una codifica canonica è cruciale, come nei certificati digitali, mentre PER viene utilizzato quando la larghezza di banda è critica come nei protocolli cellulari ed E-XER viene utilizzato quando non ti interessa la larghezza di banda e vorrebbero per visualizzare una codifica in XML per manipolazione in un browser o per scambiare messaggi con un motore di schema XML.

Si noti che con un buon strumento ASN.1, non è necessario modificare il codice dell'applicazione per passare da queste regole di codifica ASN.1. Una semplice chiamata di funzione può selezionare le regole di codifica che si desidera utilizzare.

+2

Che cosa ha a che fare Java con JSON? –

+0

La mia comprensione è che per JSON si intendeva JavaScript Object Notation. Mi stai dicendo che questo non ha nulla a che fare con Java anche se Java è parte del suo nome? –

+11

Ciò è corretto Java non ha nulla a che fare con JSON. – megazord

Problemi correlati