-
Protobuf是什么?
Protobuf是一种平台无关、语言无关、可扩展且轻便高效的序列化数据结构的协议,可以用于网络通信和数据存储。
-
Protobuf的优缺点?
-
优点:
①相比较XML和JSON格式,protobuf更小、更快、更便捷。它以高效的二进制方式存储,比XML小3到10倍,快20到100倍。所以性能比较好,效率自然也高。
②有代码生成机制。可以自定义数据结构,然后使用代码生成器生成的代码来读写这个数据结构。 比如你你写个一下类似结构体的内容:
message test { required int32 test = 1; }
像写一个这样的结构,protobuf可以自动生成一个.cpp文件或者其他语言(Python、Java等)文件。 protobuf将对结构体test的操作封装成一个类。便于使用。
③支持向后兼容和向前兼容。
当客户端和服务器同事使用一块协议的时候, 当客户端在协议中增加一个字节,并不会影响客户端的使用。
④支持多种编程语言。 Protobuf目前已经支持Java,C++,Python、Go、Ruby等多种语言。
-
缺点
①二进制格式导致可读性差。
为了提高性能,protobuf采用了二进制格式进行编码。这直接导致了可读性差。
②缺乏自描述。
一般来说,XML是自描述的,而protobuf格式则不是。 给你一段二进制格式的协议内容,不配合你写的结构体是看不出来什么作用的。
③通用性差。
protobuf虽然支持了大量语言的序列化和反序列化,但相比json 和 XML,通用性还是没那么好。
-
Protobuf的使用?
GitHub地址: https://github.com/google/protobuf
获取Release版本的地址是:https://github.com/google/protobuf/releases 你可以从这个地址下载你所需要的安装包。
谷歌官方文档: https://developers.google.com/protocol-buffers/
安装方法:我下载的是releases版本,使用的Ubuntu系统,解压后执行安装命令即可:
$ ./configure $ make && make install $ sudo ldconfig # refresh shared library cache.
通常情况ProtoBuf都安装在/usr/local目录下,该目录下包含了ProtoBuf的头文件,静态库和动态库文件。安装后测试protoc命令,该程序用于把proto文件翻译成目标代码:
protoc --version
来源:oschina
链接:https://my.oschina.net/u/4062805/blog/3064907