我想在我正在处理的 C++ 项目中使用 protobuf。但是,我不喜欢使用 protoc 创建的自动生成的类,而是更喜欢坚持使用我已经拥有的 POCO。这是因为 POCO 已经在代码的其他部分使用,我希望以后能够轻松地切换序列化机制。但是在 POCO 和 protobuf 消息类之间手动编写转换器似乎是乏味和错误的。
我想知道是否有一种方法可以使用 protobuf 创建一个序列化程序——一个自动生成的类,它能够序列化和反序列化我的 POCO,而不会打扰我的内部结构。
谢谢。
我想在我正在处理的 C++ 项目中使用 protobuf。但是,我不喜欢使用 protoc 创建的自动生成的类,而是更喜欢坚持使用我已经拥有的 POCO。这是因为 POCO 已经在代码的其他部分使用,我希望以后能够轻松地切换序列化机制。但是在 POCO 和 protobuf 消息类之间手动编写转换器似乎是乏味和错误的。
我想知道是否有一种方法可以使用 protobuf 创建一个序列化程序——一个自动生成的类,它能够序列化和反序列化我的 POCO,而不会打扰我的内部结构。
谢谢。
首先,您可能更喜欢Cap'n Proto,它是由 Google 的一位前 Google Protocol Buffer 维护者创建的。无论如何,值得研究。
但除此之外,您确实需要考虑为什么要使用 Google 协议缓冲区。
如果你想实现向前和向后兼容性,并且能够打开,然后编辑,然后保存一个可能由不同人创建的对象,使用不同版本的协议缓冲区声明,然后发送给另一个人使用甚至不同版本的声明......那么你只需要咬紧牙关并使用 Google Protocol Buffer Compiler 生成的 C++。
它实际上不仅仅是一种序列化格式。它经过专门设计,可以随着时间的推移轻松使用不同版本的序列化。
如果您不需要这种灵活性,并且您不喜欢生成的代码,您可能需要考虑使用不同的序列化工具。