免费开源的iOS开发学习平台

iOS开发之网络编程:1-网络开发基本概念介绍

在移动互联网时代,几乎所有的应用都需要用到网络,比如:QQ、微博、爱奇艺、微信等。只有通过网络跟外界进行数据交互、数据更新,应用才能保持新鲜、活力。移动网络应用 = 良好的UI + 良好的用户体验 + 实时更新的数据,而网络编程是一种实时更新应用数据的常用手段。

网络开发相关基本概念

在学习iOS网络编程之前,我们有必要先了解一些网络编程相关的基本概念。

  • 客户端(Client):在移动开发过程中,客户端就是手机上的APP;
  • 服务器(Server):为客户端提供服务、提供数据的设备。
  • 请求(Request):客户端向服务器索取数据的一种行为,客户端告诉服务器,需要获取哪些数据;
  • 响应(Response):服务器对客户端的请求做出的反应,一般指返回数据给客户端。

  • 同步请求:当客户端在发送请求,在获得响应这段时间,同步请求会导致客户端必须等待服务器响应结束之后,才能对应用进行交互。

  • 异步请求:当客户端在发送请求,在获得响应这段时间,异步请求可以允许客户端做其他操作,不需要等待网络操作结束。

  • 请求队列:请求队列提供了对异步请求更加精准丰富的控制,例如可以设置在队列中设置请求的连接数(maxConcurrentOperationCount)。当向请求队列里添加的请求实例数大于 maxConcurrentOperationCount 时,请求实例将被置为等待,直到前面至少有一个请求完成并出列才被放到队列里执行。这也适用于当我们有多个请求需要按顺序执行的时候(可能是业务上的需要,也可能是软件上的调优),仅仅需要把 maxConcurrentOperationCount 设为“1”(这时和同步无异)。

  • 协议:网络协议是网络上所有设备(网络服务器、计算机及交换机、路由器、防火墙等)之间通信规则的集合,它规定了通信时信息必须采用的格式和这些格式的意义。iOS开发常用协议有:HTTP、HTTPS、Socket协议等。

网络开发基本流程

在iOS网络开发过程中,在不借助其他第三方开源框架的情况下,当我们需要发送一个网络请求,通常情况下包含如下几个常规步骤:

  • 构造地址NSURL
  • 构造请求NSURLRequest
  • 构造启动连接NSURLConnection
  • 发送同步请求\异步请求
  • 代理对象实现协议,用于监听通讯事件

在接下来的章节中,我们会介绍一下如何使用苹果官方提供的框架以及第三方开源框架来发送网络请求以及解析服务器响应。