15

JSON を使用するよりも ASN.1 を使用する方が望ましいのはどのような場合ですか? 両方のアプローチの利点と欠点は何ですか?

4

3 に答える 3

25

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

とはいえ、考慮すべき点がいくつかあります。

  • ASN.1 にはバイナリ エンコーディング規則があります。アプリケーションにバイナリ エンコーディングとテキスト エンコーディングのどちらが適しているかを検討してください。
  • ASN.1 には、XML および JSON エンコーディング規則もあります。必要に応じて、ASN.1 を使用したテキストベースのエンコーディングを選択できます。
  • ASN.1 では、他のエンコード規則を開発できます。ITU-T が JSON のエンコード規則を指定する前に、ASN.1 を JSON にエンコードするための独自の規則を指定しました。私はこれについて私たちの会社のウェブサイトでこれについてブログを書きましたここに
  • XML スキーマと同様に、ASN.1 をコンパイルするためのツールが存在します。これらは、一般にデータ バインディング ツールと呼ばれます。コンパイラ出力は、データを保持するためのデータ構造と、さまざまなエンコーディング (バイナリ、XML、JSON) との間でエンコード/デコードするためのコードで構成されます。
  • JSON スキーマ用のデータ バインディング ツールが存在するかどうかはわかりません。また、ASN.1 は非常に成熟して安定しているのに対し、JSON スキーマがどの程度成熟して安定しているかはわかりません。
  • JSON スキーマと ASN.1 のどちらかを選択する場合、JSON スキーマは JSON にバインドされていますが、ASN.1 は特定の表現にバインドされていないことに注意してください。
于 2013-01-18T21:28:27.083 に答える
4

C、C++、C#、Java、または ASN.1 エンコーダー/デコーダー エンジンを備えたその他のプログラミング言語を使用して、受信者に送信されるメッセージをシリアル化する必要があるかどうかに関係なく、ASN.1 を使用できます。ASN.1 は、さまざまな状況下で利点を持つ複数のエンコード規則も提供します。たとえば、DER はデジタル証明書のように正規のエンコーディングが重要な場合に使用され、PER はセルラー プロトコルのように帯域幅が重要な場合に使用され、E-XER は帯域幅を気にせず、必要な場合に使用されます。ブラウザで操作するために XML でエンコーディングを表示したり、XML スキーマ エンジンとメッセージを交換したりします。

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

于 2012-06-29T17:35:34.247 に答える