2012-06-29 3 views

答えて

15

ASN.1とJSONは厳密には比較できません。 JSONはデータ形式です。 ASN.1は、スキーマ言語に加えて、複数のエンコーディングルールセットであり、それぞれが特定のスキーマに対して異なるデータフォーマットを生成します。したがって、元の質問は、「XMLスキーマvs. XML:いつ使用するのが適切なのですか?」という質問と幾分平行しています。より公平な比較は、ASN.1とJSONスキーマの間で行われます。

  • ASN.1は、バイナリ符号化規則を持っています、考慮すべきいくつかのポイントを語っ

    。バイナリまたはテキストエンコーディングがアプリケーションに適しているかどうかを検討してください。

  • ASN.1にはXMLエンコード規則もあります。必要に応じて、ASN.1を使用してテキストベースのエンコーディングを選択することもできます。
  • ASN.1では、他のエンコードルールを開発することができます。実際、ASN.1をJSONにエンコードする独自の(標準化されていない)ルールを指定しました。私は弊社のWebサイトでこれについてブログしましたhere
  • XMLスキーマの場合と同様に、ASN.1をコンパイルするためのツールがあります。これらは一般にデータバインディングツールと呼ばれます。コンパイラの出力は、データを保持するデータ構造と、さまざまなエンコーディング(バイナリ、XML、またはツールを使用する場合はJSON)との間でエンコード/デコードするためのコードで構成されています。
  • JSONスキーマ用のデータバインディングツールがあれば、それは何か(もしあれば)はわかりません。私はまた、成熟した/安定したJSONスキーマがどれほど成熟していて安定しているのかわからない。
  • JSONスキーマとASN.1の間で選択すると、JSONスキーマはJSONにバインドされますが、ASN.1は特定の表現にバインドされません。
2

C、C++、C#、Java、またはASN.1エンコーダ/デコーダエンジンを使用する他のプログラミング言語を使用して受信者に送信される可能性のあるメッセージをシリアル化する必要があるかどうかにかかわらず、ASN.1を使用できます。 ASN.1はまた、異なる状況下で利益を有する複数の符号化規則を提供する。たとえば、DERは、デジタル証明書などの標準的なエンコーディングが重要な場合に使用されます.PERは、携帯電話プロトコルなどの帯域幅が重要な場合に使用され、帯域幅を気にせずに使用する場合はE-XERが使用されますブラウザでの操作やXMLスキーマエンジンとのメッセージのやりとりのためにXMLでエンコーディングを表示する。

優れたASN.1ツールを使用すると、これらのASN.1エンコード規則を切り替えるためにアプリケーションコードを変更する必要はありません。単純な関数呼び出しで、使用したいエンコーディング規則を選択できます。

+2

JSONとJavaの関係は何ですか? –

+0

JSONではJavaScript Object Notationを使用しています。 Javaがその名前の一部であっても、これはJavaとは何の関係もないと私は言っていますか? –

+11

これは正しいJavaはJSONとは関係がありません。 – megazord

関連する問題