3

我正在寻找实现各种消息格式的 protobuf-net,我特别喜欢基于合同的方法,因为我不必弄乱 proto 编译器。我无法找到相关信息的一件事是,这是否会使跨平台工作变得困难?有一些 C++ 应用程序需要能够解析 PB 数据,虽然我知道 protobuf-net 序列化为 PB 标准格式,但如果我使用合同方法而不是 proto 文件,C++ 端如何解析数据?

可以(应该吗?)我为 C++ 需要理解数据的(极少数)情况编写一个单独的原型文件?如果是这样,我怎么知道从 proto 文件生成的 C++ 类将匹配来自 no-proto-file C# 端的数据?

4

1 回答 1

1

是的,理论上它们至少应该在二进制级别匹配,但是您可能希望将自己限制为仅映射到“.proto”的类型 - 所以避免使用DateTime继承([ProtoInclude])等。这也有一个优势,你应该能够使用:

string proto = Serializer.GetProto<YourType>();

获取.proto;it ( GetProto) 不是 100%,但它适用于基本类型。但最终,答案是“测试和调整”;也许从一开始就为互操作设计 - 即尽早测试。

于 2009-12-28T19:09:55.730 回答