繁体   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