Protobuf安装使用方法

特点: Google 出品开源免费、跨平台、支持c#、且数据体量更小、解析速度更快。用VSCODE编辑比较方便,适合用于传输客户端和服务器的各种协议(客户端的各种Request和服务端返回的Response)。


一、安装使用

  1. 下载地址:

链接:https://pan.baidu.com/s/1VatB-lPpKfk5tCZ0drW3xA
提取码:sf3y

  1. 使用方法(C#

123

  • 解压后,打开genproto.cmd文件,并更改一下目录的路径:

–proto_path=.proto文件的目录

–csharp_out=.cs文件的输出目录

  • message.proto即proto目录下的protobuf文件,新建1个txt更改后缀,用vscode之类的编辑即可

    比如:

    syntax = "proto3";
    package Test.Message;
    option csharp_namespace = "Test.Message";
    enum TEST
    {
    	A = 0;
    	B = 1;
    }
    message Testmsg
    {
        int32 num=1;
        TEST test =2;
    }
    
    
  • 建好目录后运行genproto.cmd文件

  • 输出目录下自动生成message.cs

  • 将生成的cs项目包含到c#项目中

  • 项目中安装Nuget包:protobuf-net(Nuget管理器中浏览-搜索-安装)

  • using调用Test.Message,OK


二、常用语法

syntax=“proto3”;

文件的第一行指定了你使用的是proto3的语法:如果你不指定,protocol buffer 编译器就会认为你使用的是proto2的语法。这个语句必须出现在.proto文件的非空非注释的第一行。

package user;

编译完成之后,包名为user

service 定义服务

service UserService {
  rpc Login(LoginRequest) returns (LoginResponse);
}

message 定义结构体

message LoginRequest {
	string username=1;
	string password=2;
}

数据类型

  • strings 默认值是空字符串
  • int32 默认是0(编译之后为go语言中的int类型)
  • int64 默认是0 (编译之后为go语言中的int64)
  • float 默认为0.0 (编译之后为go语言中的 float32)
  • double 默认为0.0 (编译之后为go语言中的 float64)
  • uint32 (编译之后为go语言中的 uint32)
  • uint64 (编译之后为go语言中的 uint64)
  • bytes 默认值是空bytes
  • bool 默认值是false
  • enum 默认值是第一个枚举值(value必须为0)

字段修饰符

  • repeated:用来定义数组,一个字段可以重复出现一定次数(包括零次)
  • required:值不可为空 (proto3中已删除)
  • optional:可选字段 (proto3中已删除)
  • singular:符合语法规则的消息包含零个或者一个这样的字段 (proto3中已删除)
  • 默认值: string code=2 [default=200]; (proto3中已删除)
  • 预留字段:reserved 6 to 8;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShallsenSalt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值