学习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();
}
}

最新文章

  1. theano中的dimshuffle
  2. [转]新型智慧城市总体架构 华为 新ICT 一云二网三平台
  3. hdu 饭卡
  4. @RequestBody 的正确使用办法
  5. radio select的 option使用
  6. super 和this的用法
  7. sorts
  8. 设计模式之UML类图
  9. 50句高级SQL语句
  10. JAVA多态问题总结(课堂总结)
  11. ReactiveCocoa常用方法
  12. SCP“免密” 远程COPY较多文件
  13. MVVM命令绑定原理
  14. Redis持久化方案
  15. ADO.NET之Parameter属性
  16. leetcode — triangle
  17. 第四周助教工作总结——NWNU李泓毅
  18. SQL GROUP BY对多个字段进行分组
  19. SPSS SAS 是什么?
  20. python爬虫:抓取下载电影文件,合并ts文件为完整视频

热门文章

  1. ARM发展简史
  2. ORA-01400: cannot insert NULL into
  3. BD贴吧图片爬虫
  4. 设计不严谨 - Get参数传日期空格未转义字符出现截断请求,后端无法处理
  5. Angular.js分页代码
  6. [ZJOI2010]排列计数 题解
  7. Python语法基础03(if语句,while循环与for循环)
  8. (转)oracle group by 和order by的关系(在一起使用注意事项)
  9. 3、第一个Appium测试
  10. Flink 编程模型