Quando si utilizza ASN.1 è preferibile utilizzare JSON? Quali sono alcuni vantaggi e svantaggi di entrambi gli approcci?ASN.1 vs JSON quando è opportuno utilizzarli?
risposta
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.
È 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.
Che cosa ha a che fare Java con JSON? –
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? –
Ciò è corretto Java non ha nulla a che fare con JSON. – megazord