首页 > Web开发 > 详细

NetCore grpc框架初识

时间:2020-03-08 00:54:50      阅读:105      评论:0      收藏:0      [点我收藏+]

     作为B-S架构的软件开发遵循一定原则,其中调用接口要求轻协议,所以Restfull Api 就开始受到广泛推,但是作为http协议的代码在调用的时候往往需要通zhong过httpRequest等网络请求模式 并且返回的数据都是基于html/text 的格式一般以JSON格式返回,但因为这样调用方式并不友好,因此remote api 顺应了发展趋势(类似WCF WebService )但WCF Websevice 往往又比较重协议。

      废话不多说先上一段代码来演示grpc的应用。

    1.服务端 

      技术分享图片

      技术分享图片

 

 

  <ItemGroup>
    <Protobuf Include="Protos\greet.proto" GrpcServices="Server" />
  </ItemGroup>

在项目文件中增加上述配置,并编译项目,然后添加如下服务代码

    public class GreeterService : Greeter.GreeterBase
    {
        private readonly ILogger<GreeterService> _logger;
        public GreeterService(ILogger<GreeterService> logger)
        {
            _logger = logger;
        }

        public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
        {
            return Task.FromResult(new HelloReply
            {
                Message = "Hello " + request.Name
            });
        }
    }
}

Greeter.GreeterBase 是基于 greet.proto 的模板生成的代码。至此服务端代码生成完毕。
 
//在启动页增加终结点配置。
    app.UseEndpoints(endpoints =>
            {
                endpoints.MapGrpcService<GreeterService>();

                endpoints.MapGet("/", async context =>
                {
                    await context.Response.WriteAsync("Communication with gRPC endpoints must be made through a gRPC client. To learn how to create a client, visit: https://go.microsoft.com/fwlink/?linkid=2086909");
                });
            });

 

 启动服务

技术分享图片

 

 

 

 客户端调用grpc 服务

  创建一个控制台客户端,并且通过nuget 引用 Google.Protobuf Grpc.Net.Client  Grpc.Tools 包,然后编译代码生成

  技术分享图片

 

  class Program
    {
        static async Task Main(string[] args)
        {
            var channel = GrpcChannel.ForAddress("https://localhost:5001");
            var client = new Greeter.GreeterClient(channel);
            var reply = await client.SayHelloAsync(
                new HelloRequest { Name = "老毛" });

            Console.WriteLine("Greeter 服务返回数据: " + reply.Message);
            Console.ReadKey();
        }
    }

 

运行控制台,至此一个由客户端调用grpc 远程服务的 web api 格式生成完毕。

 

NetCore grpc框架初识

原文:https://www.cnblogs.com/ms_senda/p/12439250.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!