.NET 的 gRPC-Web 現在正式釋出了。我們在一月份釋出了實驗版,從那時起,我們就根據早期的使用者反饋進行著改進。
有了這個版本,gRPC-Web 就變成了 grpc-dotnet 專案的一個完全受支援的元件,它已經準備就緒。現在可以通過 gRPC-Web 和 .NET 在瀏覽器中使用 gRPC。
開始吧
剛接觸 gRPC 的開發者,應該學習下微軟的《教程:在 ASP.NET Core 中建立 gRPC 客戶端和伺服器》,該教程介紹如何使用 .NET 建立一個 gRPC client 和 server。
如果你已經有一個 gRPC 應用,那麼《在瀏覽器應用中使用 gRPC》將展示如何將 gRPC-Web 新增到 .NET gRPC server。
gRPC 和 gRPC-Web 是什麼
gRPC 是一個現代的高效能 RPC(Remote Procedure Call)框架。gRPC 基於 HTTP/2、Protocol Buffers 和其他基於標準的現代技術。gRPC 是一種開放標準,受到許多程式語言的支援,包括 .NET。
目前在瀏覽器中實現 gRPC HTTP/2 規範是不可能的,因為沒有對請求進行足夠細粒度控制的瀏覽器API。gRPC-Web 是一個標準化的協議,它解決了這個問題,並使 gRPC 在瀏覽器中可用。 gRPC-Web 為現代瀏覽器應用程式帶來了許多 gRPC 的優秀特性,比如較小的二進位制訊息和 contract-first 的 API。
gRPC-Web的新機遇
gRPC-Web 旨在使 gRPC 在更多的場景中可用,包括:
-
-
- 從瀏覽器呼叫 ASP.NET Core gRPC 應用——瀏覽器 API 不能呼叫gRPC HTTP/2。gRPC-Web 提供了一個相容的替代方案。
-
- JavaScript SPAs
- .NET Blazor Web Assembly 應用
-
- 在 IIS 和 Azure App Service 中的 Host ASP.NET Core gRPC 應用——一些伺服器,如 IIS 和 Azure App Service,目前不能託管 gRPC 服務。雖然這方面的工作正在積極進行,但 gRPC-Web 提供了一個有趣的替代方案,可以在當今的每個環境中工作。
- 從非 .NET Core 平臺呼叫 gRPC——HttpClient 在所有 .NET 平臺上不支援 HTTP/2。gRPC-Web 可以用來呼叫 Blazor 和 Xamarin 的 gRPC 服務。
- 從瀏覽器呼叫 ASP.NET Core gRPC 應用——瀏覽器 API 不能呼叫gRPC HTTP/2。gRPC-Web 提供了一個相容的替代方案。
-
(gRPC 是 Linux 基金會的註冊商標。Blazor 相容 gRPC-WEB。)
我們已經與 Blazor 團隊合作,使 gRPC-Web 在 Blazor WebAssembly 應用程式中使用時具有良好的端到端開發體驗。gRPC 工具不僅會自動生成強型別的客戶端,讓你從 Blazor 應用程式中呼叫 gRPC 服務,而且 gRPC 比 JSON 提供了顯著的效能優勢。
效能優勢的一個很好的例子就是 Blazor 的預設模板應用程式。使用 gRPC 代替 JSON 時,獲取資料頁面上傳輸的資料減少了一半。資料大小從627位元組減少到309位元組。
這裡的效能提高來自於 gRPC 比傳統的基於文字的 JSON 高效的二進位制序列化。gRPC-Web 是改進基於瀏覽器的富應用程式的一個令人興奮的機遇。
嘗試下
有關 gRPC-Web 的更多資訊,請檢視文件,或嘗試使用 gRPC-Web 的示例應用程式。
.NET 的 gRPC-Web 已經在 NuGet 上釋出了:
-
-
-
Grpc.AspNetCore.Web ——新增 gRPC-Web 支援到一個 ASP.NET Core gRPC 服務。
-
Grpc.Net.Client.Web ——從 .NET 呼叫 gRPC-Web 終結點
-
-
我們期待看到你用 .NET、gRPC 和現在的 gRPC-Web 所創造的東西!