微服务重大利好消息:微软官方重磅推出. net core 3.0—GRPC 支持
grpc 通讯图 GRPC 顾名思义也是一类 RPC 协议,其由 google 推出,是一款语言中立、平台中立、开源的远程过程调用 (RPC) 系统, 其基于 HTTP/2 ,多种编程语言支持,采用 ProtoBuf 定义的 IDL,多种技术手段使其社区目前异常活跃。
grpc 通讯图
GRPC 顾名思义也是一类 RPC 协议,其由 google 推出,是一款语言中立、平台中立、开源的远程过程调用 (RPC) 系统, 其基于 HTTP/2 ,多种编程语言支持,采用 ProtoBuf 定义的 IDL,多种技术手段使其社区目前异常活跃。
微服务的通信基础
大家都知道,按照微服务拆分后,不同的微服务间通讯就成为了了选项架构必须考虑的地方,而基于. net core 平台的微服务更是处于比较尴尬的地步,由于没有官方的支持,所以对各种 RPC 的应用和集成也是一个繁重的工作,并且涉及到通讯,大部分开发工程师并不精于此道,大都避让三舍。
曙光
当然 google 早就推出了 C# 版的 grpc 类库,微软的 grpc.net 团队称其为 “官方 “,这个你懂得,最好用无右微软。
微软 grpc 团队的名称是 **gRPC for dotnet,**github 地址:https:XX github.com/grpc/grpc-dotnet, 预计会和. net core 3.0 正式版一块推出,如果等不及,可以下载预览版看看。
微软计划实现一个完全托管的 gRPC for .NET 版本,该版本将构建在 ASP.NET Core HTTP / 2 服务器之上。以下是一些主要功能:
- API 与现有的 gRPC C#实现兼容(您现有的服务实现应该只需最少的调整)
- 与其他 gRPC 实现完全互操作(在其他语言和其他平台中)
- 与 ASP.NET Core 生态系统的其余部分良好集成
- 高性能(我们计划利用 ASP.NET Core 和. NET 平台本身的一些前沿性能特性)
- 我们计划提供一个托管的. NET Core 客户端(可能首先有限的功能集)
致力于在 ASP.NET Core 3.0 时间框架内提供托管服务器体验 Microsoft.AspNetCore.Server 功能。将努力提供 3.0 中的 mananged 客户体验。
有关 gRPC C#native(当前正式版)和新的完全托管的 ASP.NET 核心 gRPC 的计划包布局,请参阅 doc / packages.md。
请注意,计划将两种实现(gRPC C#本机和完全管理的. NET Core for grc)共存,目前没有计划用一种实现来替换另一种。
类库如图
理念核心
团队设想设计托管客户端和托管服务器。由于 gRPC 服务通常充当客户端和服务器,因此我们希望尽可能使两个组件无缝结合。除了服务器和客户端软件包之外,元数据包还将依赖于工具支持(来自 Grpc.Tools 的代码 gen 和来自 Microsoft.Extensions.ApiDescription.Design 的 ServiceReference 支持)和默认消息协议(Google.Protobuf)。
团队希望将它们与本机客户端和服务器区分开来,因此包名称将以 Grpc.AspNetCore / Grpc.NetCore 为前缀。我们不希望大多数用户直接依赖这些包,因此我们将使用由三部分组成的名称。
团队致力于在 ASP.NET Core 3.0 时间框架内提供托管服务器体验 Microsoft.AspNetCore.Server 功能。将努力提供 3.0 中的 mananged 客户体验。
结语
微软真是令人激动!基于. net 开发的程序员应该能享受这一红利了