.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 构建。
这两种实现共存,它们在可用功能、集成性、支持的平台、成熟度及性能方面各有千秋。两种实现共享相同的 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 构建的程序包生态系统。现在,可以在 gRPC 客户端中使用现有的库,如 Polly(弹性与故障处理库) 和 HttpClientFactory(管理 HttpClient 生命周期)。
下图涵盖了所有新的 .NET gRPC 程序包及其与现有程序包关系的详尽列表。
除了作为 grpc-dotnet 一部分发布的新程序包外,我们还进行了惠及两个技术栈的改进。Visual Studio 2019 提供了 protobuf 文件的语言语法支持,并且在保存 protobuf 文件时会自动生成 gRPC 服务器/客户端代码,无需因设计时构建而进行完整的项目重建。


反馈
我们很高兴能改善 .NET 开发者的 gRPC 体验。请尝试使用,并通过 grpc-dotnet 问题追踪器 将您遇到的任何功能点子或 Bug 反馈给我们。