Protobuf简介

Protobuf

定义:可序列化的数据交换格式
用途:用于通信协议(数据),数据存储等
特点:语言无关,平台无关,高效,扩展性好。
相近产品:XML/JSON
优点:性能好效率高(存储和转化)、预生成代码(无需编写解析代码)、多语言支持(开源社区)、兼容性好
缺点:国内应用较少(跨系统调用不方便)、没有json易读可调试

Protobuf性能为什么这么好
  1. 去掉了json中的字段名
  2. 使用了tag技术,保证了字段不重复,保证在数据流中的位置,标记类型。
  3. Varint编码,普通整数的4字节,较小的数字可以用1字节表示。使用zigzag算法优化负数表示sint32。
  4. 根据Tag中的数据类型信息按位解析数据,不再需要像json解析字符串
  5. 储存string类型时,采用了tag|leg|value
使用

在VS中的工具->NuGet程序包管理器->程序包管理器控制台,运行命令:
install-Package protobuf-net -Version 1.0.0.280
就能下载对应版本的Protobuf工具到该项目文件夹中,以后可以复制该文件夹到其他项目中使用。
可以自己写一个CMD脚本文件,运行命令时双击文件即可,文件命名为genproto.cmd,内容如下:

"protoc-3.2.0-win32/bin/protogen" --proto_path=../Src/Lib/proto --csharp_out=../Src/Lib/Protocol message.proto
pause

即可在特定位置生成对应的csharp脚本文件。在项目中引用对应的头文件即可使用自己定义的协议。

序列化和反序列化

序列化:将数据结构和对象转换成能够存储和传输的格式。
反序列化:将序列化之后的数据转化为序列化之前的数据结构或对象。
protobuf的数据要经过序列化转换为二进制数据才能在网上传输,对方收到后进行反序列化还原

你可能感兴趣的:(Protobuf)