使用C ++ Apache Thrift库,是否可以仅使用序列化/反序列化而不使用RPC服务?
据我在this页面了解,可以使用Java库。但是,我找不到类似的C ++库类。
答案 0 :(得分:8)
是的,这是可能的。 节俭缺乏关于这个主题的文档。嗯,关于任何事情。
我在这里找到了:
如果不需要通过网络传输数据,我个人使用boost :: serialization。 非常清晰的语法,支持JSON,XML和二进制输出/输入。
答案 1 :(得分:4)
在c ++中,您可以使用TFileTransport:
boost::shared_ptr<TFileTransport> transport(new TFileTransport(filename));
boost::shared_ptr<TBinaryProtocol> protocol(new TBinaryProtocol(transport));
yourObj.write(protocol.get()); // to write
或
yourObj.read(protocol.get()); // to read
答案 2 :(得分:3)
如果您只想序列化为字节(无需写入文件),可以使用TMemoryBuffer
。
boost::shared_ptr<TMemoryBuffer> buffer(new TMemoryBuffer());
boost::shared_ptr<TBinaryProtocol> binaryProtcol(new TBinaryProtocol(buffer));
obj->write(binaryProtcol.get());
obj->read((binaryProtcol.get()));
答案 3 :(得分:1)
这是一个不同的邮件列表帖子,其中附带一些代码,显示如何使用thrift序列化为C ++文件。
答案 4 :(得分:1)
我意识到这个问题刚才被问到了。我最近遇到了一个类似的用例(有一个额外的要求 - 将序列化的字节发送到Kafka集群)。这是我的answer更完整的代码段,说明了如何完成序列化和发送任务。