关于 Web 浏览器中的 gRPC 支持以及它们如何使用 HTTP2 的问题

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

发现 gRPC 后,我偶然发现了 this blog post

Why isn’t everyone already using gRPC in their SPAs?

Traditionally it’s not been possible to use gRPC from browser-based applications, because gRPC requires HTTP/2, and browsers don’t expose any APIs that let JS/WASM code control HTTP/2 requests directly.

But there is a solution! gRPC-Web is an extension to gRPC which makes it compatible with browser-based code (technically, it’s a way of doing gRPC over HTTP/1.1 requests). gRPC-Web hasn’t become prevalent yet because not many server or client frameworks have offered support for it… until now.

ASP.NET Core has offered great gRPC support since the 3.0 release. And now, building on this, we’re about to ship preview support for gRPC-Web on both server and client. If you want to dig into the details, here’s the excellent pull request from James Newton-King where it’s all implemented.

这里有一些很好的信息,但是 post 此时已经有一年左右的历史了。

最近也有一些关于 .NET 和 Blazor 技术的重大推动 from Microsoft

看起来 grpc-web 维护得很好并且总是添加很多语言支持,所以这是值得关注的事情......但据我所知,grpc-web 仍然可以运行通过 HTTP1.1?

对我来说,另一个问题仍然存在 为什么 浏览器 API 不支持 HTTP2,我找不到关于它的任何文档.

我很想开始使用 gRPC,但我也担心它可能带来的缺点。

感谢您对我不理解的任何解释。

请注意,SO 上有一个与此 here 稍微相关的问题,答案并不完全全面且较旧。

我在我的项目中使用过 grpc 并且理解你的问题。前两个问题可以通过 grpc.io 的引述来回答,然后进行一些阐述。

- 对我来说,另一个问题仍然存在为什么 HTTP2 不是 通过浏览器 API 支持,我找不到任何 关于.

的文档

- 看起来 grpc-web 维护得很好并且总是添加一个 很多语言支持,所以这是值得关注的……但是 据我了解,grpc-web 仍然是为在 HTTP1.1 上运行而构建的?

It is currently impossible to implement the HTTP/2 gRPC spec3 in the browser, as there is simply no browser API with enough fine-grained control over the requests. For example: there is no way to force the use of HTTP/2, and even if there was, raw HTTP/2 frames are inaccessible in browsers. The gRPC-Web spec starts from the point of view of the HTTP/2 spec, and then defines the differences. quote reference

- 我很想开始使用 gRPC,但我也担心
随之而来的缺点。

我发布了一个关于 gRpc 的故事。你应该read。这有助于理解 gRPC。

我也想聊聊这个话题。为什么要使用 gRPC?这是关于 Http2 和 gRPC 的速度吗?难道Http1.1是老技术? 今天,REST 协议在 Http1.1 上工作。如果他们开始使用Http2.0,这些接口将不会有任何变化。此外,如果您不使用流式处理,REST 比 gRPC 更快。 gRPC在速度方面有更好的优势。

下面我从GRPC-WEB链接了支持的RPC类型