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

これは、C++でファイルにシリアル化するためにthriftを使用する方法を示すいくつかの添付コードを含む別のメーリングリストの投稿です。

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 に答える