.NET Core ❤ gRPC
Microsoft 的 .NET 团队自 2018 年 11 月以来,一直与 gRPC 团队紧密合作,致力于开发一个全新的、用于 .NET Core 的 gRPC 完全托管实现。
我们很高兴地宣布,grpc-dotnet 现已随 .NET Core 3.0 发布!
如何获取?
grpc-dotnet 包刚刚发布到 NuGet.org,并且已可在您的项目中使用。这些包还需要最新的 .NET Core 3.0 共享框架。您可以从 .NET Core 3.0 下载页面 下载用于您的开发机器和构建服务器的 .NET Core 3.0 SDK,以获取共享框架。
入门指南
由于 gRPC 现已成为 .NET 生态系统中的一等公民,gRPC 模板已作为 .NET SDK 的一部分包含在内。要开始使用,请在安装 SDK 后打开一个控制台窗口,并运行以下命令。
dotnet new grpc -o GrpcGreeter
cd GrpcGreeter
dotnet run
要创建 gRPC 客户端并使用新创建的 gRPC Greeter 服务进行测试,您可以 参见此处教程的其余部分。
gRPC 不是已经支持 .NET Core 了吗?
目前有两种用于 .NET 的 gRPC 官方实现
- Grpc.Core: 原始的 gRPC C# 实现,基于原生 gRPC Core 库。
- grpc-dotnet: 完全使用 C# 编写的新实现,没有原生依赖,并基于新发布的 .NET Core 3.0。
这两种实现并存,并且在可用特性、集成、支持的平台、成熟度和性能方面各有优势。两种实现共享用于调用和处理 RPC 的相同 API,从而限制了锁定,并使用户能够选择最能满足其需求的实现。
有哪些新特性?
与现有的基于 C-Core 的实现 (Grpc.Core) 不同,新库 (grpc-dotnet) 利用了 .NET Core 基类库 (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
构建的包的生态系统。现已可以使用现有包,例如 Polly(弹性与故障处理库) 和 HttpClientFactory(管理 HTTPClient 生命周期),与 gRPC 客户端一同使用。
下面的图表包含了所有用于 gRPC 的新 .NET 包的完整列表,以及它们与现有包的关系。
除了作为 grpc-dotnet 的一部分发布的新包之外,我们还进行了一些改进,这些改进对两种技术栈都有益。Visual Studio 2019 附带了对 protobuf 文件的语言语法支持,以及在保存 protobuf 文件时自动生成 gRPC 服务器/客户端代码的功能,得益于设计时构建,无需完整重建项目。


反馈
我们对改善 .NET 开发者使用 gRPC 的体验感到兴奋。尝试一下,并通过 grpc-dotnet 问题跟踪器 告诉我们您可能遇到的功能想法或 bug。