网络编程知识总结 之 iOS网络框架概述

本文主就iOS开发所使用的网络框架进行概述,对Objective-C中网络层的组织形式进行简要的分析

iOS网络框架

每个iOS应用的网络层都是基于Apple提供的网络框架来实现的,该网络框架的构成如下图所示

iOS网络框架栈

其总共包括四层:Cocoa层(基于Objective-C对下层的封装)、Core Fundation层(基于C语言对系统层的封装)、OS层(操作系统层)、Hardware层(无线硬件层)。层级之间上层是对下层API进行的封装,自上而下可以获得越来越精细的控制,同时也失去了上一层的抽象能力和易用性。在日常开发中尽量在Core Fundation层及其以上进行以便提高开发效率和便于代码的维护。本文将会对各层级中的API作简要的介绍。

一.Cocoa层简介

网络框架Cocoa层是基于OC封装的API,由以下四个部分组成:

  • NSURL

    NSURL API是一组类和协议,提供了协议支持、身份验证和凭据以及Cookie存储和缓存管理,帮助您的应用访问URL引用的内容(ftp://http://https://data://,可以通过NSURLConnection来加载url所定位的内容,在iOS7之后,对这部分的API做了优化,使NSURLSession替换了原来的NSURLConnection。

  • Web Kit

    WebKit提供了一组用于在Windows中显示Web内容的类,并且实现了浏览器功能,例如用户点击的链接,管理后退列表以及管理最近访问的页面的历史记录。WebKit极大地简化了加载网页的复杂过程,也就是异步地从HTTP服务器请求Web内容,响应可以按照随机顺序递增地或以部分由于网络错误而递增。WebKit还简化了显示可以包含各种MIME类型的内容的过程,并且复合框架元素都有自己的一组滚动条。

  • Game Kit

    Game Kit其名称已经表达主了其大多数使用场景是游戏当中,但也并不仅仅只用于多人游戏。该框架对数据没有什么要求,可以在没有任何网络基础设施的情况下,可以很方便的创建局域网端对端通信网络。出了基本的网络通信外,Game Kit还包括一些特定于游戏德技术,如成就、比赛,排行榜等。

  • Bonjour

    Bonjour是Apple对零配置(zeroconf)网络的实现,它提供了一种探测并与网络中的设备或服务进行连接的机制,整个过程几乎不需要用户参与,该框架适用于网络游戏、设备间的文件共享和智能设备等应用场景。NSNetService用于发布和解析Bonjour。

二.Core Fundation层

  • CFNetwork

    CFNetwork是基于C语言对BSD Socket的一层轻量级封装。两者在回调方法和逻辑处理方面都有一定的相似性。CFNetwork的优势在于其被集成到了系统级的设置和主运行循环中,可以获得更好的系统服务,如开启无线以及通过系统范围内的VPN进行路由等,同时对一些常用的网络协议和操作提供了原生的支持如:简与FTP和HTTP服务器通信或解析DNS主机等。

  • CFNetsService
    CFNetsService 从命名就大致可以知晓,其是Bonjour服务 Cocoa层API的下层实现。CFNetServices API定义了三种对象类型:CFNetService,CFNetServiceBrowser和CFNetServiceMonitor。CFNetService对象表示单个网络服务,如打印机或文件服务器,它包含另一台计算机解析该服务器所需的所有信息,例如名称,类型,域和端口号;CFNetServiceBrowser是用于在域内发现域和网络服务的对象;CFNetServiceMonitor对象用于监视CFNetService对象的更改,例如iChat中的状态消息。

三.OS层

BSD Socket是一套 unix 系统下的 Socket API,是网络框架层 次体系的最底层。由C语言实现,可以直接在Objective-C代码中使用,其使用和配置也比较繁琐,相关操作也没有hook到操作系统当中,无法穿过系统范围的VPN,无法自动激活Wi-Fi和移动蜂窝网络。所以Apple建议至少使用CFNetwork或更高层的API,以便应用更好的使用网络。

四.Hardware层

硬件层主要包含三个部分:Wi-Fi、移动蜂窝网络以及蓝牙。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值