• NetCore grpc框架初识


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

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

        1.服务端 

          

          

      <ItemGroup>
        <Protobuf Include="Protosgreet.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 格式生成完毕。

  • 相关阅读:
    mysql正则表达式
    阿里云OSS 获取目录下所有文件
    docker 部署mvc项目 <四>
    docker部署项目 <三>
    docker 安装mysql数据库 <二>
    docker安装 <一>
    安装 Docker <一>
    Mongodb字段自增长
    EF的使用<三>
    EF 简单介绍<一>
  • 原文地址:https://www.cnblogs.com/ms_senda/p/12439250.html
Copyright © 2020-2023  润新知