微軟正式發(fā)布 gRPC-Web for .NET
今年一月份的時候,微軟曾宣布對 gRPC-Web for .NET 的實驗性支持,現(xiàn)在它已正式發(fā)布。
gRPC 是谷歌開源的高性能、通用 RPC 框架,支持包括 .NET 在內(nèi)的多種編程語言。它面向移動和基于 HTTP/2 標準設計,但當前,瀏覽器中無法實現(xiàn) gRPC HTTP/2 規(guī)范,因為沒有瀏覽器 API 能夠?qū)φ埱筮M行足夠的細粒度控制。gRPC-Web 是解決此問題并使 gRPC 在瀏覽器中可用的標準化協(xié)議。
gRPC-Web 即 gRPC for Web Clients。它是一個 JavaScript 庫,使 Web 應用程序能夠直接與后端 gRPC 服務通信,不需要 HTTP 服務器充當中介。它旨在使 gRPC 在更多情況下可用,包括但不限于:
? 從瀏覽器調(diào)用 ASP.NET Core gRPC 應用程序
JavaScript SPAs
.NET Blazor Web Assembly apps
? 在 IIS 和 Azure App Service 中托管 ASP.NET Core gRPC 應用程序
? 從非 .NET Core 平臺調(diào)用 gRPC —— 在所有 .NET 平臺上,HttpClient 均不支持 HTTP/2,而 gRPC-Web 可用于從 Blazor 和 Xamarin 調(diào)用 gRPC 服務
微軟表示正在與 Blazor 團隊合作,使 gRPC-Web 在 Blazor WebAssembly 應用程序中使用時為端到端開發(fā)人員提供更好的體驗。
根據(jù)微軟的說法,gRPC 與 JSON 相比具有明顯的性能優(yōu)勢。以 Blazor 的默認模板為例,相比 JSON,使用 gRPC 時,在提取數(shù)據(jù)頁面上傳輸?shù)臄?shù)據(jù)減半,數(shù)據(jù)大小也從 627 字節(jié)減少到 309 字節(jié)。
目前,.NET 版 gRPC-Web 現(xiàn)已在 NuGet 上發(fā)布:
Grpc.AspNetCore.Web —— 將 gRPC-Web 支持添加到 ASP.NET Core gRPC 服務
Grpc.Net.Client.Web —— 從 .NET 調(diào)用 gRPC-Web 端點
有關 gRPC-Web 的更多信息,可查看文檔,或嘗試使用 gRPC-Web 的示例應用程序。