okhttp,retrofit,volley,HttpClient,HttpUrlConnection之间的关系

Android网络开发不可避免的会接触到标题中的一些名词,本文整理下几个之间的关系。

对软件来说有个万能定律定律就是有什么“解决不了的问题就加个中间层,如果还是解决不了就多加几层”

基于unix的计算机操作系统可以分为内核层和用户层


1.内核层的驱动框架和系统调用。按网络层次来说,物理设备网卡,线路等对应最底层,tcp和ip由内核实现。对上的系统调用就围绕socket展开(诸如绑定,监听等)。当然socket和系统驱动被融合在vfs中。


2.再往上的用户层首先要封装系统调用,如libc库。


3.继续往上就是java虚拟机的核心库libcore。这个层次上就是HttpClient,HttpUrlConnection和okhttp中的的一部分。HttpClient是Apache接口(org.appache.http),Android6.0之前使用该接口的,后续就使用HttpUrlConnection,这个是java的标准接口,在java.net包下。个人推测是出于版权原因考虑,并不是效率原因。okhttp是square开源的项目,也是http协议实现和使用的封装。但是okHttp还封装了线程池等其他东西,所以说okhttp的一部分是和HttpClient,HttpUrlConnection等同的。这三个其实最终的数据传递都会归结到socket的使用上。

okHttp基于square的另一个开源项目Okio,使用了java的nio,非阻塞式io,原理上比阻塞式io要效率高。


4.继续往上就是更高层次的封装,例如线程池,数据转换,参数使用、错误处理等。包括okhttp的部分,retrofit,volley。

okHttp是square的开源项目,可以看出它的特殊之处是跨越了两个层次。当然因为出的早设计不周,所已后续又出现了Volley和Retrofit,但是底层是可以被复用的。

Volley 是 Google 官方出的一套小而巧的异步请求库,该框架封装的扩展性很强,支持 HttpClient、HttpUrlConnection,甚至支持 okHttp。
Retrofit 是 Square 公司出品的默认基于 okHttp 封装的一套 RESTful 网络请求框架, 下层操作是基于okhttp的。Retrofit应该是目前最nb的架构了,解耦的很彻底。

目前最主流的就是Retrofit,它源码中是绑死okhttp的(一家公司的产品嘛)。

当然对网络要求不高的app用Volley或者直接用java标准接口也可以,app大小肯定会比用Retrofit的小哦。









  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OkHttp 是一个用于进行网络请求的开源框架,它基于 Java 的 HttpURLConnection 类进行封装,提供了更简单、更强大的网络请求功能。 Retrofit2 是一个基于 OkHttp 的网络请求框架,它通过注解和反射的方式,将网络请求接口转换成具体的网络请求动作。同时,Retrofit2 也提供了许多强大的功能,例如请求头、请求体的自定义、请求解析器的设置、请求拦截器等。 RxJava2 是一个响应式编程框架,它提供了一种更优雅和简洁的处理异步操作的方式。通过使用观察者模式和链式调用的方式,我们可以简化对多个异步操作的管理和处理,同时提供了丰富的操作符,用于处理和组合异步数据流。 MVVM 是一种用于设计和实现用户界面的架构模式。它将应用程序的界面逻辑和数据逻辑分开,并通过数据绑定机制实现二者之间的通信。在 MVVM 中,Model 层负责数据的获取和处理,View 层负责界面的显示和用户输入的处理,而 ViewModel 则负责衔接二者之间的通信。 通过将 OkHttpRetrofit2、RxJava2 和 MVVM 结合使用,我们可以构建出一个功能强大、性能优秀、响应迅速的网络请求和数据处理框架。OkHttp 提供了稳定可靠的网络请求功能,Retrofit2 则提供了简单易用的网络接口转换方式,RxJava2 则提供了异步数据处理和链式调用的能力,而 MVVM 则提供了一种清晰的架构模式,使得我们可以更好地组织应用程序的逻辑。总的来说,这些技术和框架的结合能够让我们在开发中更加高效、稳定和灵活。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值