protobuf中,一个message可以认为是一个类,在protoc编译之后,会生成其内部各成员的set、get方法。而对于一个class内的元素,无外乎是单个元素,或者集合元素。这篇文章总结C++以及python下对protobuf中集合元素的序列化及反序列化操作。
Protobuf官方支持将proto文件编译成C++, Python, PHP的类,而利用一些开源类库,可以对ruby、php等常见的脚本语言进行支持。项目中需要使用Protobuf的地方,主要在于C++与C++之间的接口,以及Python与C++之间的接口。下面分别针对C++以及Python下的Protobuf,实现序列化及反序列化。
protobuf配置文件中多层嵌套,或者多组参数的情况。
程序中一般需要load一些参数列表,直接以一种自己约定的格式写在txt文件中,可读性不高且程序的通用性不强,换一个程序员,就没辙了;而xml这种方式一直是一种老旧且蛋疼的方法。使用protobuf通过rpc协议进行网络传输很爽,虽然这次无奈蛋疼地拿pb来作为http传输的包。通过pb来管理程序的配置文件,也是一个很好的思路,操作比较方便。
最近项目需要使用protobuf做序列化与反序列化的工作,一般来说,在CS模式的架构中,经常使用protobuf作为进程间通信的工具,相对于使用rest传递json串的方式来说,protobuf可以基于tcp传输,组包上具有得天独厚的优势,效率很高。而protoc编译器,便于在跨语言的进程之间使用。