zoukankan      html  css  js  c++  java
  • [ 流行的网络框架 ] AFN & ASI

    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

  • 相关阅读:
    Django 【第十二篇】Form组件进阶
    Django 【第十一篇】Form组件基础
    前端知识点总结
    vue组件续和前端工程化
    vue组件
    Vue视图下
    Vue实例与渲染
    BootStrap
    jQuery事件与动画
    dom操作 属性操作 样式操作
  • 原文地址:https://www.cnblogs.com/Trybst/p/4513453.html
Copyright © 2011-2022 走看看