ASN.1与JSON何时适合使用它们?

问题描述 投票:8回答:2

什么时候使用ASN.1比使用JSON更好?这两种方法有哪些优点和缺点?

json language-agnostic encoding asn.1
2个回答
19
投票

ASN.1和JSON不具有严格的可比性。 JSON是一种数据格式。 ASN.1是一种模式语言,加上多组编码规则,每种编码规则为给定的模式生成不同的数据格式。因此,最初的问题有点类似于“XML Schema vs. XML:何时适合使用它们?”更公平的比较是ASN.1和JSON Schema之间的比较。

那说,要考虑几点:

  • ASN.1具有二进制编码规则。考虑二进制或文本编码是否适合您的应用程序。
  • ASN.1还具有XML和JSON编码规则。如果您愿意,可以选择使用ASN.1进行基于文本的编码。
  • ASN.1允许开发其他编码规则。在ITU-T为JSON指定编码规则之前,我们指定了自己的规则来将ASN.1编码为JSON。我在公司网站here上发表了关于此的博文
  • 与XML Schema一样,存在用于编译ASN.1的工具。这些通常被称为数据绑定工具。编译器输出包含用于保存数据的数据结构,以及用于编码/解码各种编码(二进制,XML,JSON)的代码。
  • 我不确定JSON Schema存在什么数据绑定工具(如果有的话)。我也不确定JSON Schema是多么成熟/稳定,而ASN.1非常成熟和稳定。
  • 在JSON Schema和ASN.1之间进行选择,请注意JSON Schema绑定到JSON,而ASN.1未绑定到任何特定表示。

3
投票

无论是否需要使用C,C ++,C#,Java或任何其他使用ASN.1编码器/解码器引擎的编程语言来序列化可能发送给收件人的消息,您都可以使用ASN.1。 ASN.1还提供了多种编码规则,这些规则在不同情况下具有优势。例如,当规范编码至关重要时使用DER,例如在数字证书中,而在带宽很重要时使用PER(例如在蜂窝协议中),当您不关心带宽时使用E-XER并且希望显示XML格式的编码,以便在浏览器中进行操作或使用XML Schema引擎交换消息。

请注意,使用良好的ASN.1工具,您无需更改应用程序代码即可在这些ASN.1编码规则之间切换。一个简单的函数调用可以选择您想要使用的编码规则。

© www.soinside.com 2019 - 2024. All rights reserved.