10

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

正如我从这个页面所了解的那样,可以使用 Java 库。但是,我找不到 C++ 库的类似类。

4

5 回答 5

8

对的,这是可能的。Thrift 缺乏关于这个主题的文档。好吧,关于任何事情。

在这里我发现了这个:

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

如果不需要通过网络传输数据,我个人会使用 boost::serialization。语法清晰,支持 JSON、XML 和二进制输出/输入。

于 2012-09-08T09:43:05.213 回答
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
于 2014-07-26T13:47:43.640 回答
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()));
于 2014-10-17T10:50:23.003 回答
1

这是一个不同的邮件列表帖子,附有一些代码,展示了如何使用 thrift 序列化到 C++ 中的文件。

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

于 2013-11-11T14:52:09.957 回答
1

我意识到这个问题是不久前提出的。我最近遇到了一个类似的用例(有一个额外的要求——将序列化的字节发送到 Kafka 集群)。这是我的答案,其中包含更完整的代码片段,说明了如何完成序列化和发送任务。

于 2017-03-21T01:36:21.897 回答