请帮我理解协议缓冲区

时间:2013-04-23 05:57:16

标签: java python protocol-buffers

我错过了protobuffers的东西。以下是我遇到的一些问题,我很难回答。

  • .proto文件是否足以获取所有数据?在网站上的地址簿示例中,他们似乎将数据写入文件并将其从文件中消耗(与.proto文件本身不同)。据我所知,proto序列化了对象结构,我知道它可以序列化一条消息但是我很难找到将数据放在哪里并在一个包含的.proto文件中检索。

  • 如果上面的问题得到解答,我认为我的假设是,一个团队可以创建proto文件并使用java序列化数据,另一个团队可以简单地获取文件并使用python反序列化它是正确的假设?

2 个答案:

答案 0 :(得分:3)

  

.proto文件是否足以获取所有数据?

proto文件用于定义消息的结构。每个字段都有一个标签号。只要您拥有正确的proto文件,就可以正确地反序列化数据。是的,proto文件就足够了。

  

一个团队可以创建proto文件并使用with序列化数据   java和另一个团队可以简单地获取文件并使用python   反序列化是正确的假设吗?

一个团队可以创建定义发送/接收数据所需的结构,其他人可以使用该定义进行通信。只要两个团队使用相同的.proto文件并且标签编号被正确分配,您就可以轻松地完成您所要求的工作。

答案 1 :(得分:0)

以这种方式思考

客户端java代码
- 原型编码器
- - 字节
=======网络=======
- - 字节
- 原型解码器
服务器端java代码

字节可以由一侧写入文件而从另一侧读取,而不是网络。任何。

为了让原型编码器原型解码器完成他们的工作,他们需要了解进来的字节的格式。proto文件描述了格式。

这有点类似于通过网络发送图像:双方都需要知道它是png文件。如果有人发送png而另一个尝试解码jpg,那么事情将无效。与jpg vs png描述图像格式的方式相同,proto文件描述数据格式。