Thrift:是否可以只使用C ++ Thrift库进行序列化?

时间:2012-09-08 07:25:31

标签: c++ serialization thrift

使用C ++ Apache Thrift库,是否可以仅使用序列化/反序列化而不使用RPC服务?

据我在this页面了解,可以使用Java库。但是,我找不到类似的C ++库类。

5 个答案:

答案 0 :(得分:8)

是的,这是可能的。 节俭缺乏关于这个主题的文档。嗯,关于任何事情。

我在这里找到了:

http://mail-archives.apache.org/mod_mbox/thrift-user/201010.mbox/%3C5EF8F634-79A2-45C4-9A04-6D96D3B7A84F@manbert.com%3E

如果不需要通过网络传输数据,我个人使用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 ++文件。

http://mail-archives.apache.org/mod_mbox/thrift-user/201203.mbox/%3C90483D01-ED25-4707-9DB2-5BB3627301FC@manbert.com%3E

答案 4 :(得分:1)

我意识到这个问题刚才被问到了。我最近遇到了一个类似的用例(有一个额外的要求 - 将序列化的字节发送到Kafka集群)。这是我的answer更完整的代码段,说明了如何完成序列化和发送任务。