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

时间:2010-04-09 12:20:12

标签: protobuf-net

实际上我想使用Google的java实现序列化我的数据,然后使用C#实现反序列化?
我选择了protobuf-net,因为它似乎更稳定(proto#仍然是v0.9或者我会为它而去)。在开始研究之前,我想确保我能够实现这一点(使用java实现序列化数据并使用protobuf-net对其进行反序列化)。或者是否有任何特定于protobuf-net实现的方法列表?

2 个答案:

答案 0 :(得分:2)

如果您想在多个平台上使用相同的API,Jon Skeet's implementation可能更适合您。不同之处在于protobuf-net是围绕常见的C#开发模式设计的,例如它并不要求您使用生成的类型(您可以使用自己的类型,与DataContractSerializer完全一样,{{1}等等) - 它直接支持一些BCL概念。

两者应该在线上100%兼容,但这里有一些 API 差异:

  • 直接支持XmlSerializerDateTimeTimeSpan等(由邮政编码中的bcl.proto中的合同描述)
  • 支持继承(映射为线上的嵌套数据)
  • 支持您自己的类型
  • 支持可变类型(而不是构建器/不可变对)
  • 支持序列化回调
  • (可能还有其他一些 - 您需要100%完整列表吗?)

您最有可能注意到的是继承。简单地说:如果您打算使用互操作,请不要使用此功能。如果你正在做一些将使用特定于.NET的技巧,我试图在intellisense中明确表达它,但是如果你从.proto开始它将不会使用这些无论如何(它应该便携式)。

答案 1 :(得分:0)

所有Google序列化都是有线兼容的,虽然protobuf-net不是由Google编写的,但claims to be wire-compatible

此外,还有一页从Google's documentation.

链接的兼容C#API页面