[转载] 【开源】彻底解决嵌入式HTTP客户端的痛点
1546 查看
1 回复
 楼主 | 发布于 2020-06-03 | 只看楼主
分享到:
https://github.com/jiejieTop/http-client


介绍一下整个架构的思想:

  • 最上方是对外的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

(0 ) (0 )
回复 举报

回复于 2020-06-03 沙发

感谢分享
(0 )
评论 (0) 举报
  • 发表回复
    0/3000





    举报

    请选择举报类别

    • 广告垃圾
    • 违规内容
    • 恶意灌水
    • 重复发帖

    全部板块

    返回顶部