protobuf3的学习笔记
2024-10-07 18:25:56
学习protobuf的过程中踩了不少的坑,这篇博文算是一个小结吧!
环境:
windows
VisualStudio
Google.Protobuf.Tools.3.9.
Google.Protobuf.3.9.
其中,Google.Protobuf.Tools.3.9.1与Google.Protobuf.3.9.1这两个程序集都是通过NuGet下载的,使用的是proto3协议,与proto2协议有些与不同,博文的后续有相关的体现。
编译:
1.构建.proto文件
这里先构建一个普通的.proto文件,文件名为MyRequest.proto,文件内容如下:
syntax = "proto3"; message SearchRequest {
string query = ;
int32 page_number = ;
int32 result_per_page = ;
}
这种标记文件的语法网上有很多,童靴们可以自己搜索。
这里需要注意的是,文件首个非空、非注释的行必须注明pb的版本,即syntax = "proto3";
,否则默认版本是proto2。
2.生成对应cs文件
按照下面的命令生成对应的cs文件。
protoc --csharp_out=./ MyRequest.proto
这里需要使用Google.Protobuf.Tools.3.9.1(位于该项目的package文件夹内)程序集下的protoc程序,可以使用protoc --help查看该程序的使用方法。
应用
class Program
{
static void Main(string[] args)
{
var s = new SearchRequest();
s.Query = "haha";
s.ResultPerPage = ;
s.PageNumber = ;
byte[] bs = s.ToByteArray();
var d = new SearchRequest();
//获取到字节数组后,就可以反序列化为一个对象了
d.MergeFrom(bs);
Console.WriteLine(d.Query);
Console.ReadKey();
}
}
最新文章
- theano中的dimshuffle
- [转]新型智慧城市总体架构 华为 新ICT 一云二网三平台
- hdu 饭卡
- @RequestBody 的正确使用办法
- radio select的 option使用
- super 和this的用法
- sorts
- 设计模式之UML类图
- 50句高级SQL语句
- JAVA多态问题总结(课堂总结)
- ReactiveCocoa常用方法
- SCP“免密” 远程COPY较多文件
- MVVM命令绑定原理
- Redis持久化方案
- ADO.NET之Parameter属性
- leetcode — triangle
- 第四周助教工作总结——NWNU李泓毅
- SQL GROUP BY对多个字段进行分组
- SPSS SAS 是什么?
- python爬虫:抓取下载电影文件,合并ts文件为完整视频