protobuf优缺点

2017-09-12  本文已影响0人  SinX竟然被占用了

protobuf的描述

首先 protobuf是一个开源项目,是goole内部久经考验的一个东西。主要用于结构化数据串行化的灵活、高效、自动的方法,有如XML,不过他更小,更快,也更简单。你可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构。甚至可以在无需重新部署程序的情况下更新数据结构。


protobuf的优点

1、性能好/效率高

时间开销: XML格式化(序列化)的开销还好;但是XML解析(反序列化)的开销就不敢恭维了。 但是protobuf在这个方面就进行了优化。可以使序列化和反序列化的时间开销都减短。
空间开销:protobuf也减少了很多。

2、有代码生成机制

比如你你写个一下类似结构体的内容

message testA  
{  
    required int32 m_testA = 1;  
} 

像写一个这样的结构,protobuf可以自动生成它的.h 文件和点.cpp文件或者java类文件。 他将对结构体testA的操作封装成一个类。

3、支持向后兼容和向前兼容

当客户端和服务器同时使用一块协议的时候, 当客户端在协议中增加一个字节,并不会影响客户端的使用

4、支持多种编程语言

在Google官方发布的源代码中包含了c++、java、Python三种语言。


protobuf的缺陷

1、二进制格式导致可读性差

为了提高性能,protobuf采用了二进制格式进行编码。这直接导致了可读性差。

2、缺乏自描述

一般来说,XML是自描述的,而protobuf格式则不是。 给你一段二进制格式的协议内容,不配合你写的.proto文件是看不出来是什么作用的。

上一篇下一篇

猜你喜欢

热点阅读