ネットワークを介した電子データ交換の問題はよく知られており、理解されています。現在、データ交換の最も一般的な形式は、XMLやJSONなどです。ある形式を別の形式で使用することにはさまざまな長所と短所があり、特定の形式は特定のデータセットに適しています。
私はかなり長い間プログラミングをしており、今 ASN.1(Abstact Syntax Notation) 形式。これは明らかにLDAPなどの特定のインターネットプロトコルで使用されており、実際にはかなり古くなっています(インターネット時代では)。フォーマットについて少し読んだ。 JSONと同様に、プリミティブデータ型(ブール、整数など)とシーケンス型およびセット型も提供します。
JSONやXMLとは少し異なりますが、表記自体は人間が読めるものですが、エンコーディングは通常人間が読めるものではありません(通常、バイナリ形式でエンコードされています)。
このフォーマットがほとんど使用されない理由はありますか? (または私は完全に間違っています、そしてそれは実際に頻繁に使用されますか?)私は今それを初めて聞いたばかりで、私が読んださまざまな議論のいずれかでそれが現れるのを聞いたことがありませんJSON、YAML、XMLなどの交換形式のメリット。 ASN.1が広く使用されることを妨げる大きな欠点はありますか?
ASN.1は実際には非常に広く使用されています。今日作られたすべての携帯電話は、低レベルのプロトコルの一部としてASN.1 Unaligned Packed Encoding Rulesを使用しています。 ASN.1は、地上と飛行機間の通信用の航空プロトコルで使用されます。 ASN.1は、衛星との通信で使用されます(GPSシステムと同様)。 ASN.1は、銀行間の通信やクレジットカード取引で使用されます。 httpsを使用して安全なWebサイトに接続するたびに、ASN.1を使用しています。 ASN.1は電子料金システムに使用されているため、高速道路や高速道路で料金を支払うために料金所に立ち寄る必要はありません。 ASN.1は、一部の配送会社が荷物を追跡するために使用します。これらは、ASN.1が使用されるいくつかの領域です。
残念なことに、さまざまなオペレーティングシステムを備えたさまざまなマシン、さらにはさまざまなプログラミング言語でさえも相互に通信できる堅牢な方法として、広く知られていません。
XMLエンコーディングルールを介したXMLスキーマエンジンとの通信もサポートします。 LTE(Long Term Evolution)を使用する最新世代の携帯電話は、ASN.1に大きく依存しているため、すぐになくなることはありません。実績のある成熟したテクノロジーであり、そして広く使用され続けています。
ASN.1がXML/JSONと比較してあまり使用されていないように見える主な理由がおそらくあります。
XML(およびJSON)とは異なり、ASN.1はnotデータ交換フォーマットですが、主に交換されるデータの意味を定義する言語(およびそのデータをエンコードする一連の方法全体)です。データ定義言語としてのASN.1は、XMLスキーマ定義またはDTD(ドキュメントタイプ定義)にはるかに匹敵します。データ交換メッセージの意味を定義する方法は多数あります(正式なものと非公式なものがあります)が、一般的に使用される実際のデータ交換形式は少ないため、特定の形式に遭遇する可能性は、正式な定義方法。
前述のように、ASN.1は通常、バイナリ交換フォーマットと組み合わせて使用されます。これは、主に人間が読める形式(インターネットプロトコルの多くなど)を扱う環境で作業している場合、データ交換のASN.1定義に遭遇する可能性が低いことを意味します。一方、従来は純粋なバイナリプロトコルを使用していた環境で作業している場合は、ASN.1表記に慣れているかもしれません。
要約すると、ASN.1でのXML/JSONの明らかな人気は、リンゴとオレンジの比較(交換フォーマットと定義言語)によるものであり、文化的(プログラミング)の背景によって部分的に説明できます。
バイナリasn.1コンテンツは、最小限のデータと実装フットプリントに最適化されています。これは、組み込みシステムのRAMが2kしかなかった時代には重要でした。
今日では、人間が読める直感的な形式にすることがより重要です。