代码之家  ›  专栏  ›  技术社区  ›  ata

protobuf net生成的二进制文件是否与google规范兼容?

  •  2
  • ata  · 技术社区  · 15 年前

    实际上,我想用谷歌的Java实现序列化数据,然后用C实现实现反序列化?
    我选择了Protobuf网络,因为它看起来更稳定(Proto仍然是v0.9,否则我会选择它)。在开始工作之前,我想确保我能实现这一点(使用Java实现序列化数据并使用ToeBuffnet反序列化它)。或者是否有特定于Protobuf网络实现的方法列表?

    2 回复  |  直到 8 年前
        1
  •  2
  •   Marc Gravell    15 年前

    如果您希望在多个平台上使用相同的API, Jon Skeet's implementation 可能更适合你。不同之处在于Protobuf网络是围绕通用的C开发模式设计的,例如,它不要求您使用生成的类型(您可以使用自己的类型,就像使用 DataContractSerializer , XmlSerializer 等等),它直接支持一些BCL概念。

    这两者在电线上应该是100%兼容的,但这里有一些 美国石油学会 差异:

    • 直接支持 DateTime , TimeSpan , Guid ETC(由zip中bcl.proto中的合同描述)
    • 支持继承(映射为线路上的嵌套数据)
    • 支持您自己的类型
    • 支持 可变的 类型(而不是生成器/不可变对)
    • 支持序列化回调
    • (可能还有其他一些-你需要一份100%完整的清单吗?)

    你最可能注意到的是遗产。简单地说:如果您打算使用interop,就不要使用它。如果你在做一些将使用.NET特定技巧的事情,我试图在intellisense中非常明确,但是如果你从.proto开始,它不会使用这些技巧。 无论如何 (应便于携带)。

        2
  •  0
  •   Stephen    15 年前

    所有的Google序列化都是有线兼容的,尽管Protobuf NET不是由Google编写的,但是它 claims to be wire-compatible .

    此外,还有一个兼容C API的页面链接自 Google's documentation.