gRPC Web使用指南

Posted 太空编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gRPC Web使用指南相关的知识,希望对你有一定的参考价值。

gRPC 是一个高性能、通用的开源 RPC 框架,其由 Google 主要面向移动应用开发并基于 HTTP/2 协议标准而设计,基于 ProtoBuf (Protocol Buffers) 序列化协议开发,且支持众多开发语言()。


gRPC 提供了一种简单的方法来精确地定义服务和为iosandroid 和 后台支持服务自动生成可靠性很强的客户端功能库。客户端充分利用高级流和链接功能,从而有助于节省带宽、降低的 TCP 链接次数、节省 CPU 使用、和电池寿命。下图为 gRPC 结构图:

  • gRPC 默认通过 Protocol Buffers 来定义接口,可以制定更加严格规范的接口约束;

  • 而基于 ProtoBuf 可以将数据序列化为二进制格式,从而大幅度减少数据量,进而大幅度的提升性能;

  • 支持流式通信(Streaming),基于 HTTP/2 协议传输可以实现 Streaming 功能模式,可提供更快的响应和更高的性能;

  • 支持多种语言,包括:Android Java、C++、C#/.NET、Dart、Go、Python、Web 等等;


gRPC Web是gRPC协议在浏览器端的javascript实现。


安装运行时所需的库命令

npm i grpc-web


首先定义协议文件xxxxxx.proto文件,格式如下

syntax = "proto3";
package helloworld;
service Greeter { rpc SayHello (HelloRequest) returns (HelloReply);}
message HelloRequest { string name = 1;}
message HelloReply { string message = 1;}


生成代码文件

protoc -I=$DIR business_server.proto \ --js_out=import_style=commonjs:$OUT_DIR \ --grpc-web_out=import_style=commonjs,mode=grpcwebtext:$OUT_DIR

如果你使用的是typescript,则执行

protoc -I=$DIR business_server.proto \ --js_out=import_style=commonjs,binary:$OUT_DIR \ --grpc-web_out=import_style=typescript,mode=grpcwebtext:$OUT_DIR


使用


引入生成的proto协议base类

import { BusinessClient } from "./protos/Business_serverServiceClientPb";


然后在你定义的api类里定义一个自己的类,这个类就可以调用里面的方法

constructor(hostname: string) { this.client = new BusinessClient(hostname);}

调用Greeter方法

this.client.Greeter()


详细的 protobuf 规范参考:

https://developers.google.com/protocol-buffers/docs/proto3

以上是关于gRPC Web使用指南的主要内容,如果未能解决你的问题,请参考以下文章

一个新实验:使用gRPC-Web从浏览器调用.NET gRPC服务

你可以使用 gRPC/gRPC-Web 在 Azure 上托管的微服务之间进行通信吗?

如何使用 grpc-web 构建 react-redux 应用程序?

gRPC-Web中的拦截器

gRPC-Web迈向GA

gRPC Web使用指南