7.网络框架

作者: gadfly_only | 来源:发表于2016-08-03 16:54 被阅读90次

概念

retrofit、android-async-http、volley,帮你封装了具体的请求,线程切换以及数据转换。
OkHttp 是基于http协议封装的一套请求客户端,虽然它也可以开线程,但根本上它更偏向真正的请求,跟HttpClient, HttpUrlConnection的职责是一样的。

1. android-async-http

android-async-http内部实现是基于HttpClient, 想必你肯定知道6.0之后HttpClient是不是系统自带的了,所以这个库已经不适合android平台了。

2. Volley

Volley是官方出的,volley在设计的时候是将具体的请求客户端做了下 封装:HurlStack,也就是说可以支持HttpUrlConnection, HttpClient, OkHttp,相当于模版模式吧,这样解耦还是非常方便的,可以随意切换,如果你之前使用过Volley,并习惯使用,那直接写个OkHttp扩展就行了。
缺点:是不支持同步,这点会限制开发模式;不能post大数据,所以不适合用来上传文件。

3. Retrofit

  1. 基于okhttp,特点是简化了网络请求流程,清晰简单的接口
  2. 同时自己内部对OkHtttp客户端做了封装,同时2.x把之前1.x版本的部分不恰当职责都转移给OkHttp了(例如Log,目前用OkHttp的Interceptor来实现),这样的好处是职责清晰,Retrofit做自己该做的事儿。
  3. 而且Retrofit提供不同的Json Converter实现(json, protobuff, xml, moshi等),同时提供RxJava支持(返回Observable对象),配合Jackson(或者Gson)和RxJava,再加上Dagger2,你的效率至少可以提高一倍
  4. okhttp是高性能的http库,支持同步、异步,而且实现了spdy、http2、websocket协议,api很简洁易用,和volley一样实现了http协议的缓存。picasso就是利用okhttp的缓存机制实现其文件缓存,实现的很优雅,很正确,反例就是UIL(universal image loader),自己做的文件缓存,而且不遵守http缓存机制。

4.Okhttp

内部开启一个Socket链接,所有请求共享同一个Socket,目的是为了减少链接时间,并且维护有一个连接池;同时对传输数据进行GZIP压缩,并且对网络数据有缓存机制
OKHttp源码解析
OKHttp源码浅析与最佳实践

Paste_Image.png

相关文章

  • 7.网络框架

    概念 retrofit、android-async-http、volley,帮你封装了具体的请求,线程切换以及数据...

  • 制作复方网络药理学

    参考:中药复方网络药理学:7. 复方成分及其网络框架的构建 准备工作 构建复方药理学前,需要按照之前的思路,构建每...

  • 7.系统框架

    第47条 熟悉系统框架 第三方的framework并不是严格意义上的动态库,但系统的framework都是动态库 ...

  • 7. linux框架

    一个完整的linux内核一般由5部分组成,分为内存管理、进程管理、进程间通信、虚拟文件系统、网络接口1. linu...

  • 7. MVC框架

    一、 MVC2.0中%中各种符号的不同含义1、<%=%> 里面放的变量名,如: Welcome to Beginn...

  • 7.网络事件

    nginx每个链接对应两个事件,即 读事件和写事件 网络拓扑: 网络传输 nginx的读事件: nginx写事件...

  • Android 网络和安全机制(七)

    1、网络框架对比和源码分析   关于网络框架,一类是基础的网络框架,如HttpUrlConnection, Htt...

  • EffectiveObjective-C2.0 笔记 - 第七部

    7. 系统框架 7.1 熟悉系统框架 1. 框架:将一系列代码封装成动态库,并在其中放入描述其接口的头文件。 平时...

  • 交互设计精髓

    5.用户建模![Uploading chapter8原则和模式_067726.png . . .] 7.设计框架 ...

  • APP重构之路 网络请求框架

    APP重构之路 网络请求框架 APP重构之路 网络请求框架

网友评论

    本文标题:7.网络框架

    本文链接:https://www.haomeiwen.com/subject/dpsnjttx.html