Protobuf概览
介绍
是一个跨语言、跨平台、可扩展的用来序列化结构数据的方法。类似于XML。
一些名词解释:
- 序列化:对象——二进制数据作为字节流
- 反序列化:二进制数据——对象
比较
替代的解决方案是xml、json、thrift等,这里和最常用的jason做个对比。
|
Protobuf |
jason |
NuGet包名 |
Google.Protobuf.Tool |
System.Text.Json |
通用性 |
需要专门的解析库,支持的语言没有jason多 无法应用于https的应用场景 |
可以支持任何一门语言 |
可读性 |
可读性较差 |
可读性较差 |
效率 |
理论上效率更高 |
不如Protobuf |
使用过程
使用的时候必须写一个IDL(Interface Description Language),预先在里面定义好数据结构,只有定义好了才能进行序列化和反序列化。
- 创建.proto文件,定义数据结构
- 编译.proto文件生成读写接口
- 调用接口实现序列化、反序列化以及读写
实践案例
在正式利用protobuf定义数据格式之前,我们需要在VS中找到Google.ProtoBuf.Tool的NuGet包并且安装。
第一步:创建proto文件
proto的message中可以包含枚举、和嵌套的数据格式,以下是一个例子
第二步:编译proto文件
通过内置的 protoc 编译器对 protobuf 文件进行编译
第三步:调用接口实现读写
参考文献
https://blog.csdn.net/qq_31347869/article/details/93189219