.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` 构建的包生态系统。现在可以将现有包(例如 **Polly**(弹性与故障处理库) 和 HttpClientFactory(管理 HTTPClient 生命周期))与 gRPC 客户端配合使用。
下图列出了所有新的 .NET gRPC 包及其与现有包的关系。
除了作为 **grpc-dotnet** 一部分发布的新包之外,我们还进行了改进,使这两个栈都受益。Visual Studio 2019 支持 protobuf 文件的语言语法,并在保存 protobuf 文件时自动生成 gRPC 服务器/客户端代码,而无需因设计时构建而进行完整的项目重建。


反馈
我们很高兴能改善 .NET 开发人员的 gRPC 体验。欢迎试用,并通过 grpc-dotnet 问题追踪器 告知我们您遇到的功能想法或错误。