.NET Core ❤ gRPC

  • 2019 年 10 月 17 日
  • 筆記

这篇内容主要来自Microsoft .NET团队程序经理Sourabh Shirhatti的博客文章:https://grpc.io/blog/grpc-on-dotnetcore/, .NET Core 3.0现已提供grpc的.NET 托管实现 grpc-dotnet, gRpc 取代WCF成为 .NET的一等公民。自2018年11月以来,Microsoft的.NET团队一直与gRPC团队密切合作,共同开发适用于.NET Core的gRPC的全新完全托管实现。

gRpc 有非常多的公司在使用,比如 Salesforce,Netflix,Spotify,Fanatics等公司(当然还有Google),特别是整个CNCF 主导下的云原生应用开发生态里gRpc 有着举足轻重的地位。

.NET目前有两种正式的gRPC实现:

  • Grpc.Core:基于本地gRpc Core库的原生 gRpc C#实现,支持.NET Core 2.1/.NET Framework 4.5+/Mono 4+ 。
  • grpc-dotnet:完全以C#编写的新实现,没有任何本机依赖性,并且基于最新发布的.NET Core 3.0。

这两种实现并排共存,并且在可用功能,集成,支持的平台,成熟度和性能方面各有各的优势。两种实现共享用于调用和处理RPC的相同API,用户能够选择最能满足其需求的实现,而不会限制你必须使用某个平台。

与现有的基于C-Core的实现(Grpc.Core)不同,新库(grpc-dotnet)使用.NET Core基本类库(BCL)中的现有网络实现。下图突出显示了现有的Grpc.Core库和新的grpc-dotnet库之间的区别。

gRPC .NET堆栈

在服务器端,Grpc.AspNetCore.Server软件包集成到ASP.NET Core中,使开发人员受益于ASP.NET Core已解决的日志,配置,依赖项注入,身份验证,授权等常见的交叉问题。现在,ASP.NET生态系统中的流行库(例如,实体框架核心(ORM)Serilog(日志记录库)Identity Server等)与gRPC无缝协作。

在客户端,该Grpc.Net.Client软件包建立在HttpClient作为.NET Core一部分提供的熟悉的API的基础上。与服务器一样,gRPC客户端也从基于的软件包HttpClient的生态系统中 受益匪浅。 现在可以在gRPC客户端中使用现有的程序包,例如PollyHttpClientFactory(管理HTTPClient生命周期)

image

下图列出了gRPC的所有新.NET软件包的详尽列表,以及它们与现有软件包的关系。

grpc-dotnet软件包

Visual Studio 2019 对protobuf文件的语言语法提供了支持,并在保存protobuf文件时自动生成gRPC服务器/客户端代码,而无需由于设计时构建而需要完全重新编译项目。

gRpc 这么好用如何入门呢 ,微软的文档给我们准备了很详细,具体参见: https://docs.microsoft.com/zh-cn/aspnet/core/grpc/?view=aspnetcore-3.0 

前面我们提到了gRpc 取代WCF成为 .NET的一等公民,我们一定很怀念WCF那种利用代码定义服务锲约的方式,你一定会记得还有一个protobuf 开源实现protobuf-net: https://github.com/protobuf-net , 我以前在腾讯IT 使用WCF + Protobuf 构建微服务的系统,用的也是protobuf-net 这个库,而不是用WCF自带的二进制序列化,获得了更高的负载处理能力。protobuf-net.Grpc 使用本机Grpc.CoreAPI或完全托管的Grpc.Net.Client/ Grpc.AspNetCore.ServerAPI 在gRPC上添加对服务的代码优先支持。

 

image

.NET 团队还准备了一个电子书《适用于 WCF 开发人员的 ASP.NET Core gRPC》 https://dotnet.microsoft.com/learn/aspnet/architecture#grpc-for-wcf-devs-ebook-swim 对应的代码仓库:https://github.com/dotnet-architecture/grpc-for-wcf-developers

gRPC for WCF Developers

 

微软通过https://dapr.io/ 在尝试尝试整合service fabric, functions 和actors. 十分轻量, 可以运行在k8s上,单机上,iot设备上,dapr还是一种新的编程模式,通过sidecar把微服务需要的功能通过http/grpc接进来,也可以和istio一起用的,也可以单独用。

参考文档

 

 

中国 .NET 开发者峰会

2019年11月9日 09:00-18:00

中国 上海

门票优惠

10月20日前购票可享受早鸟票100元优惠,只需199,限量300张,先到先得;超级早鸟票及社区特价票需要审核资料;购买团体票(大于10张)享受整单8折优惠,请通过邮箱联系主办方 [email protected]

https://www.huodongxing.com/event/4514005355700