为什么使用protobuf?有什么好处?

0.为什么数据传输需要序列化

因为TCP协议只能发送字节流,因此需要将数据序列化。
其实序列化最终的目的是为了对象可以跨平台存储,和进行网络传输。而我们进行跨平台存储和网络传输的方式就是IO,而我们的IO支持的数据格式就是字节数组
把对象转成字节数组的时候就制定一种规则(序列化),那么我们从IO流里面读出数据的时候再以这种规则把对象还原回来(反序列化)。

凡是需要进行“跨平台存储”和”网络传输”的数据,都需要进行序列化。

1.什么是protobuf

Google提供一个具有高效的协议数据交换格式工具库(类似Json)。
但相比于Json,Protobuf有更高的转化效率,时间效率和空间效率都是JSON的3-5倍。

2.protobuf有什么优势

1.protobuf序列化和反序列化的时间开销都很少。因为序列化后的数据都是以二进制数据存储,因此空间开销也少很多。XML和JSON编码类似,都是在数据序列化成字节流之前,将数据转化为字符串,可读性强但是性能差。
2.有自动的代码生成机制,定义一个结构体,使用protoc可以对该结构体进行封装,自定生成一个.h和.cpp文件,其中具有一些操作的函数。
3.支持多种编程语言,C++,JAVA,PYTHON

3.protobuf有什么缺点

1.因为序列化后的数据是二进制格式进行编码,因为序列化后的数据可读性差。需要配合定义的结构体或者生成的.h文件才能知道有哪些内容。
2.通用性比较差,protobuf并不是一个跨平台和语言的传输标准,因此在多平台消息传递中,兼容性不是很好,相比json和xml通用性不是很好。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值