简述ProtoBuf

ProtoBuf是谷歌提供的结构数据序列化方法,常用于前后端通讯。.proto文件定义数据结构,各语言中生成对应类以解析和调用。相比XML和Json,ProtoBuf在速度、空间和效率上有优势,且序列化后数据更紧凑,适合高效传输。 ProtoBuf适合关注性能和数据传输场景。
摘要由CSDN通过智能技术生成

简述ProtoBuf


前言

最近在工作中用到了ProtoBuf,但是却不知道这是个什么玩意,在此做下笔记。

由于ProtoBuf底层的内容确实很多,需要慢慢地去品,这里就只做一个简述,知道ProtoBuf干啥的,有啥好处。


简述

ProtoBuf是谷歌提供的一种结构数据序列化方法,多用于前后端通讯数据协议。其优势在于灵活、高效、扩展性好。

ProtoBuf有单独的.proto文件,用于定义数据结构:

message MyProtocol // 字段后面的=表示的是字段的编号
{
	required string name = 1; // required表示该字段必须且只能出现1次
	optional bytes content = 2; // optional表示该字段可以出现0或1次
	repeated int32 num = 3; // repeated表示该字段可以出现任意次数(也可以是0次)
	message InternalProtocol
	{
		int32 age = 1;
		string city = 2;
	}
	optional InternalProtocol info = 4; // 还可以定义子结构类型
}

在不同的语言中,这些.proto文件都会对应生成一个类,从而方便使用者进行协议解析和调用。


比较

像XML、Json和ProtoBuf这三种协议方式都具有数据结构化和数据序列化的能力。

但是XML和Json更多地是体现出来的数据结构化,更便于人和程序的阅读。但是序列化后的数据字节很大,序列化和反序列化的时间较长,数据传输效率不高。

而ProtoBuf的数据相比之下可读性较差,其更多优势体现在于数据的序列化,因为在速度、空间、效率上ProtoBuf更优,并且维护起来只需要关注.proto文件即可。除此之外,在HTTP抓包的时候只能看到字节,加密性也相对好一些。


小结

至于ProtoBuf如何进行序列化和反序列化、ProtoBuf底层算法等之类的知识就不在这里总结了,感兴趣的小伙伴自行查阅相关资料学习。


参考

https://www.jianshu.com/p/a24c88c0526a

https://www.jianshu.com/p/73c9ed3a4877

https://www.jianshu.com/p/62f0238beec8

https://www.jianshu.com/p/ddc1aaca3691

https://developers.google.com/protocol-buffers

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值