.NetCore3.0如何使用gRPC

.Net Core3.0如何使用gRPC,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

成都创新互联是一家集网站建设,福清企业网站建设,福清品牌网站建设,网站定制,福清网站建设报价,网络营销,网络优化,福清网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

gRPC是什么

gRPC是可以在任何环境中运行的现代开源高性能RPC框架。它可以通过可插拔的支持来有效地连接数据中心内和跨数据中心的服务,以实现负载平衡,跟踪,运行状况检查和身份验证。它也适用于分布式计算的最后一英里,以将设备,移动应用程序和浏览器连接到后端服务。

proto文件

用于定义gRPC服务和消息的协定;服务端和客户端共享proto文件。

使用新模板创建gRPC服务端

.NETcore 3.0创建项目提供了一个新的gRPC模板,可以轻松地使用ASP.NET Core构建gRPC服务。我们按照步骤一步一步创建AA.GrpcService 服务,当然你可以使用命令:dotnet new grpc -o GrpcGreeter

 选择gRPC服务项目模板

.Net Core3.0如何使用gRPC

最终生成的项目

.Net Core3.0如何使用gRPC

greet.proto文件
syntax = "proto3";
option csharp_namespace = "AA.GrpcService";
package Greet;
// The greeting service definition.service Greeter {  // Sends a greeting  rpc SayHello (HelloRequest) returns (HelloReply);}
// The request message containing the user's name.message HelloRequest {  string name = 1;}
// The response message containing the greetings.message HelloReply {  string message = 1;}
GreeterService.cs

public class GreeterService : Greeter.GreeterBase    {        private readonly ILogger _logger;        public GreeterService(ILogger logger)        {            _logger = logger;        }
       public override Task SayHello(HelloRequest request, ServerCallContext context)        {            return Task.FromResult(new HelloReply            {                Message = "Hello " + request.Name            });        }    }
Startup.cs

public void ConfigureServices(IServiceCollection services)        {            services.AddGrpc();        }
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)        {            if (env.IsDevelopment())            {                app.UseDeveloperExceptionPage();            }
           app.UseRouting();
           app.UseEndpoints(endpoints =>            {                endpoints.MapGrpcService();
               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");                });            });        }

创建完成之后,自动包含了包的引用、proto文件的创建、services服务的生成,模板项目在后台执行一些操作如

  • 创建一个包含所有gRPC依赖项的ASP.NET Core项目。

  • 创建一个名为的gRPC服务定义文件greet.proto。

  • 根据服务定义文件自动生成所有gRPC存根。

  • GreeterService.cs根据自动生成的gRPC存根创建gRPC服务。

  • 在Startup.cs中配置gRPC管道映射到GreeterService.cs

运行服务

.Net Core3.0如何使用gRPC

创建gRPC客户端

下面,我们创建一个控制台应用程序作为客户端调用gRPC服务;

.Net Core3.0如何使用gRPC

引用gRPC服务,步骤:右键项目添加=》服务引用弹出以下页面;

.Net Core3.0如何使用gRPC

点击确定

.Net Core3.0如何使用gRPC

.Net Core3.0如何使用gRPC

我们看项目结构,他们会自动帮我们处理一下操作:
  • 添加引用包:

  1.  package Grpc.Net.ClientFactory

  2.  package Google.Protobuf

  3.  package Grpc.Tools

  • Protos 文件(包含greet.proto)自动从AA.GrpcService项目拷贝

  • 自动添加节点

          Protos\greet.proto      
最后,添加以下代码进行gRPC请求;

class Program    {        static async Task Main(string[] args)        {            using var channel = GrpcChannel.ForAddress("https://localhost:5005");            var client = new Greeter.GreeterClient(channel);            var response = await client.SayHelloAsync(new HelloRequest { Name = "gRPC" });            Console.WriteLine("Greeting:" + response.Message);            Console.WriteLine("Press a key to exit");            Console.ReadKey();        }    }

运行结果图:

.Net Core3.0如何使用gRPC

关于.Net Core3.0如何使用gRPC问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


网站名称:.NetCore3.0如何使用gRPC
文章路径:http://hbruida.cn/article/gheogo.html