5

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

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

谢谢。

4

1 回答 1

1

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

但除此之外,您确实需要考虑为什么要使用 Google 协议缓冲区。

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

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

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

于 2013-08-01T18:10:48.150 回答