1、AFN & ASI(早已经停止更新,但现在许多公司也在使用。)

  AFNetWorking地址:https://github.com/AFNetworking/AFNetworking

  ASIHTTPRequest地址:https://github.com/paytronix/ASIHTTPRequest

2、AFN与ASI对比

-- AFN
1. 基于 NSURLConnection & NSURLSession 进行的封装
2. 使用简单
3. 提供了自动的序列化 & 反序列化支持!

AFN的优势:
URL直接传字符串
响应回来得到的数据可以半自动反序列化(json可以自动(afn默认json解析),xml需要手动)
代码回调在主线程,不需要关心线程间通讯
用字典传递参数(parameters),不用写在URL里(GET),或请求体里(POST)
根据api文档,修改GET请求和POST请求,不需要关注如何选择

1、断点续传:1. 获取网络文件信息、2. 检查本地文件信息、3. 根据偏移位置下载文件

  NSString *range = [NSString stringWithFormat:@"bytes=%llu-", self.currentLength];

  [request setValue:range forHTTPHeaderField:@"Range"];

2、多线程分析

3、分段保存(解决内存峰值突增):

  NSFileManager:做文件的复制,删除,检查是否存在,创建目录,删除目录,遍历目录...类似于在Finder中的操作

  NSFileHandle:针对一个文件做二进制数据的读写操作

技巧:可以利用 MD5 检测文件下载是否正确 !

  以文件流的方式写入数据:NSStream也是Socket开发中非常重要的一个环节

技巧:创建一个单例,统一管理全局所有的网络会话

-- ASI
1. 基于 CFNetwork 进行的封装 Core Foundation,是底层的 C 语言的框架,ASI 的效率是跟好的
2. 使用非常灵活,给程序员提供了各种使用的可能和空间!
* 用代理
* 用块代码
* 自定义监听方法
* 自定义代理-> 开发者可以定制专属自己的网络管理工具!

3. 使用难度大
4. MRC的,需要考虑到 ARC & MRC 混编的问题--下边有详解
5. 返回内容只是提供了二进制数据,或者字符串(前提结果确实是字符串!)
ASI的 序列化 和 反序列化 需要程序员自己来!

// ASI通过代理的方式处理异步请求,请求成功、失败都会通知代理

//  代理需要遵守ASIHTTPRequestDelegate协议

PS:通过block回调传值、发送POST请求、文件上传&下载、ASI数据缓存、缓存某个请求 等。

  • 实际上ASIHTTPRequest继承自NSOperation,意味着
  • 可以将多个ASIHTTPRequest放到NSOperationQueue中,同时管理多个请求
  • 可以设置请求之间的依赖
  • ASIFormDataRequest继承自ASIHTTPRequest

其他用法:

1、现在是否有网络请求在处理中

[ASIHTTPRequest isNetworkInUse];

2、当正在请求时,是否要在状态栏显示联网状态(转圈圈)

[ASIHTTPRequest setShouldUpdateNetworkActivityIndicator:YES];

3、当应用后台运行时,是否仍然继续处理网络请求

request.shouldContinueWhenAppEntersBackground = YES;

4、设置请求超时后重试的次数

request.numberOfTimesToRetryOnTimeout = 2; // 重试2次

[ 流行的网络框架 ] AFN & ASI的更多相关文章

  1. Android最流行的网络框架(原创)

    Android程序最重要的模块就是网络部分,如何从网络上下载数据,如何将处理过的数据上传至网络,往往是android程序的关键环节.        Android原生提供基于HttpClient和Ht ...

  2. 2016 - 1 - 25 第三方网络框架 AFN的简单使用

    AFNetworking 底层是对NSURlSession 和对 NSURLConnect 的包装 1.具体使用方法可以参照github上的主页面,在这里只是举一个文件上传的简单列子 - (void) ...

  3. Android网络框架之Retrofit + RxJava + OkHttp 变化的时代

    1.什么是Retrofit框架? 它是Square公司开发的现在非常流行的网络框架,所以我们在导入它的包的时候都可以看到这个公司的名字,目前的版本是2. 特点: 性能好,处理快,使用简单,Retrof ...

  4. iOS开发网络篇—使用ASI框架进行文件下载

    iOS开发网络篇—使用ASI框架进行文件下载 说明:本文介绍iOS网络编程中经常用到的框架ASI,如何使用该框架进行文件的下载. 一.简单介绍 代码示例: #import "YYViewCo ...

  5. 流行python服务器框架

    流行python服务器框架   1.tonardo---- 多并发.轻量级应用, “非阻塞”的web 容器.类似tomcat.这个大家太熟悉了,就不多说了. 2.Twisted---- Twisted ...

  6. 几种流行Webservice控制框架

     转会[http://blog.csdn.net/thunder4393/article/details/5787121],写的非常好,以收藏. 1      摘要 开发webservice应用程序中 ...

  7. Android OKHttp网络框架

    好久没逛简书了.这周公司的项目也已经愉快的迭代了新版本,对于之前一直存留的东西一直没怎么梳理,今天想说说这两年特别火的网络框架.okhttp我想大部分Android开发者都不陌生,因为它的到来.是我们 ...

  8. php中流行的rpc框架详解

    什么是RPC框架? 如果用一句话概括RPC就是:远程调用框架(Remote Procedure Call) 那什么是远程调用? 我的官方群点击此处. 通常我们调用一个php中的方法,比如这样一个函数方 ...

  9. 关于Unity的网络框架

    注:Unity 5.1里引入了新的网络框架,未来目标应该是WOW那样的,现在还只是个P2P的架子. 网络的框架,无非是如何管理网络数据的收发,通信双方如何约定协议.之前做的框架与GameObject无 ...

随机推荐

  1. Windows 8实例教程系列 - 理解应用框架

    原文:Windows 8实例教程系列 - 理解应用框架 Windows 操作系统之所以风靡世界,是因为其“易学易用”,从用户的角度出发,让数以万计的非IT人员使用计算机实现娱乐,工作等目的.Windo ...

  2. Namespace:Openstack的网络实现

    前言:众所周知在linux系统中PID.IPC.Network等都是全局性的资源,不论什么的改动和删减都会对整个系统造成影响.这也是为什么kvm之类的虚拟化技术须要模拟一个完毕主机系统的原因. 可是. ...

  3. Sqlserver2000联系Oracle11G数据库进行实时数据的同步

    Sqlserver2000联系Oracle11G数据库进行实时数据的同步 1,前提条件 我有sqlserver2000环境,已经存在oracle11g环境,准备这两个数据库,建立各自的訪问账号,两者之 ...

  4. VS2010中配置C#Project不生成.vhost.exe和.pdb文件的方法

    在VS2010中编译C#工程时,在C#的Project的属性界面的Build选项卡中当Configuration : Relese 时,依然会生成扩展名为.vhost.exe和.pdb文件. 其中.p ...

  5. hadoop出现namenode running as process 18472. Stop it first.

    hadoop出现namenode running as process 18472. Stop it first.等等,类别似几个的出现. namenode running as process 32 ...

  6. Java线(一个):线程安全的和不安全

    当我们看JDK API什么时候,总是找一些类描述说:,线程安全或线程安全,例如StringBuilder在,么一句,"将StringBuilder 的实例用于多个线程是不安全的.假设须要这种 ...

  7. 使用jprobe建设镜面层叠的原则和见解

    忽然想起的回忆,那是2007上周五在冬季,我看我的老湿调试Linux堆IP层,只看到他改变路由查找的逻辑,然后直接make install上的立竿见影的效果有点,我只知道,,这种逻辑必须再次更改编译内 ...

  8. Java操作memcached(一)

    Memcached事实上,两次Hash算法    第一次hash算法被用于定位Memcached示例    第二次hash算法是底部HashMap中间hash算法 Hash算法      1.依据余数 ...

  9. compass安装使用960 Grid System

    960 Grid System 是一个CSS的页面布局框架 demo:  http://960.gs/demo.html 前提:安装Ruby .NodeJS 步骤1:在命令行下安装css插件: gem ...

  10. 7.oracle学习门户系列七---网络管理和配置

    oracle学习门户系列七 网络管理和配置 们学习了模式和用户.包含模式定义以及模式的作用. 这篇我么来看下ORACLE数据库中的网络管理和配置.只是这篇好像和上篇没有继承啊.这怎么看? Ok,事实上 ...