Thrift:можно ли делать только сериализацию с помощью библиотеки C++ Thrift?

с библиотекой C++ Apache Thrift можно ли использовать только сериализацию / десериализацию и не использовать службы RPC?

Как я понимаю из этой страница, это можно сделать с библиотекой Java. Однако я не смог найти аналогичные классы для библиотеки C++.

5 ответов


Да, это возможно. Thrift не хватает документации по этому вопросу. Ну, вообще ни о чем.

здесь я нашел это:

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

Я лично использую boost::сериализацию, если нет необходимости передавать данные по сети. Очень четкий синтаксис и поддержка JSON, XML и двоичного вывода / ввода.


В 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

Если вы просто хотите сериализовать в байтах (без записи в файл), вы можете использовать TMemoryBuffer.

boost::shared_ptr<TMemoryBuffer> buffer(new TMemoryBuffer());
boost::shared_ptr<TBinaryProtocol> binaryProtcol(new TBinaryProtocol(buffer));

obj->write(binaryProtcol.get());
obj->read((binaryProtcol.get()));

вот другой список рассылки с некоторым прикрепленным кодом, показывающий, как использовать бережливость для сериализации в файл на C++.

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


Я понимаю, что этот вопрос был задан некоторое время назад. Недавно я столкнулся с подобным случаем использования (с дополнительным требованием-отправка сериализованных байтов в кластер Кафки). Вот мой ответ С более полными фрагментами кода, которые иллюстрируют, как можно выполнить задачи сериализации и отправки.