温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

.Net Core3.0如何使用gRPC

发布时间:2021-07-30 16:28:21 来源:亿速云 阅读:113 作者:Leah 栏目:大数据

.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<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            });        }    }
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<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");                });            });        }

创建完成之后,自动包含了包的引用、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项目拷贝

  • 自动添加节点

<ItemGroup>    <Protobuf Include="..\AA.GrpcService\Protos\greet.proto" GrpcServices="Client">      <Link>Protos\greet.proto</Link>    </Protobuf>  </ItemGroup>
最后,添加以下代码进行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问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI