protubuf3的优缺点

protobuf3作为Google的序列化协议,以其高性能、代码生成机制和良好的前后向兼容性受到青睐。然而,其二进制格式导致可读性差,缺乏自描述性,通用性也不如JSON和XML广泛,可能需要在多平台兼容上做额外工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写目录标题

protobuf3的优点

(1)性能好/效率高
时间开销: XML格式化(序列化)的开销还好;但是XML解析(反序列化)的开销就不敢恭维了。 但是protobuf在这个方面就进行了优化。protobuf使用二进制存储,所以会比json更快。可以使序列化和反序列化的时间开销都减短。

空间开销:protobuf使用二进制存储,因此空间开销也减少了很多。

(2)有代码生成机制
比如你你写个一下类似结构体的内容

 message testA  
{  
    required int32 m_testA = 1;  
}  

protobuf将对结构体testA的操作封装成一个类,并自动生成它的.h 文件和点.cpp文件。

(3)支持向后兼容和向前兼容
当客户端和服务器同事使用一块协议的时候, 当客户端在协议中增加一个字节,并不会影响客户端的使用

(4)支持多种编程语言
在Google官方发布的源代码中包含了c++、java、Python三种语言

protobuf3的缺点

(1)二进制格式导致可读性差
为了提高性能,protobuf采用了二进制格式进行编码。这直接导致了可读性差。这个直接影响开发测试时候的效率。当然,一般情况下,protobuf非常可靠,并不会出现太大的问题。

(2)缺乏自描述
一般来说,XML是自描述的,而protobuf格式则不是。 给你一段二进制格式的协议内容,不配合你写的结构体是看不出来什么作用的。

(3)通用性差
protobuf虽然支持了大量语言的序列化和反序列化,但仍然并不是一个跨平台和语言的传输标准。在多平台消息传递中,对其他项目的兼容性并不是很好,需要做相应的适配改造工作。相比json 和 XML,通用性还是没那么好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值