.NET Core ❤ gRPC

這篇內容主要來自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的全新徹底託管實現。git

gRpc 有很是多的公司在使用,好比 Salesforce,Netflix,Spotify,Fanatics等公司(固然還有Google),特別是整個CNCF 主導下的雲原生應用開發生態裏gRpc 有着舉足輕重的地位。github

.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生命週期)ide

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折優惠,請經過郵箱聯繫主辦方 dotnet@dotnetconf.cn

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

相關文章
相關標籤/搜索