.NET Core爱gRPC

2019-12-04 11:25:34 浏览数 (1)

这是微软.NET团队的项目经理Sourabh Shirhatti的一篇客座文章。

自2018年11月以来,微软的.NET团队一直与gRPC团队密切合作,为.NET Core开发新的完全托管的gRPC实现。

我们很高兴地宣布,grpc-dotnet现在已经可以在.NET Core 3.0使用了!

如何获得?

grpc-dotnet包刚刚发布到NuGet.org,已经可以在你的项目中使用。这些包还需要最新的.NET Core 3.0共享框架。你可以为开发机和构建服务器下载.NET Core 3.0 SDK,从.NET Core 3.0 download page下载页面来获取共享框架。

https://www.nuget.org/profiles/grpc-packages

https://aka.ms/netcore3download

开始

由于gRPC现在是.NET生态系统中的一等公民,所以.NET SDK中包含了gRPC模板。要开始,请在安装SDK后,到控制台窗口并运行以下命令。

代码语言:javascript复制
dotnet new grpc -o GrpcGreeter
cd GrpcGreeter
dotnet run

要创建一个gRPC客户端并使用新创建的gRPC Greeter服务进行测试,你可以按照本教程的其余部分进行操作。

https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/grpc/grpc-start

gRPC不是已经和.NET Core兼容了吗?

目前有两个官方gRPC给.NET的实现:

  • Grpc.Core:基于原生gRPC Core库的gRPC C#实现。 https://github.com/grpc/grpc/tree/master/src/csharp
  • grpc-dotnet:完全用C#编写的新实现,没有原生依赖,基于最新发布的.NET Core 3.0。 https://github.com/grpc/grpc-dotnet

这些实现并存,并且在可用特性、集成、支持平台、成熟度级别和性能方面各有优势。这两个实现共享调用和处理rpc的相同API,从而限制了锁定,并允许用户选择最能满足他们需求的实现。

有什么新鲜事吗?

与现有的基于C-Core的实现(Grpc.Core)不同,新的库(grpc-dotnet)利用了.NET Core Base Class Libraries(BCL)中现有的网络功能。下图突出显示了现有Grpc.Core和新的grpc-dotnet库之间的差异。

在服务器端,Grpc.AspNetCore.Server程序包集成到ASP.NET Core中,使开发者可以受益于日志、配置、依赖项注入、身份验证、授权等常见的跨领域问题,这些问题已由ASP.NET Core解决。现在,ASP.NET生态系统中的流行库,例如,Entity Framework Core(ORM)、Serilog(日志记录库)和Identity Server等,可与gRPC无缝协作。

在客户端,Grpc.Net.Client程序包基于作为.NET Core一部分提供的熟悉的HttpClient API构建。与服务器一样,gRPC客户端从基于HttpClient的软件包生态系统中受益匪浅。现在可以在gRPC客户端中使用现有的程序包,例如Polly(恢复力和故障处理库)和HttpClientFactory(管理HTTPClient生存期)。

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

除了作为grpc-dotnet的一部分新发布的包之外,我们还对两个栈都进行了改进。Visual Studio 2019提供了对protobuf文件的语言语法支持,并在保存protobuf文件时自动生成gRPC服务器/客户端代码,而无需根据设计时构建进行全面的项目重构。

反馈

我们对于为.NET开发者改进gRPC体验感到非常兴奋。请尝试一下,让我们在grpc-dotnet问题跟踪器上了解你可能遇到的任何特性想法或bug。

https://github.com/grpc/grpc-dotnet/issues

0 人点赞