15

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

4

3 回答 3

25

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。我在我们公司的网站上写过这个
  • 与 XML Schema 一样,存在用于编译 ASN.1 的工具。这些通常被称为数据绑定工具。编译器输出包含保存数据的数据结构,以及用于对各种编码(二进制、XML、JSON)进行编码/解码的代码。
  • 我不确定 JSON Schema 存在哪些数据绑定工具(如果有的话)。我也不确定 JSON Schema 有多成熟/稳定,而 ASN.1 相当成熟和稳定。
  • 在 JSON Schema 和 ASN.1 之间进行选择,请注意 JSON Schema 绑定到 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 Schema 引擎交换消息。

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

于 2012-06-29T17:35:34.247 回答
1

在这里可以找到一篇对 JSON、XML、ASN.1、EXI 和 ProtoBuf 进行了深入研究的论文

于 2020-01-22T23:54:22.143 回答