实际上我想使用 Google 的 java 实现序列化我的数据,然后使用 C# 实现反序列化?
我选择了 protobuf-net,因为它似乎更稳定(proto# 仍然是 v0.9,否则我会选择它)。在我开始研究它之前,我想确保我可以实现这一点(使用 java 实现序列化数据并使用 protobuf-net 反序列化它)。或者是否有任何特定于 protobuf-net 实现的方法列表?
问问题
980 次
2 回答
2
如果您想在多个平台上使用相同的 API,Jon Skeet 的实现可能更适合您。不同之处在于 protobuf-net 是围绕常见的 C# 开发模式设计的,例如它不要求您使用生成的类型(您可以使用自己的类型,就像使用DataContractSerializer
,XmlSerializer
等一样) - 它支持一些 BCL直接的概念。
两者在网络上应该 100% 兼容,但这里有一些API差异:
- 直接支持
DateTime
,TimeSpan
等Guid
(由 zip 中 bcl.proto 中的合同描述) - 支持继承(映射为线路上的嵌套数据)
- 支持您自己的类型
- 支持可变类型(而不是构建器/不可变对)
- 支持序列化回调
- (可能还有其他一些——你需要一份 100% 完整的清单吗?)
您最有可能注意到的是继承。简单地说:如果您打算使用互操作,请不要使用它。如果您正在做的事情将使用 .NET 特定的技巧,我试图在智能感知中使其非常明确,但如果您从 .proto 开始,它无论如何都不会使用这些(它应该是便携友好的)。
于 2010-04-10T07:00:08.827 回答
0
所有的 google 序列化都是有线兼容的,虽然 protobuf-net 不是由 Google 编写的,但它声称是有线兼容的。
此外,还有一个从Google 文档链接的兼容 C# API 页面。
于 2010-04-09T12:51:05.890 回答