.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.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客戶端中使用現有的程序包,例如Polly和HttpClientFactory(管理HTTPClient生命周期)。
下圖列出了gRPC的所有新.NET軟件包的詳盡列表,以及它們與現有軟件包的關係。
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.Core
API或完全託管的Grpc.Net.Client
/ Grpc.AspNetCore.Server
API 在gRPC上添加對服務的代碼優先支持。
.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
微軟通過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