protobuf 长处
protobuf 的长处:
1、性能好 / 效率高
工夫开销:XML 格式化(序列化)的开销还好;然而 XML 解析(反序列化)的开销就不敢恭维了。然而 protobuf 在这个方面就进行了优化。能够使序列化和反序列化的工夫开销都减短。
空间开销:也缩小了很多
2、有代码生成机制
比方你你写个一下相似构造体的内容
message testA
{required int32 m_testA = 1;}
像写一个这样的构造,protobuf 能够主动生成它的.h 文件和点.cpp 文件。
protobuf 将对构造体 testA 的操作封装成一个类。
3、反对向后兼容和向前兼容
当客户端和服务器共事应用一块协定的时候,当客户端在协定中减少一个字节,并不会影响客户端的应用
4、反对多种编程语言
在 Google 官网公布的源代码中蕴含了 c ++、java、Python 三种语言
protobuf 毛病
1、二进制格局导致可读性差
为了进步性能,protobuf 采纳了二进制格局进行编码。这间接导致了可读性差。这个间接影响开发测试时候的效率。当然,个别状况下,protobuf 十分牢靠,并不会呈现太大的问题。
2、不足自描述
一般来说,XML 是自描述的,而 protobuf 格局则不是。给你一段二进制格局的协定内容,不配合你写的构造体是看不出来什么作用的。
3、通用性差
protobuf 尽管反对了大量语言的序列化和反序列化,但依然并不是一个跨平台和语言的传输规范。在多平台消息传递中,对其余我的项目的兼容性并不是很好,须要做相应的适配革新工作。相比 json 和 XML,通用性还是没那么好。