protobuf优缺点

Posted 木木甫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了protobuf优缺点相关的知识,希望对你有一定的参考价值。

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

以上是关于protobuf优缺点的主要内容,如果未能解决你的问题,请参考以下文章

用python可视化protobuf内容

Grpc接口的优缺点

Grpc接口的优缺点

Go语言使用protobuf快速入门

序列化系列protobuf

Protobuf(Protocol Buffers)学习:一简介