在C++中使用protobuf和POCO
Working with protobuf and POCOs in C++
我想将protobuf用于我正在处理的C++项目。然而,我不喜欢使用protoc创建的自动生成类,更喜欢使用我已经拥有的POCO。这是因为POCO已经在代码的其他部分中使用,我希望以后能够轻松地切换序列化机制。但是在POCO和protobuf消息类之间手动编写转换器似乎是乏味和错误的。
我想知道是否有一种方法可以使用protobuf来创建一个序列化程序——一个自动生成的类,它将能够序列化和反序列化我的POCO,而不会对我的内部进行调试。
谢谢。
首先,你可能更喜欢Cap‘n Proto,它是由谷歌的一位前谷歌协议缓冲区维护人员创建的。无论如何,值得一探究竟。
但除此之外,您确实需要考虑为什么使用Google协议缓冲区。
如果你想实现前向和后向兼容性,并且能够打开、编辑、保存一个可能是其他人创建的对象,使用不同版本的协议缓冲区声明,然后发送给另一个人,使用甚至不同版本的声明。。。那么您只需要咬紧牙关,使用Google协议缓冲区编译器生成的C++。
它实际上不仅仅是一种序列化格式。它是专门设计的,随着时间的推移,可以轻松地使用不同版本的序列化。
如果您不需要这种灵活性,并且不喜欢生成的代码,则可能需要考虑使用不同的序列化工具。
相关文章:
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 带有Protobuf序列化的C++Hazelcast:字符串不是UTF-8格式的
- Google protobuf 时间戳未声明标识符,在 Windows 上具有C++
- Poco FindMySql.cmake 无法找到 MySQL 源代码
- 如何继承 Protobuf 生成的C++类
- 像 POCO 这样的C++图书馆如何访问网络?
- Poco::Net::FTPClientSession 在 open() 方法上挂起 129 秒,如果 ftp 主机不存
- 使用 Poco::Zip 将文件附加到现有 zip 文件
- FlatBuffers/Protobuf 中是否有支持任意 24 位有符号整数定义的可移植二进制序列化架构?
- gRPC 找不到 Protobuf 库
- protobuf C++ SQLite handle blob data
- Protobuf ShortDebugString() crash
- 无法使用 Poco 库正确克隆 JSON 数组C++
- Poco 库 PUT 方法未按预期工作,尽管主机、方法、内容类型设置正确
- POCO C++对象到 JSON 字符串序列化
- Protobuf中重复字段的问题.使用重复字段进行序列化/反序列化的更好方法是什么?
- 错误:字段'dateOfBirth'的类型不完整'Poco::Data::Date'
- CMake 在编译 Google 的 protobuf 示例时找不到 protobuf
- POCO C++加密/解密
- 在C++中使用protobuf和POCO