.NET Core ❤ gRPC

  • 2019 年 10 月 17 日
  • 筆記

這篇內容主要來自Microsoft .NET團隊程式經理Sourabh Shirhatti的部落格文章:https://grpc.io/blog/grpc-on-dotnetcore/, .NET Core 3.0現已提供grpc的.NET 託管實現 grpc-dotnet, gRpc 取代WCF成為 .NET的一等公民。自2018年11月以來,Microsoft的.NET團隊一直與gRPC團隊密切合作,共同開發適用於.NET Core的gRPC的全新完全託管實現。

gRpc 有非常多的公司在使用,比如 Salesforce,Netflix,Spotify,Fanatics等公司(當然還有Google),特別是整個CNCF 主導下的雲原生應用開發生態里gRpc 有著舉足輕重的地位。

.NET目前有兩種正式的gRPC實現:

  • Grpc.Core:基於本地gRpc Core庫的原生 gRpc C#實現,支援.NET Core 2.1/.NET Framework 4.5+/Mono 4+ 。
  • grpc-dotnet:完全以C#編寫的新實現,沒有任何本機依賴性,並且基於最新發布的.NET Core 3.0。

這兩種實現並排共存,並且在可用功能,集成,支援的平台,成熟度和性能方面各有各的優勢。兩種實現共享用於調用和處理RPC的相同API,用戶能夠選擇最能滿足其需求的實現,而不會限制你必須使用某個平台。

與現有的基於C-Core的實現(Grpc.Core)不同,新庫(grpc-dotnet)使用.NET Core基本類庫(BCL)中的現有網路實現。下圖突出顯示了現有的Grpc.Core庫和新的grpc-dotnet庫之間的區別。

gRPC .NET堆栈

在伺服器端,Grpc.AspNetCore.Server軟體包集成到ASP.NET Core中,使開發人員受益於ASP.NET Core已解決的日誌,配置,依賴項注入,身份驗證,授權等常見的交叉問題。現在,ASP.NET生態系統中的流行庫(例如,實體框架核心(ORM)Serilog(日誌記錄庫)Identity Server等)與gRPC無縫協作。

在客戶端,該Grpc.Net.Client軟體包建立在HttpClient作為.NET Core一部分提供的熟悉的API的基礎上。與伺服器一樣,gRPC客戶端也從基於的軟體包HttpClient的生態系統中 受益匪淺。 現在可以在gRPC客戶端中使用現有的程式包,例如PollyHttpClientFactory(管理HTTPClient生命周期)

image

下圖列出了gRPC的所有新.NET軟體包的詳盡列表,以及它們與現有軟體包的關係。

grpc-dotnet软件包

Visual Studio 2019 對protobuf文件的語言語法提供了支援,並在保存protobuf文件時自動生成gRPC伺服器/客戶端程式碼,而無需由於設計時構建而需要完全重新編譯項目。

gRpc 這麼好用如何入門呢 ,微軟的文檔給我們準備了很詳細,具體參見: https://docs.microsoft.com/zh-cn/aspnet/core/grpc/?view=aspnetcore-3.0 

前面我們提到了gRpc 取代WCF成為 .NET的一等公民,我們一定很懷念WCF那種利用程式碼定義服務鍥約的方式,你一定會記得還有一個protobuf 開源實現protobuf-net: https://github.com/protobuf-net , 我以前在騰訊IT 使用WCF + Protobuf 構建微服務的系統,用的也是protobuf-net 這個庫,而不是用WCF自帶的二進位序列化,獲得了更高的負載處理能力。protobuf-net.Grpc 使用本機Grpc.CoreAPI或完全託管的Grpc.Net.Client/ Grpc.AspNetCore.ServerAPI 在gRPC上添加對服務的程式碼優先支援。

 

image

.NET 團隊還準備了一個電子書《適用於 WCF 開發人員的 ASP.NET Core gRPC》 https://dotnet.microsoft.com/learn/aspnet/architecture#grpc-for-wcf-devs-ebook-swim 對應的程式碼倉庫:https://github.com/dotnet-architecture/grpc-for-wcf-developers

gRPC for WCF Developers

 

微軟通過https://dapr.io/ 在嘗試嘗試整合service fabric, functions 和actors. 十分輕量, 可以運行在k8s上,單機上,iot設備上,dapr還是一種新的編程模式,通過sidecar把微服務需要的功能通過http/grpc接進來,也可以和istio一起用的,也可以單獨用。

參考文檔

 

 

中國 .NET 開發者峰會

2019年11月9日 09:00-18:00

中國 上海

門票優惠

10月20日前購票可享受早鳥票100元優惠,只需199,限量300張,先到先得;超級早鳥票及社區特價票需要審核資料;購買團體票(大於10張)享受整單8折優惠,請通過郵箱聯繫主辦方 [email protected]

https://www.huodongxing.com/event/4514005355700