文章来自《ios网络高级编程》 在这里只是摘录,其中还有好多东西不知道是什么,等做完整本书的笔记回过头来看下。
框架的每一层都提供了一套关键api,为开发者提供了各种功能与控制。
1 nsurlconnection 是cocoa级别的api,它提供了简单的方法来加载url请求,可以与web service直接进行交互、获取图片、视频还能简单的得到一个格式化的html文档。它构建在NSStream之上,并且在http、https、文件和ftp进行了优化。NSURLConnection限制了你所使用的协议,但是提供了一个健壮的缓存引擎。
2 Game Kit
game kit 的核心功能在于提供了一个点到点的网络选项。在传统的网络配置中,game kit构建在bonjour之上;然而,game kit 并不需要网络基础设施就能使用。他能创建自组的bluetooth personal area networks(PAN),这样在极少或者没有基础网络的地方就是很好的网络候选者。
3 Bonjour
bonjour 是apple 对零配置网络的实现。它提供了一种机制,可以检测并于网络设备进行连接,而无需了解设备的网络地址。bonjour通过名字、服务类型与域这个元件来引用服务。他对多播DNS与基于DNS的服务探索所要求的底层网络进行了抽象。
在cocoa层,NSNetService API 提供了一个接口,用于发布和解析Bonjour服务的地址信息,可以通过NSNetServiceBrowser API 探索网络上可用的服务。发布Bonjour服务需要理解core Foundation才能配置好通信所需的socket。
4 NSStream
NSStream 是一个cocoa级别的api,构建在CFNetwork之上,最为NSURLConnection的基础,旨在完成一些网络任务。类似于NSURLConnection,NSStream提供了一种机制,用以与远程服务器或本地文件进行通信。不过可以通过NSStream在诸如telnet或SMTP等NSURLConnection不支持的协议之上进行通信。
NSStream 提供的额外的控制是有代价的。他并没有提供对HTTP/s响应状态码或认证内建的支持。他所发出与接收的数据都位于c的缓冲区。他还无法管理多个外发请求,需要子类化才能添加这个特征。NSstream是异步的,通过NSstreamDelegate 实现通信更新。
5CFNetwork
CFNetwork API 位于基础的BSD socket之上,用在NSStream、URL加载系统、Bonjour与geme kit API 的实现中,他为http 与FTP等高级协议提供了原生支持。CFNetwork 与BSD socket之间的主要差别在于运行循环的集成。如果应用使用了CFNetwork那么输入与输出都会在运行循环中进行调度。
CFNetwork比url加载系统都提供了更多的配置选项。在使用CFNetwork创建http请求时可以使用这些配置选项,在创建请求时,需要手工将请求一同发送的http头和cookie信息一起添加进去。而在NSURLConnection中,这些都会被自动添加。
CFNetwork基础设施构建在core foundation 层的CFsocket与cfstream api之上,CFNetwork 包含了针对特定协议的API ,比如用于FTP服务器通信的CFFTP、用于发送和接受http消息的CFHTTP、用于发布与浏览Bonjour服务的CFNetServices 等。
6 BSD socket
构成了大多数Internet活动的基础,是网络架构的最底层。BSD socket 使用c实现,但是可以使用在oc中。不推荐使用BSD socket API ,例如BSD socket 无法穿过系统范围的VPN,wi-fi或者蜂窝无线被关闭了,调用其api 也无法自动激活。apple 建议使用CFNetwork 或是更高层的API。
版权声明:本文为博主原创文章,未经博主允许不得转载。