gRPC Web使用指南
gRPC?是一個高性能、通用的開源 RPC 框架,其由 Google 主要面向移動應(yīng)用開發(fā)并基于 HTTP/2 協(xié)議標(biāo)準(zhǔn)而設(shè)計,基于?ProtoBuf (Protocol Buffers)?序列化協(xié)議開發(fā),且支持眾多開發(fā)語言()。
gRPC 提供了一種簡單的方法來精確地定義服務(wù)和為iOS、Android 和 后臺支持服務(wù)自動生成可靠性很強(qiáng)的客戶端功能庫??蛻舳顺浞掷酶呒壛骱玩溄庸δ?#xff0c;從而有助于節(jié)省帶寬、降低的 TCP 鏈接次數(shù)、節(jié)省 CPU 使用、和電池壽命。下圖為 gRPC 結(jié)構(gòu)圖:
gRPC 默認(rèn)通過 Protocol Buffers 來定義接口,可以制定更加嚴(yán)格規(guī)范的接口約束;
而基于 ProtoBuf 可以將數(shù)據(jù)序列化為二進(jìn)制格式,從而大幅度減少數(shù)據(jù)量,進(jìn)而大幅度的提升性能;
支持流式通信(Streaming),基于 HTTP/2 協(xié)議傳輸可以實(shí)現(xiàn) Streaming 功能模式,可提供更快的響應(yīng)和更高的性能;
支持多種語言,包括:Android Java、C++、C#/.NET、Dart、Go、Python、Web 等等;
gRPC Web是gRPC協(xié)議在瀏覽器端的javascript實(shí)現(xiàn)。
安裝運(yùn)行時所需的庫命令
npm i grpc-web首先定義協(xié)議文件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,則執(zhí)行
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協(xié)議base類
然后在你定義的api類里定義一個自己的類,這個類就可以調(diào)用里面的方法
constructor(hostname: string) {this.client = new BusinessClient(hostname); }調(diào)用Greeter方法
this.client.Greeter()詳細(xì)的 protobuf 規(guī)范參考:
https://developers.google.com/protocol-buffers/docs/proto3
總結(jié)
以上是生活随笔為你收集整理的gRPC Web使用指南的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何在typescript中使用axio
- 下一篇: uni-app使用前的调研和开发心得