tnblog
首页
登录

.net core 3.0 gRPC自定义服务

84人阅读 2020/1/31 21:56 总访问:134751 评论:0 手机 收藏
分类: .NET Core


服务器端


右键Protos文件夹-->新建一个.proto,选择协议缓冲区文件,用于描述gRPC的消息和服务

名字随便取,这里就叫UpImg吧

然后把包名,服务名称,参数和返回值名称都修改一下

把默认的方法名SayHello和参数与返回值也修改一下

修改成我们自己定义的参数和返回值

新建一个UpImgService,实现我们刚刚上面定义的gRPC服务描述UpImg.proto

注意直接实现是找不到新建的服务的

因为还没有在obj\Debug\netcoreapp3.0下面生成相应的类

需要双击我们项目编辑csproj文件,把新建的UpImg.proto加入到配置中

加入配置中后保存一下在obj\Debug\netcoreapp3.0中即可生成相应的类

然后继续实现UpImg.proto,实现很简单注意参数和放回值即可


客户端

客户端需要添加包:Grpc.Net.Client、Google.Protobuf、Grpc.Tools

  <ItemGroup>
    <PackageReference Include="Google.Protobuf" Version="3.11.2" />
    <PackageReference Include="Grpc.Net.Client" Version="2.26.0" />
    <PackageReference Include="Grpc.Tools" Version="2.26.0">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
  </ItemGroup>


把UpImg.proto复制到客户端中的Proto(这里使用的是直接复制进去)


同样在客户端加入配置,加入配置和客户端会自动生成相应的代码

然后调用即可:

public async void UpLoad()
{
    //设置允许不安全的HTTP2支持
    AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
    var channel = GrpcChannel.ForAddress("http://localhost:50001");
    var client = new UpImg.UpImgClient(channel);
    var reply = await client.DoUpLoadAsync(new UpImgRequest { Img = "hello girl" });
    Console.WriteLine(reply.Message);
}



评价
很多事不是看到了希望才去努力,而是努力了才能看到希望
排名
6
文章
6
粉丝
16
评论
8
{{item.ArticleTitle}}
{{item.BlogName}} : {{item.Content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2020TNBLOG.NET