网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
.NETFramework----RPC
什么是Grpc
gRPC 一开始由 google 开发,是一款语言中立、
平台中立、开源的远程过程调用(RPC)系统。
支持主流开发语言(C, C++, Python, PHP, Ruby,
NodeJS, C#, Objective-C、Golang、Java)
proto文件
接口—定义不同语言的实现规范
需要个工具—转换C#代码(webservice代理)
定义了协议接口和数据格式
不同语言—相同文件—等于接口
类型映射
gRPC的旅程完成了
gRPC中有很多数据类型。与当前开发语言不同,对应一下即可。
gRPC流
gRPC支持4种流
简单 RPC(Unary RPC)
服务端流式 RPC (Server streaming RPC)
客户端流式 RPC (Client streaming RPC)
双向流式 RPC(Bi-directional streaming RPC)
gRPC流取消
基于CancellationToken取消
实时推送,但是只能客户端发起
gRPC理解
一个高性能,开源的,跨语言的RPC框架
基于 Http/2 传输协议(支持流)
Protocol buffers高效序列化(JSON / XML)
Http/2
- HTTP Header的压缩,采用的是HPack算法
- HTTP/2的Server Push,非常重要的一个特性
- 请求的pipeline
- 修复在HTTP 1.x的队头阻塞问题
- 在单个TCP连接里多工复用请求
头部压缩
Http协议—正文+Header—压缩Header—很多固定—不如弄个代号
不固定—客户端-服务端 维护同一份儿编码表(密码本)—压缩
编码表+哈夫曼
Server Push
无推送–Push模式:减少请求次数
节约带宽—
前端缓存问题
Http2-流
流(Stream)
服务器和客户端在HTTP/2连接内用于交换帧数据的独立双向序列,
逻辑上可看做一个较为完整的交互处理单元,即表达一次完整的资源请求-响应
数据交换流程;
一个业务处理单元,在一个流内进行处理完毕,这个流生命周期完结。
一个请求可以多个流
多路复用
流的概念提出是为了实现多路复用,
在单个连接上实现同时进行多个业
务单元数据的传输。
Http/2性能
慎用
性能没啥提升
多方式对比
WebService:最早-门槛最低,soap+xml累赘,只Http,依赖IIS
.NetRemoting:RPC–.NET RPC(限制多)—性能高
WCF—集大成者,各种服务各种协议—XML 重—.NET5移除WCF(未来可能又有了)
WebApi&Core WebApi—
gRPC
WebApi&Core WebApi
此前,都是当成服务方法(做一件什么事儿)—不满足开放性扩展性—开放的应该
是数据而不是业务—建立服务的视角变化了—需要一个新的风格(规范)—
RESTful: 就是一个接口的设计规范,根本出发点就是以资源为核心,支持增删
改查(Http-HttpMethod)—uri规范—大家都遵守
Webapi &core webapi就是遵循REST的框架,路由
Json格式—比XML轻一些
gRPC
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新