介绍一下整个架构的思想:
-
最上方是对外的API接口,实现了基本的HTTP操作,如GET/POST等。
-
接着就是client管理器,通过池化技术实现了client pool,在使用的时候从池中取出client,用完就放回,用户基本不需要直接接触client实例,实现了基本的HTTP方法,如GET/POST等,还实现了url解析器,解析用户传入的url,生成合适的参数递交给拦截器。
-
实现工作队列,进行异步处理,在CPU支持多核的情况下,根据CPU的最大支持线程数量创建多个线程处理,将所有来自上层的请求按顺序放入工作队列,并行处理。
-
intercept是拦截器,比如实现HTTP请求、HTTP应答等,它需要依赖HTTP报文的处理。拦截器的主要的处理工作是通过上层传入的参数去设置网络信息(host、port等),与服务器建立连接、重连,发起HTTP请求、解析来自服务器的响应报文,自动处理重定向、身份验证及其他操作,而保证这些操作能完成的需要基础组件,通用的字符串处理、事件的回调处理、HTTP的通用信息等,最下方的read and write则是与network打交道的。
-
network是网络组件,它可以自动选择数据通道,如果是加密方式则通过tls进行数据传输,而tls可以选择mbedtls作为加密后端也可以选择openssl作为加密后端,它是自动选择数据通道的;也可以是tcp直连方式,最终都是通过tcp传输的,此外还实现了本地的routing(或者叫dns缓存,加快域名的解析处理)。
-
platform是平台抽象层,封装了不同系统的东西,比如socke或者AT,线程、时间、互斥锁、内存管理,这些是与系统打交道的,也是跨平台必要的封装。
-
最右边的则是通用的处理,list列表的处理、日志库、错误代码、软件随机数发生器等。
项目开源地址:
https://github.com/jiejieTop/http-client
- 0000000000000000
-
1888 发帖7917 回复34980 积分
- 私信他 +关注
块
导
航
举报
请选择举报类别
- 广告垃圾
- 违规内容
- 恶意灌水
- 重复发帖