.net grpc proto 文件生成

1:首先使用vs创建proto文件,例如:我创建的my.proto文件如下:

syntax = "proto3";

 
package MyGrpc;

//服务名称

service MsgService {

//函数名称  (入参)retrurns(出参)
  rpc Send (MsgRequest) returns (MsgResponse);
}
 
message MsgRequest{
string req=1;//定义入参实体
}
message MsgResponse{
string res=1;//定义出参实体
}

2:nuget下载Grpc.Core、Google.Protobuf

3:找到项目中packages文件夹目录,在该目录上输入cmd,

然后输入命令:

packages\Grpc.Tools.2.39.1\tools\windows_x64\protoc.exe (程序路径)

-I Protos(-I 指定一个或者多个目录,用来搜索.proto文件的,如果不指定,那就是当前目录,因为-I已经指定了Protos,所以是找Protos目录下的.proto文件。)

--csharp_out Protos (生成C#代码的路径,代码生成在Protos目录下)

Protos\my.proto(proto文件地址)

--grpc_out Protos(输出路径)

--plugin=protoc-gen-grpc=packages\Grpc.Tools.2.39.1\tools\windows_x64\grpc_csharp_plugin.exe

完整的语句:

packages\Grpc.Tools.2.39.1\tools\windows_x64\protoc.exe -I Protos --csharp_out Protos Protos\my.proto --grpc_out Protos --plugin=protoc-gen-grpc=packages\Grpc.Tools.2.39.1\tools\windows_x64\grpc_csharp_plugin.exe

执行完毕后会在指定的文件夹中生成两个文件

服务端:

 Server server = new Server
            {
                Services = { MyGrpc.MsgService.BindService(new FirstGrpc()) },
                Ports = { new ServerPort("127.0.0.1", 18201, ServerCredentials.Insecure) }
            };

            server.Start();
            Console.Read();
            server.ShutdownAsync().Wait();

    public class FirstGrpc : MsgService.MsgServiceBase
    {
        public override Task<MsgResponse> Send(MsgRequest request, ServerCallContext context)
        {        return Task.FromResult(new MsgResponse { Res = $"1" });

}

}

客户端:

            Channel channel = new Channel("127.0.0.1:18201", ChannelCredentials.Insecure);
            var client = new MsgService.MsgServiceClient(channel);

            var replay = client.Send(new MsgRequest { Req = “内容” });
 
            channel.ShutdownAsync().Wait();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

费劲_奋进

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

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

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

打赏作者

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

抵扣说明:

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

余额充值