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

gRPC 提供了一种简单的方法来精确地定义服务和为iOS、Android 和 后台支持服务自动生成可靠性很强的客户端功能库。客户端充分利用高级流和链接功能,从而有助于节省带宽、降低的 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使用指南相关推荐

  1. [转帖]2019 简易Web开发指南

    2019 简易Web开发指南 2019年即将到来,各位同学2018年辛苦了. 不管大家2018年过的怎么样,2019年还是要继续加油的! 在此我整理了个人认为在2019仍是或者将成为主流的技术与大家分 ...

  2. HTML5移动Web开发指南

    HTML5移动Web开发指南 唐俊开 著 ISBN 978-7-121-16083-7 2012年3月出版 定价:59.00元 16开 384页 宣传语 绝无仅有的HTML5移动Web开发专著 jQu ...

  3. pythondjangoweb典型模块开发实战 pdf下载_胡阳《Django企业开发实战高效Python Web框架指南》PDF及代码...

    Python社区中的框架Django 的定位是企业级开发框架,全功能 Web开发框架,少代码快速开发 Web应用.从开发速度还是上线后新功能的迭代,Django 都能很好地满足需求. 学完 Pytho ...

  4. web开发指南_成为专业Web开发人员的实用指南

    web开发指南 This article is meant to serve as a practical guide to becoming a professional web developer ...

  5. Django企业开发实战 高效Python Web框架指南 笔记 (一)

    Django企业开发实战 高效Python Web框架指南 笔记 (一) 内容: 作者是 the5fire,他的博客地址:https://www.the5fire.com/957.html 2016年 ...

  6. django web开发指南-实例 1: Photo Gallery运行起来修改点。

    django web开发指南第七章 photo gallery开发补充点(相对于书中代码)注:django版本 1.7.1, python 2.7.8 此文只更改了部分,完整代码在我的github上, ...

  7. 247条Web可用性指南

    247条Web可用性指南,你可能会觉得太多.但其实要实真正实现Web的可用性,仅仅通过247条简单的指引是远远不够的.但这些简单的一句话指导方针,可以更便于你的记忆,像便签一样随时提醒着你. 导航: ...

  8. 《Web实战指南》00:万维网之父:蒂姆·伯纳斯·李

    <Web实战指南> 万维网之父:蒂姆·伯纳斯·李 内容导航: 1.人物简介 2.荣誉 3.视频 4.世界第一网站 1.人物简介 蒂姆·伯纳斯·李(Tim Berners-Lee),男,出生 ...

  9. web前端开发论文写作_2019学习Web开发指南

    这是一个2019年你成为前端,后端或全栈开发者的进阶指南: 你不需要学习所有的技术成为一个web开发者 这个指南只是通过简单分类列出了技术选项 我将从我的经验和参考中给出建议 1.基础前端开发者 1. ...

最新文章

  1. linux yum安装mysql 5.6_linux yum安装MySQL5.6
  2. 独家 | Tableau小技巧之分离Box plot和Unit Histogram(附链接)
  3. html登录界面_php实现登录功能
  4. 水瓶座和什么座最配:天秤座,双子座,狮子座
  5. 推荐一款高引超6000次的全基因组/全外显子组变异注释工具
  6. python查看继承方法(一分钟读懂)
  7. 凝思linux操作系统4.2内核版本_打破技术垄断!国产操作系统的逆袭之路
  8. 通过AOP引入Log4j
  9. Paraview快捷键操作
  10. Python数据处理(一)
  11. 小学生信息奥赛学c语言,适合小学生的信息学奥赛(NOIP)课程来袭!
  12. mac nmap 的下载
  13. 网站导航 - 网址大全
  14. kaggle房价预测
  15. 关于字符、字符集、编码和Unicode
  16. 【附源码】计算机毕业设计java兴发农家乐服务管理系统设计与实现
  17. OKR工作法——宏观总结
  18. HC-SR04 超声波测距模块说明
  19. go 验证字符串中是否包含中文或英文
  20. 添加myenv至jupyter notebook kerne

热门文章

  1. 网络交换机的分类介绍
  2. 视频光端机在安防监控工程中的常见技术问题
  3. 【渝粤题库】陕西师范大学201491 法学导论作业
  4. 基于CSMA -CA协议的无线星型网络的应用案例介绍
  5. 网络 计算机不显示不出来,网页图片显示不出来怎么办 网络故障解决【详解】...
  6. java jsonarray 追加_我们如何在Java中将JSONArray添加到JSONObject?
  7. windows无法确定此计算机是否包含,服务器用U盘虚拟光驱装系统,有做RAID5,加载RAID驱动成功后,安装到最后会报“windows无法确定此计算机是否包含有效系统卷”错误...
  8. ue4材质节点大全_转载于知乎:UE4 多象限(UDIM)贴图在UE4中的应用
  9. toString()方法使用
  10. 超棒的Glide图片加载