节俭:是否可以只使用C++;旧图书馆? 使用C++ Apache节省库,是否可以只使用序列化/反序列化,而不使用RPC服务?< /P>

节俭:是否可以只使用C++;旧图书馆? 使用C++ Apache节省库,是否可以只使用序列化/反序列化,而不使用RPC服务?< /P>,c++,serialization,thrift,C++,Serialization,Thrift,正如我从第页了解到的,可以使用Java库。但是,我找不到C++类库的类似类。 < P>是的,这是可能的。 Thrift缺乏关于这个主题的文档。嗯,什么都可以 在这里我发现了这个: 如果不需要通过网络传输数据,我个人会使用boost::serialization。 非常清晰的语法,支持JSON、XML和二进制输出/输入。 < P>这是一个不同的邮件列表,带有一些附加代码,说明如何使用节俭来将文件序列化到C++中。 C++中,可以使用TFIELATION: boost::shared_pt

正如我从第页了解到的,可以使用Java库。但是,我找不到C++类库的类似类。

< P>是的,这是可能的。 Thrift缺乏关于这个主题的文档。嗯,什么都可以

在这里我发现了这个:

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

< P>这是一个不同的邮件列表,带有一些附加代码,说明如何使用节俭来将文件序列化到C++中。

C++中,可以使用TFIELATION:

boost::shared_ptr<TFileTransport> transport(new TFileTransport(filename));
boost::shared_ptr<TBinaryProtocol> protocol(new TBinaryProtocol(transport));
yourObj.write(protocol.get()); // to write

如果只想序列化为字节(而不必写入文件),可以使用
TMemoryBuffer

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

obj->write(binaryProtcol.get());
obj->read((binaryProtcol.get()));
boost::shared_ptr buffer(新的TMemoryBuffer());
boost::shared_ptr binaryProtcol(新的TBinaryProtocol(缓冲区));
obj->write(binaryProtcol.get());
obj->read((binaryProtcol.get());

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

谢谢。节俭文件几乎不存在。与此同时(自2012年以来),有大量可用的文件。尽管如此,“仅序列化”还是有一些缺点。虽然可以从使用RPC的完整解决方案中派生,但我们可以做得更好=>是否
obj
必须是TBase的实例?另外,一旦使用write()调用将
obj
序列化为字节,如何访问这些结果字节?谢谢。其中一个和今天一样是复制品。我的建议是考虑另一个问题的措辞,使之成为非重复的问题,即关注问题的卡夫卡部分。谢谢指点。我改写了另一个问题,把重点放在卡夫卡身上。如果需要更多更改,请告诉我。
boost::shared_ptr<TMemoryBuffer> buffer(new TMemoryBuffer());
boost::shared_ptr<TBinaryProtocol> binaryProtcol(new TBinaryProtocol(buffer));

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