簡體   English   中英

關於 web 瀏覽器中的 gRPC 支持以及它們如何利用 HTTP2 的問題

[英]Questions about gRPC support in web browsers and how they utilize HTTP2

在發現 gRPC 后,我偶然發現了這篇博

為什么不是每個人都已經在他們的 SPA 中使用 gRPC?

傳統上,不可能在基於瀏覽器的應用程序中使用 gRPC,因為 gRPC 需要 HTTP/2,並且瀏覽器不公開任何讓 JS/WASM 代碼直接控制 HTTP/2 請求的 API。

但是有一個解決方案,gRPC-Web 是 gRPC 的擴展,使其與基於瀏覽器的代碼兼容(從技術上講,它是通過 HTTP/1.1 請求執行 gRPC 的一種方式)。 gRPC-Web 還沒有流行起來,因為沒有多少服務器或客戶端框架為其提供支持……直到現在。

自 3.0 版本以來,ASP.NET Core 提供了出色的 gRPC 支持。 現在,在此基礎上,我們即將在服務器和客戶端上發布對 gRPC-Web 的預覽支持。 如果您想深入了解細節,這里是 James Newton-King 的出色拉取請求,所有這些都已實現。

這里有一些很好的信息,但此時這篇文章已經有一年左右的歷史了。

微軟最近也有一些重大的推動,包括 .NET 和 Blazor 技術。

看起來grpc-web維護得很好,並且總是添加很多語言支持,所以這是需要關注的事情......但據我所知,grpc-web 仍然是為在 HTTP1.1 上運行而構建的?

對我來說,另一個問題仍然存在,為什么瀏覽器 API 不支持 HTTP2,我找不到任何文檔。

我很想開始使用 gRPC,但也擔心它可能帶來的缺點。

感謝您對我缺乏理解的任何解釋。

請注意, 這里有一個關於 SO 的稍微相關的問題,其答案並不完全全面且較舊。

我在我的項目中使用了 grpc,並了解您對此的疑問。 前兩個問題可以通過 grpc.io 的引用來回答,然后進行一些詳細說明。

- 對我來說,另一個問題仍然存在,為什么瀏覽器 API 不支持 HTTP2,我找不到任何文檔。

- 看起來 grpc-web 維護得很好,並且總是添加很多語言支持,所以這是需要關注的事情......但據我所知,grpc-web 仍然是為在 HTTP1.1 上運行而構建的?

目前不可能在瀏覽器中實現 HTTP/2 gRPC spec3,因為根本沒有瀏覽器 API 對請求進行足夠細粒度的控制。 例如:沒有辦法強制使用 HTTP/2,即使有,瀏覽器也無法訪問原始 HTTP/2 幀。 gRPC-Web 規范從 HTTP/2 規范的角度出發,然后定義了差異。 報價參考

- 我很想開始使用 gRPC,但我也擔心
可能附帶的缺點。

我發表了一篇關於 gRpc 的故事。 你應該閱讀 這有助於理解 gRPC。

我也想談談這個話題。 為什么要使用 gRPC? 這和 Http2 和 gRPC 的速度有關嗎? Http1.1是老技術嗎? 今天,REST 協議適用於 Http1.1。 如果他們開始使用Http2.0,這些接口不會有任何變化。 此外,如果您不使用流式傳輸,REST 比 gRPC 更快。 gRPC 在速度方面具有更好的優勢。

下面,我從 GRPC-WEB 鏈接了支持的 RPC 類型

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM