目录
- 前言
- 一、下载
- 注意
- 二、解压安装
- 三、Protobuf的使用
- 1、创建.proto文件
- 2、利用protoc编译.proto文件
前言
Protocol Buffers是Google的⼀种语⾔⽆关、平台⽆关、可扩展的序列化结构数据的⽅法,它可⽤于(数据)通信协议、数据存储等。
Protocol Buffers类⽐于XML,是⼀种灵活,⾼效,⾃动化机制的结构数据序列化⽅法,但是⽐XML更⼩、更快、更为简单。
你可以定义数据的结构,然后使⽤特殊⽣成的源代码轻松的在各种数据流中使⽤各种语⾔进⾏编写和读取结构数据。你甚⾄可以更新数据结构,⽽不破坏由旧数据结构编译的已部署程序。
一、下载
下载路径:https://github.com/protocolbuffers/protobuf/releases
如果链接打不开,需要下载 protoc-29.5-win64,可点击这里下载 https://download.csdn.net/download/weixin_45961836/91668744
点击链接打开页面,滑到下面可以看到
选择对应的版本
如果没有对应的版本,例如win64,可滑动到下面,选择其它版本
点击打开之后,可以看到有win64,点击下载即可
注意
Rc版本:全称release candidate 正式候选版,不建议选。
二、解压安装
解压压缩包,解压出来的文件目录
复制 bin文件路径 到 环境变量-系统变量Path
例如:D:\protoc-29.5-win64\bin
Win + R 打开运行窗口,输入
protoc --version
输出结果
安装成功!!
三、Protobuf的使用
官网文档:https://protobuf.com.cn/overview/
1、创建.proto文件
创建一个.proto文件
syntax = "proto3";
package contacts;message PeopleInfo{string name = 1;int32 age = 2;
}
我们需要在这个PeopleInfo.proto文件中完成一些初始化工作。比如:指定PB语法版本、为当前.proto文件中的数据指定作用域;
关键字 syntax
我们可以利用来指定当前.proto文件锁采用的语法版本
syntax = "proto3";
注意这个语法版本声明需要放在当前.proto文件的首行(注释不算一行),其次就是我们一般都是需要指定当前.proto文件所采用的语法版本为"proto3"的版本,如果不指定的话 .proto文件默认采用 proto2 语法进行编译,proto2语法相对于proto3语法在编程语言支持上没有proto3广,同时对于一些语法的支持也不是很好,为此实际开发中我们通常采用proto3语法来编译当前文件。
关键字 package
我们也可以为当前文件中定义的类声明一个命名空间,来避免不同 .proto之间的命名冲突的问题,这一点我们可以利用关键字来实现:
package contacts;
当然,这个命名空间的定义并不是强制的,但是为了养成良好的编程习惯,我们还是希望能将其定义出来。package 定义的命名空间在经过protoc编译器编译过后会变为C++中的namespace 命名空间,其中包含着在当前.proto文件中定义的各种类;
关键字 message
初始化工作都完成的差不多了,我们就可以开始定义类了,在.proto文件中定义类是利用 message 关键字来完成的
message PeopleInfo{string name = 1;int32 age = 2;
}
在message 定义的类中,我们只需要定义出该类所包含的属性即可,同时我们需要给这些属性进行编号,并且每个同级属性之间不能重复,这是PB语法要求的;
因此在message 中定义的字段格式如下:
message xx{//其中同级属性之间num不能重复type name = num;
}
2、利用protoc编译.proto文件
编译命令:
protoc --csharp_opt=. xx.proto
执行成功!
Test.cs 是编译后的结果,引入项目中使用即可。
Protobuf的使用可参考 https://blog.csdn.net/t5y22/article/details/142169446