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,通用性还是没那么好。