我一直在寻找非常通用,严格且与平台无关的序列化框架。我发现了一个叫做ASN.1的东西。

它看起来像与序列化有关的东西,但是我实际上不明白它是什么。我阅读了Wikipedia文章和ITU article,但仍然很难知道。

我有很多问题。也许我需要一些有关ASN.1的整体差异描述。

  • 什么是ASN.1?
  • 这是否定义严格的数据类型? (例如32位整数,1位 bool 值等)
  • C/C++中是否有引用实现?
  • 为什么它看起来不像Apache Thrift,Protocol Buffers或其他序列化工具那样流行?
  • 与其他序列化框架相比,ASN.1的优缺点是什么?
  • 最佳答案

  • 这是ISO定义的序列化标准。
  • 是,尽管一个值将占用的最小空间为(afaik)5位。
  • 我不认识一个完整的人,尽管我并不声称自己一无所知。
  • 很难以中立的方式回答,但是就我所经历的主要复杂性而言,接近完整的实现非常困难。
  • 请参见4。ASN.1的空间效率很高(protobuf可能会花钱),但与大多数其他序列化方法相比,它似乎也相当复杂。最后,复杂性通常会丢失(通常也需要“支付读规范”)
  • 关于asn.1 - 什么是ASN.1及其优点/缺点?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18156739/

    10-11 08:09