在C ++中使用protobuf和POCO

时间:2013-07-07 05:58:04

标签: c++ protocol-buffers

我想将protobuf与我正在研究的C ++项目一起使用。 但是,我不喜欢使用protoc创建的自动生成的类,并且更喜欢坚持我已经拥有的POCO。这是因为POCO已经在代码的其他部分中使用,我希望以后能够轻松切换序列化机制。但是在POCO和protobuf消息类之间手动编写转换器似乎很乏味和错误。

我想知道是否有一种方法可以使用protobuf来创建一个序列化程序 - 一个自动生成的类,它能够序列化和反序列化我的POCO,而不会让我厌烦内部。

感谢。

1 个答案:

答案 0 :(得分:1)

首先,您可能更喜欢Cap'n Proto,它是由Google之前的Google Protocol Buffer维护者创建的。无论如何,值得研究。

但除此之外,你真的需要考虑为什么你正在使用Google Protocol Buffers。

如果要实现向前和向后兼容,并且能够打开,然后编辑,然后使用不同版本的协议缓冲区声明保存可能创建不同人员的对象,然后发送到还有另一个人甚至有不同版本的声明...那么你需要咬紧牙关并使用Google协议缓冲编译器中生成的C ++。

这不仅仅是一种序列化格式。它经过专门设计,可以随着时间的推移轻松实现不同版本的序列化。

如果您不需要这种灵活性,并且不喜欢生成的代码,则可能需要考虑使用其他序列化工具。