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

protobuf3的学习笔记的更多相关文章

  1. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  2. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  3. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  4. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  5. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  6. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  7. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

  8. HTML学习笔记

    HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...

  9. DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记

    今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...

随机推荐

  1. shell常见的返回状态码

  2. Shell 变量的分类

  3. 【CSS】水平居中与垂直居中

    有宽度的div水平居中 1.左右margin设为auto即可 .center { width: 960px; margin-left: auto; margin-right: auto; } 2.绝对 ...

  4. mysql 中字符串拼接,查询sql语句总结

    DELIMITER $$ USE `ld_wpfmgl_sys`$$ DROP PROCEDURE IF EXISTS `code_query`$$ CREATE DEFINER=`root`@`%` ...

  5. MySQL中可能遇到的问题及解决方法

    一.在创建存储函数时,出现错误: ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQLDA ...

  6. nc临时开启端口并监听

    port="6379 3306 27017 4505 4506 24007 24008 49152" #while true #do for i in $port do isexi ...

  7. Java刷题笔记

    能用StringBuffer的时候坚决不要用String,因为前者的时间和空间效率都更高. 牛顿法求平方根:随便找一个K,然后不断让 k=(k+x/k)/2;直到K的平方与x之间的差距小于限定值. 斐 ...

  8. 【LeetCode 12】整数转罗马数字

    题目链接 [题解] (涨知识了..原来罗马数字是这么回事.. 把{1,4,5,9,10,40,50,90,100,400,500,900,1000}这些东西的罗马数字放在一个数组里面. 每次从大到小减 ...

  9. 工程师技术(二):postfix基础邮件服务、postfix空客户端邮件服务、搭建mariadb数据库系统、配置一个数据库、使用数据库查询

    一.postfix基础邮件服务 目标: 本例要求在虚拟机server0上配置 postfix 基础服务,具体要求如下: 1> 监听本机的所有接口    2> 将邮件域和邮件服务主机名都改为 ...

  10. Python的从头再来

    虽然各种视频,文档看了不少.但是都没有系统的总结.现在要把Python从最基础开始总结,回归.也当作自己的复习.