gRPC是什么

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

proto文件

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

使用新模板创建gRPC服务端

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

选择gRPC服务项目模板

最终生成的项目

greet.proto文件

GreeterService.cs

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

运行服务

创建gRPC客户端

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

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

点击确定

我们看项目结构,他们会自动帮我们处理一下操作:

  • 添加引用包:

  1. package Grpc.Net.ClientFactory

  2. package Google.Protobuf

  3. package Grpc.Tools

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

  • 自动添加节点

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();  }   }

运行结果图:

小结:.NETcore 3.0 使得使用gRPC是非常方便集成到项目中,希望这篇文章使你可以了解.NETcore与gRPC结合使用。那gRPC适用于以下场景

  • 微服务– gRPC专为低延迟和高吞吐量通信而设计。gRPC对于效率至关重要的轻量级微服务非常有用。

  • 点对点实时通信– gRPC对双向流具有出色的支持。gRPC服务可以实时推送消息而无需轮询。

  • 多种语言环境– gRPC工具支持所有流行的开发语言,因此gRPC是多语言环境的理想选择。

  • 网络受限的环境– gRPC消息使用轻量级消息格式Protobuf进行了序列化。gRPC消息始终小于等效的JSON消息。

参考:

  • https://docs.microsoft.com/zh-cn/aspnet/core/grpc/?view=aspnetcore-3.0

  • https://www.grpc.io/

  • https://developers.google.com/protocol-buffers/docs/proto3

  • https://www.cnblogs.com/stulzq/p/11581967.html

相关文章

.Net Core3.0使用gRPC相关推荐

  1. vs2019中如何创建qt项目_VS2019创建新项目居然没有.NET Core3.0的模板?

    今天是个值得欢喜的日子,因为VS2019在今天正式发布了.作为微软粉,我已经用了一段时间的VS2019 RC版本了.但是,今天有很多小伙伴在我的<ASP.NET Core 3.0 上的gRPC服 ...

  2. linux安装.net core3.0,树莓派4安装net core3.0环境

    树莓派4官方系统是32系统,所以需要安装arm32版本的net core sk和runtime 1,首先创建一个文件夹 dotnet-arm32 sudo mkdir dotnet arm32 2,下 ...

  3. 兼容 .NET Core3.0, Natasha 框架实现 隔离域与热编译操作

    关于 Natasha    动态构建已经成为了封装者们的家常便饭,从现有的开发趋势来看,普通反射性能之低,会迫使开发者转向EMIT/表达式树等构建方式,但是无论是EMIT还是表达式树,都会依赖于反射的 ...

  4. EF Core3.0+ 通过拦截器实现读写分离与SQL日志记录

    前言 本文主要是讲解EF Core3.0+ 通过拦截器实现读写分离与SQL日志记录 注意拦截器只有EF Core3.0+ 支持,2.1请考虑上下文工厂的形式实现. 说点题外话.. 一晃又大半年没更新技 ...

  5. 在.net core3.0中使用SignalR实现实时通信

    最近用.net core3.0重构网站,老大想做个站内信功能,就是有些耗时的后台任务的结果需要推送给用户.一开始我想简单点,客户端每隔1分钟调用一下我的接口,看看是不是有新消息,有的话就告诉用户有新推 ...

  6. .Net Core3.0 日志 logging

    多年的经验,日志记录是软件开发的重要组成部分.没有日志记录机制的系统不是完善的系统.在开发阶段可以通过debug附件进程进行交互调试,可以检测到一些问题,但是在上线之后,日志的记录起到至关重要的作用. ...

  7. 使用.net core3.0 正式版创建Winform程序

    前阵子一直期待.net core3.0正式版本的出来,以为这个版本出来,Winform程序又迎来一次新生了,不过9.23日出来的马上下载更新VS,创建新的.net core Winform项目,发现并 ...

  8. 【A】兼容Core3.0后 Natasha 的隔离域与热编译操作。

    文章转载授权级别:A         预计阅读时间:15分钟 一.  2.0预览版本增加了哪些功能 大部分为底层的升级优化,例如: 引擎兼容 Core3.0 优化编译流程,增加编译前语法检测及日志,统 ...

  9. vs winform常用函数_使用.net core3.0 正式版创建Winform程序

    前阵子一直期待.net core3.0正式版本的出来,以为这个版本出来,Winform程序又迎来一次新生了,不过9.23日出来的马上下载更新VS,创建新的.net core Winform项目,发现并 ...

最新文章

  1. 《UNIX高级环境编程》 -- apue.h
  2. iOS上的jQuery.on()冒泡事件绑定 以及 iOS绝对定位元素中的输入框
  3. 怎样使用python替代shell?
  4. MySQL高级配置(二)详细介绍
  5. win10安装java不见了,win10安装java以及java配置遇到的坑
  6. mysql读写分离实战准备一
  7. 1)机器学习基石笔记Lecture1:The Learning Problem
  8. Python 入门,看这篇就够了
  9. Spark分组取TopN
  10. 因果推断与反事实预测——几篇关联论文(二十六)
  11. 杭电 2016 计算机组成原理,杭电计算机组成原理多功能ALU设计实验
  12. 基于单片机的超市储物柜设计_毕业设计论-单片机储物柜
  13. 计算机常见知识大全,电脑基本知识
  14. 目标跟踪经典论文阅读(1)MOSSE
  15. IPv4 至 IPv6改造过渡方案
  16. win10右键一直转圈_windows10为何鼠标右键一点桌面就一直转圈?
  17. 已解决ModuleNotFoundError: No module named ‘frontend‘
  18. 鸿蒙2.0 134个仓库扼要说明
  19. golang直接调用ffmpeg预编译类库(windows)
  20. 一,这份333页关于性能优化知识点的PDF你不能不看

热门文章

  1. 相机模拟光圈_我的相机应该使用什么光圈?
  2. 数据同步云端本地_如何从云端删除Windows 8的同步数据
  3. dvd vlc 复制_如何使用VLC翻录DVD
  4. 三元表达式,递归,匿名函数,内置函数
  5. 用Vue搭建一个应用盒子(二):datetime-picker
  6. MyEclipse的Git配置
  7. 继续送假期干货——响应式图片工具smartImg
  8. windows phone 8 的新特性
  9. C#得到CPU的序列号、硬盘序列号、网卡序列号
  10. Java ClassLoader