【譯】gRPC-Web for .NET now available
- 2020 年 8 月 11 日
- 筆記
.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 所創造的東西!