c++ - 在 C++ 中使用 protobuf 和 POCO

标签 c++ protocol-buffers

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

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

谢谢。

最佳答案

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

但除此之外,您确实需要考虑为什么您正在使用 Google Protocol Buffers。

如果你想实现向前和向后兼容,并且能够打开,然后编辑,然后保存一个可能是不同的人创建的对象,使用不同版本的 Protocol Buffer 声明,然后一起发送到另一个人的声明版本甚至不同……那么您需要硬着头皮使用 Google Protocol Buffer Compiler 生成的 C++。

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

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

关于c++ - 在 C++ 中使用 protobuf 和 POCO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17509681/

相关文章:

c# - C# 中的 Google Protocol Buffer

c# - protobuf-csharp-port 是否支持 Windows RT?

c# - Protobuf 继承和泛型

c++ - 为什么 memset 不分配 1?

c++ - 如何移动 std::ostream?

c++ - 下载速度到处跳

c++ - 这两段代码有什么区别吗?

c# - .NET/C# 与 Python 互操作

java - Google Protocol Buffers 在网络软件中的作用

c++ - WinCE中,CreateFile函数: File open failed