5

谷歌协议缓冲区是否支持 stl 向量、映射和提升共享指针?我有一些大量使用stl containerslike的对象mapsvectors还有boost::shared_ptr. 我想使用谷歌协议缓冲区通过网络将这些对象序列化到不同的机器。

我想知道 google protobuf 是否支持这些容器?另外,如果我使用apache thrift它会更好吗?我只需要序列化/反序列化数据,不需要 apache thrift 提供的网络传输。apache thrift 也没有适当的文档让我失望。

4

1 回答 1

8

协议缓冲区直接处理少量的结构;向量很好地映射到“重复”元素类型,但是在 C++ 中如何呈现是通过“添加”方法 - 你不(AFAIK)只是给它一个向量。有关详细信息,请参阅此处的“重复嵌入消息字段” 。

重新映射;没有内置机制,但键/值对很容易在 .proto 中表示(通常键 = 1,值 = 2),然后通过“重复”处理。

shared_ptr本身在序列化文件中似乎没有什么意义。但是该对象可以(大概)作为消息处理。

请注意,在 google C++ 版本中会生成 DTO 层,因此您可能需要在它们与任何现有对象模型之间进行映射。这通常是微不足道的。

对于某些语言/平台,有针对现有对象模型的 protobuf 变体。

(对不起,我不能评论节俭——我不熟悉它)

于 2011-02-03T08:35:55.203 回答