gRPC-Web 访问 gRPC 服务的 Web 客户端

Apache-2.0
跨平台
2018-10-26
局长

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

部分内容来自 前端之巅

加载中

评论(1)

parselife
parselife
目前来看,还不具备生产环境使用的成熟度

暂无资讯

暂无问答

Nginx 宣布从 1.13.10 开始正式支持 gRPC

最近,NGINX在其博客宣布,Nginx 宣布从 1.13.10 开始正式支持 gRPC 如下是正文翻译: 今天,我们很高兴在NGINX 1.13.10上分享gRPC流量的第一个本地支持。下一个NGINX Plus版本R15将包含对g...

05/29 10:39
109
0
远程通信协议:从 CORBA 到 gRPC

- 一、远程调用技术简史 - 二、gRPC 简介 - 三、gRPC 示例代码

2017/10/31 16:10
69
0
gRPC 小记

创建一个maven项目demo-grpc 包含三个子模块: grpc-common:公共模块定义proto及生成java代码; grpc-server:grpc 服务端; grpc-client:grpc客户端。 其中grpc-server、grpc-client 为s...

09/04 11:48
13
0
gRPC Windows编译应用

## gRPC Windows编译 从github上clone出来后进行cmake的编译,参考上面的文档,需要注意的点: - 必须安装所有的依赖,包括Perl,Go,YASM,Git,CMake - 不要使用--recursive来递归clone,因...

06/20 09:15
184
0
PHP平台下使用gRPC

概念 gRPC:基于RPC的一种远程调用协议(php平台只支持gRPC客户端调用,不支持gRPC服务端实现) Protobuf:语言无关的高效数据交换协议,用于支持gRPC在不同语言间序列化和反序列化数据,具体...

05/28 11:53
429
0
Golang 微服务 - 01 环境和工具

注意:主机操作系统为 Windows SDK 下载地址 https://studygolang.com/dl,安装略 验证是否成功,控制台中输入 go env 相关环境变量: 添加环境变量 GOPATH,值为 C:\Users\your-host-name\...

09/15 19:57
12
0
gRPC学习笔记

gRPC编程流程 1. gRPC服务的定义:proto文件 proto文件用于定义需要通过gRPC生成的接口,可以理解为接口定义文档 // proto语法声明 syntax = "proto3"; // option声明,相当于Java中的packa...

07/22 11:04
14
0
[笔记] consul用grpc做健康检查注意点

先上个代码片段开胃 ``` registration := &consulapi.AgentServiceRegistration{ Address: address, Port: port, ID: id, Name: serviceName, Check: &consulapi.AgentServiceCheck{ GRPC: f...

04/21 14:08
372
0
grpc typescript 实例

前言 gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。目前提供 C、Java 和 Go 语言版本,分别是:grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C++, Node.js, Pytho...

06/26 22:48
78
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部