iOS网络高级编程—概述

开始正式拜读《iOS网络高级编程:iPhone和iPad的企业应用开发》,并遵循原书内容开始笔记式的blog编写。

在开始深入网络编程之前,首先来了解下iOS网络层的组织层。

如图所示:
OC结构图

由四层结构组成,分别是硬件层,操作系统,CF层,Cocoa层。抽象性由下至上增加。

我们编写应用接触的只是上面两层。

硬件层是无线通讯硬件。包括Wifi、移动蜂窝网络(2/3/4G)、蓝牙等。

操作系统即iOS操作系统,iOS系统是衍生自BSD的Unix系统。(Berkeley Software Distribution伯克利软件套件

CF,即Core Foundation,是一套C API,包含了CFNetwork。CFNetwork在基础的BSD socket之上,构建于同CF层的CFSocket与CFStream API。相对于更高的Cocoa层,CF层使用时要进行更多的配置,更加灵活,但是大部分应用开发的网络编程中并不需要接触到这些。

Cocoa层,大部分的API调用都来自这里(NS前缀的类)。如最熟悉的NSURLConnection,构建于同层的NSStream,对最常用的四种URL请求模式进行了优化(File、HTTP、HTTPS、FTP)。而NSStream则构建于CFNetwork,是NSURLConnection的基础。

在了解完四个组织层次后,有了一个大概的了解。

由此可以对比下常用的开源网络框架是基于哪一个层次的:

  1. AFNetworking,Cocoa层。

  2. ASIHTTPRequest,CF层。

  3. MKNetworkKit,CF层。

从技术上来说,ASIHTTPRequest、MKNetworkKit实现了更低层的代码,但是维护起来的话,可能AFNetworking的成本更低。