网络编程基础与Cocoa URL加载系统详解
1. 网络编程的重要性及核心原则
在当今移动设备普及且网络连接无处不在的时代,网络编程至关重要。众多iOS应用通过各种方式使用网络,如iCloud同步、GameKit通信框架或直接与服务器通信。然而,广域移动网络(如EDGE、3G和HSDPA+)存在高延迟、低吞吐量的问题,这要求开发者遵循以下核心原则:
- 永远不要在主线程中访问网络。
- 尽可能使用异步网络原语。
- 使用流来处理所有数据。
- 保持数据处理和传输处理相互独立。
2. 本地文件系统与网络访问的差异
本地文件系统和网络访问在性能影响因素上有明显差异,主要体现在以下两个方面:
| 因素 | 本地磁盘 | 网络 |
| — | — | — |
| 延迟(Latency) | 通常指底层存储介质的寻道时间 | 指命令包的往返时间 |
| 吞吐量(Throughput) | 通常很高,每秒可移动数百兆字节 | 从每秒几十兆字节到几千字节不等 |
另外,可用带宽方面,本地存储读写通过硬件总线,除非同时使用多个磁盘,否则整体吞吐量与物理介质匹配;而网络上可用带宽通常更受限,单个操作易饱和连接,并行操作会因带宽分配导致所有操作变慢。例如,许多常见的接入点和路由器只允许单个客户端对单个目标资源同时发起四个HTTP请求。
在请求资源时,从同一网络位置请求多个不同资源通常差异不大,但在本地磁盘上同时操作多个文件可能会导致严重的性能下降,原因是磁盘的寻道时间会导致磁盘抖动。不过,固态存储的发展使这一问题在配备固态硬盘(SSD)的系统中得到缓解,如iPhone就使用了固
超级会员免费看
订阅专栏 解锁全文
2904

被折叠的 条评论
为什么被折叠?



