gRPC-Web

访问 gRPC 服务的 Web 客户端
授权协议 Apache-2.0
开发语言 Java C/C++ JavaScript
所属分类 Web应用开发、 RPC/XMLRPC项目
软件类型 开源软件
地区 不详
投 递 者 狄宇
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

gRPC-Web 即 gRPC for Web Clients。顾名思义,gRPC-Web 是一个 JavaScript 库,使 Web 应用程序能够直接与后端 gRPC 服务通信,不需要 HTTP 服务器充当中介。

gRPC-Web GA 正式版已发布,稳定性也已足够,并可在生产环境中使用。

目前 gRPC-Web 通过特殊网关代理连接到 gRPC 服务:默认情况下,当前版本的库使用了 Envoy 代理,它内置了对 gRPC-Web 的支持。

开发团队表示,希望将来 gRPC-Web 在特定于某一语言的 Web 框架中得到支持,例如 Python,Java 和 Node。可查看官方的开发路线图了解更多。

gRPC-Web 简介

gRPC-Web 让你能够使用.proto 来定义客户端 Web 应用程序和后端 gRPC 服务器之间的服务“契约”,并自动生成客户端 JavaScript(你可以选择 Closure 编译器或使用更为广泛的 CommonJS)。你可以不用再为这些事情操心:创建自定义 JSON 序列化和反序列化逻辑、处理 HTTP 状态代码(可能因REST API 而异)、Content-Type 协商等。

从更广泛的架构角度来看,gRPC-Web 让端到端的 gRPC 成为可能。如下图所示:

在左侧,一个客户端应用程序通过 Protocol Buffers 与一个 gRPC 后端服务器通信,然后这个服务器也通过 Protocol Buffers 与其他的 gRPC 后端服务器通信。在右侧,Web 应用程序通过 HTTP 与后端 REST API 服务器通信,然后这个服务器又通过 Protocol Buffers 与其他后端服务通信。

需要明确指出的是,右侧的 REST 应用程序本身没有任何问题。已经有大量非常成功的应用程序是基于 REST API 服务器而构建的,这些服务器使用非 HTTP 协议与后端服务进行通信。但如果这些应用程序的开发过程只围绕一个协议和一组.proto 接口(以及一组服务契约)进行,那么就可以节省无数个小时的时间以及避免那些令人头疼的问题。

gRPC-Web 的好处不仅仅体现在“技术”方面,还体现在对组织的影响上。图中的亮橙色线不仅仅是一个协议——它代表的是独立的工作和认知负荷来源,而现在,你完全可以把它变成亮绿色。

部分内容来自 前端之巅

  • by Mohak Puri 由Mohak Puri 如何在React中使用gRPC-web (How to use gRPC-web with React) For the past few months, my team has been working on a gRPC service. A few weeks back a new requirement came in: we neede

  • 一、介绍 GRPC-Web 是谷歌的一个web 端产品,正式发布在2018-11-28,git官网 现阶段js 前端支持还比较少不支持http2的协议(git解答),所以必须使用Envoy或 gowebproxy代理访问grpc 的服务(c++/java/nodejs/go) 二、 生成文件 proto 文件的定义如下 // Copyright 2015 gRPC authors. // // L

  • 编写proto文件 syntax = "proto3"; package helloworld; service Greeter { // unary call rpc SayHello(HelloRequest) returns (HelloReply); // server streaming call rpc SayRepeatHello(RepeatHelloReque

  • 作者:Venil Noronha 译者:王全根 原文: venilnoronha.io/seamless-cl… gRPC-Web使Web应用能够通过类似于Envoy的代理访问gRPC后端。Envoy是Istio的默认代理,因此,我们可以利用Istio的EnvoyFilter构件来创建无缝连接的云原生应用。 介绍 在这篇文章中,我将引导你构建一个简单的Web应用,使用emoji替换用户输入文本中的

  • grpc-web Microsoft已在.NET Core和ASP.NET Core中推出了对gRPC-Web的实验性支持,从而允许直接从.NET Core gRPC客户端和ASP.NET Core gRPC应用程序中调用gRPC-Web。 gRPC-Web与HTTP / 1和HTTP / 2兼容,是一个JavaScript客户端库,支持与gRPC-Node相同的API来访问gRPC服务,而gRP

 相关资料
  • 是否有任何CLI可以像gRPC\u CLI那样调用gRPC Web服务? 我想测试在AWS上运行的gRPC Web服务。我无法使用grpc\u cli,因为grpc服务位于专用子网中,无法访问(我无法将该服务放在我们的ELB后面,因为ELB不支持Http/2)。

  • 下面的代码片段显示了如何在gRPC AspNet核心应用程序中启用gRPC web: 客户端应用程序的代码如下所示:

  • 快速免责声明,我是非常新的gRPC和RPC一般,所以请有耐心 对等点列表、是在以前的rpc调用中构建的。 客户 服务器端实现,

  • 将grpc定义的服务视为: 并利用客户端连接到此服务类似于: 如果我们要在一个单独的线程中生成调用,那么处理终止一个永远运行、我们不想再使用的grpc连接的正确方法是什么?是否有任何连接或流控制方法可以调用?

  • gRPC 官方文档中的 quickstart - php, 很容易给 PHPer 产生误导, 按照官网的文档, 运行起来 gRPC 服务就很麻烦, 更不用说整套的 RPC 服务了. 推荐阅读 tech| 再探 grpc, 讲解了在 PHP 中实现 gRPC 相关基础知识. hyperf 对 gRPC 支持做了更进一步的封装, hyperf-skeleton 项目为例, 详细讲解整个步骤: .pro

  • 我对gRpc很陌生,已经开始探索它们的基础知识(在C语言中)。我想获得有关如何发送心跳以检查客户端/服务器是否仍处于连接状态以及在断开连接时采取恢复措施的指导。任何示例或参考任何文档/文章都将有助于我开始学习。谢谢