RSS

.NET Core ❤ gRPC

自 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 下载页面 为您的开发机器和构建服务器下载 .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 Core 库的原始 gRPC C# 实现。
  • grpc-dotnet:完全用 C# 编写的新实现,没有原生依赖项,并且基于新发布的 .NET Core 3.0。

这两种实现并存,并且在可用功能、集成、支持的平台、成熟度和性能方面各有优势。这两种实现共享相同的 API 来调用和处理 RPC,从而限制锁定并使用户能够选择最能满足他们需求的实现。

有什么新功能?

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

gRPC .NET Stack

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

在客户端方面,Grpc.Net.Client 包构建于熟悉的 HttpClient API 之上,该 API 作为 .NET Core 的一部分提供。与服务器端一样,gRPC 客户端也极大地受益于构建在 HttpClient 之上的包生态系统。现在可以使用诸如 Polly(弹性与故障处理库)HttpClientFactory(管理 HTTPClient 生命周期) 等现有包来使用 gRPC 客户端。

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

grpc-dotnet packages

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

gRPC in Visual Studio 2019

反馈

我们很高兴能够改善 .NET 开发人员的 gRPC 体验。请尝试一下,并使用 grpc-dotnet 问题跟踪器 告知我们您可能遇到的功能想法或错误。