Thrift:можно ли делать только сериализацию с помощью библиотеки C++ Thrift?
с библиотекой C++ Apache Thrift можно ли использовать только сериализацию / десериализацию и не использовать службы RPC?
Как я понимаю из этой страница, это можно сделать с библиотекой Java. Однако я не смог найти аналогичные классы для библиотеки C++.
5 ответов
Да, это возможно. Thrift не хватает документации по этому вопросу. Ну, вообще ни о чем.
здесь я нашел это:
Я лично использую 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++.
Я понимаю, что этот вопрос был задан некоторое время назад. Недавно я столкнулся с подобным случаем использования (с дополнительным требованием-отправка сериализованных байтов в кластер Кафки). Вот мой ответ С более полными фрагментами кода, которые иллюстрируют, как можно выполнить задачи сериализации и отправки.