這篇內容主要來自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實現:編程
這兩種實現並排共存,而且在可用功能,集成,支持的平臺,成熟度和性能方面各有各的優點。兩種實現共享用於調用和處理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生命週期)。ide
下圖列出了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折優惠,請經過郵箱聯繫主辦方 dotnet@dotnetconf.cn