我正在考虑使用protobuf-net来实现各种消息传递格式,我特别喜欢基于约定的方法,因为我不必与proto编译器打交道。有一件事我找不到,那就是,这会不会让跨平台工作变得很困难?有一些C++应用程序需要能够解析PB数据,虽然我知道protobuf-net序列化为PB标准格式,但如果我使用契约方法而不是proto文件,C++端如何解析数据?
可以(应该?)我为(极少数) C++需要理解数据的情况编写了一个单独的原型文件?如果是这样的话,我如何确切地知道从原始文件生成的C++类将匹配来自非原始文件C#端的数据呢?
发布于 2009-12-29 03:09:56
是的,至少在理论上它们应该在二进制级别上匹配,但你可能想限制自己只映射到".proto“的类型-所以避免DateTime,继承([ProtoInclude])等东西。这也有一个优点,你应该能够使用:
string proto = Serializer.GetProto<YourType>();要获取.proto;它(GetProto)不是100%,但它适用于基本类型。但归根结底,答案是“测试和调整”;也许从一开始就为互操作而设计--即尽早测试。
https://stackoverflow.com/questions/1970843
复制相似问题