我们正在考虑使用Google的Protocol Buffers来处理c ++应用程序和c#应用程序之间的序列化。
我的问题是,我为c#找到了几个不同的判断。两者看起来都不错,但是,有没有人知道两者之间有什么不同(如果有的话)
答案 0 :(得分:13)
不确定; dotnet-protobufs是java版本的一个端口,所以共享一个非常类似的API和核心谷歌实现的方法;代码宝石,不变性等等。
Protobuf-net是字节兼容的,但它是一个完全从头开始重新实现的,遵循标准的.NET习惯用法 - 因此对XmlSerializer等用户来说很熟悉。它也可以对抗可变对象(并且根据设置不可变,和v2中的结构,并有可选的WCF钩子,远程处理等。
两者都可以从.proto开始工作(可以说dotnet-protobufs 更好在此比protobuf-net);但protobuf-net可以在没有.proto或任何codegen的情况下对现有的.net poco / DTO等起作用。
此外,protobuf-net提供了继承支持等功能,但您可能不会选择在场景中使用它,因为它不能轻松映射到.proto定义。