iOS网络高级编程:iPhone和iPad的企业应用开发(移动开发经典丛书)

综合评级:
★★★★★

定价:
¥49.80

作者:
(美)考克斯,(美)琼斯(美)舒姆斯基 著,张龙 译

出版社:
清华大学出版社

出版日期:
2014年7月

页数:
302

字数:
487000

ISBN:
9787302364115

书籍介绍

iPhone SDK(现在称为iOS)的发布引发为iPhone创建应用的热潮。为了将iOS应用开发推向新高度,本书作者通过各种有效的方法、鲜活的示例与最佳实践实现了iOS应用与其他系统(如网络主机或其他移动设备)的无缝连接。无论是新手还是经验丰富的开发人员,都会从作者解决网络系统集成、安全与设备管理的方式中获益无穷,从而可以构建更棒、更可靠的应用。

目录

第Ⅰ部分 理解iOS与企业网络
第1章 iOS网络功能介绍
  1.1 理解网络框架
  1.2 iOS网络API
    1.2.1 NSURLConnection
    1.2.2 Game Kit
    1.2.3 Bonjour
    1.2.4 NSStream
    1.2.5 CFNetwork
    1.2.6 BSD socket
  1.3 运行循环
  1.4 小结
第2章 设计服务架构
  2.1 远程门面模式
    2.1.1 门面服务示例
    2.1.2 门面客户端示例
    2.2 服务版本化
    2.2.1 版本化服务示例
    2.2.2 使用版本化服务的客户端示例
  2.3 服务定位器
  2.4 小结
第Ⅱ部分 HTTP请求:iOS网络功能
第3章 构建请求
  3.1 HTTP介绍
  3.2 理解HTTP请求与响应
    3.2.1 URL结构
    3.2.2 请求内容
    3.2.3 响应内容
  3.3 高层iOS HTTP API
    3.3.1 所有请求类型共用的对象
    3.3.2 同步请求
    3.3.3 队列式异步请求
    3.3.4 异步请求
  3.4 高级HTTP操作
    3.4.1 使用请求方法
    3.4.2 操纵Cookie
    3.4.3 头信息操作进阶
  3.5 小结
第4章 生成与解析负载
  4.1 web Service协议与风格
    4.1.1 简单对象访问协议
    4.1.2 表述性状态转移
    4.1.3 选择一种方式
  4.2 负载
    4.2.1 负载数据格式简介
    4.2.2 解析响应负载
    4.2.3 生成请求负载
  4.3 小结
第5章 错误处理
  5.1 理解错误源
    5.1.1 操作系统错误
    5.1.2 HTTP错误
    5.1.3 应用错误
  5.2 错误处理的经验法则
    5.2.1 在接口契约中处理错误
    5.2.2 错误状态可能不正确
    5.2.3 验证负载
    5.2.4 分离错误与正常的业务状况
    5.2.5 总是检查HTTP状态
    5.2.6 总是检查NSError值
    5.2.7 使用一致的方法来处理错误
    5.2.8 总是设置超时时间
  5.3 优雅地处理网络错误
    5.3.1 设计模式介绍
    5.3.2 指挥调度模式示例
  5.4 小结
第Ⅲ部分 高级网络技术
第6章 保护网络传输
  6.1 验证服务器通信
  6.2 HTTP认证
    6.2.1 HTTP Basic、HTTP Digest与NTLM认证
    6.2.2 客户端证书认证
  6.3 使用哈希与加密确保消息完整性
    6.3.1 哈希
    6.3.2 消息认证码
    6.3.3 加密
  6.4 在设备上安全地存储认证信息
  6.5 小结
第7章 优化请求性能
  7.1 度量网络性能
    7.1.1 网络带宽
    7.1.2 网络延迟
    7.1.3 设备电量
  7.2 优化网络操作
    7.2.1 减少请求带宽
    7.2.2 降低请求延迟
    7.2.3 避免网络请求
  7.3 小结
第8章 底层网络
  8.1 BSD Socket
    8.1.1 配置Socket服务器
    8.1.2 Socket客户端连接
  8.2 CFNetwork
  8.3 NSStream
  8.4 小结
第9章 测试与操纵网络流量
  9.1 观测网络流量
    9.1.1 嗅探硬件
    9.1.2 嗅探软件
    9.2 操纵网络流量
    9.2.1 配置Charles
    9.2.2 HTTP断点
    9.2.3 重写规则
  9.3 模拟实际的网络状况
  9.4 小结
第10章 使用推送通知
  10.1 调度本地通知
    10.1.1 创建本地通知
    10.1.2 取消本地通知
    10.1.3 处理本地通知的到达
  10.2 注册并响应远程通知
    10.2.1 配置远程通知
    10.2.2 注册远程通知
    10.2.3 远程通知负载
    10.2.4 发送远程通知
    10.2.5 响应远程通知
  10.3 理解通知最佳实践
  10.4 小结
第Ⅳ部分 应用间网络通信
第11章 应用间通信
  11.1 URL方案
    11.1.1 实现自定义的URL方案
    11.1.2 感知其他应用的存在
    11.1.3 高级通信
  11.2 共享钥匙串
    11.2.1 企业SSO
    11.2.2 检测应用之前的安装
  11.3 小结
第12章 使用Game Kit实现设备间通信
  12.1 Game Kit基础
  12.2 点对点网络
    12.2.1 连接到会话
    12.2.2 向端点发送数据
  12.3 客户端-服务器通信
  12.4 小结
第13章 使用Bonjour实现自组织网络
  13.1 zeroconf概览
    13.1.1 寻址
    13.1.2 解析
    13.1.3 探测
  13.2 Bonjour概览
    13.2.1 发布服务
    13.2.2 浏览服务
    13.2.3 解析服务
    13.2.4 与服务进行通信
  13.3 实现基于Bonjour的应用
    13.3.1 员工应用
    13.3.2 顾客应用
  13.4 小结

前言

前 言

  现在,iPhone与iPad在我们的生活与工作中已经无所不在,我们也越来越依赖于它们与Internet上的主机或房间里的其他手机无缝且正确的交互能力。本书介绍了实现这种连接功能的各种方法,并通过大量示例与最佳实践介绍了每一种方法的实现原理。

  随着iPhone SDK(现在叫做iOS)的发布,很多经验丰富以及新手开发者都开始为iPhone开发应用。在这个潮流下,市场上出现了很多介绍如何为iPhone开发应用的图书。其中大多数图书都关注于如何开发用户界面。本书则不是这样,本书的焦点放在了连接iOS应用与其他系统(网络主机或是其他移动设备)的方法与最佳实践。如果你对学习iOS开发环境投入了时间和精力,并且现在想要通过经过实践证明的设计模式来构建企业级的应用,那么这本书就非常适合你。

  在过去的15年间,网站开发在企业IT部门中处于主宰地位。人们的HTML、CSS与JavaScript技能水平不断增长,但小型设备之间的互联能力却呈现下降的趋势。由于移动软件开发在过去4年间呈现出爆发性的增长,开发社区(经验丰富的开发者与新手)要重新学习小型设备之间互联的实践。

  作为为众多大型各户服务过的专业iOS开发者,本书的作者发现相对于设计、开发与验证应用来说,开发和打磨应用的交互部分会很花时间。此外,他们还发现现有的图书并没有很好地解决iOS开发的这个非常重要的方面。鉴于此,本书能够帮助新手与专业开发者构建出更好、更可靠的应用。

  本书读者对象

  企业iOS开发者(包括公司与组织中的开发者)会发现本书是非常有价值的资源,它提供了可运行的示例与指南来实现iOS网络应用与企业服务器的互联。本书所介绍的网络技术为每个编写iOS应用的开发者提供了强力武器。

  从其他平台转向iOS的新手开发者可以通过本书全面了解到iOS的功能。此外,与这些功能对应的可运行的示例为你所开发的应用提供了基础网络特性。开发者应该具备一定的Objective-C、Xcode与iOS应用开发基础。

  对于那些企业系统或是应用架构师来说,如果他们的高层设计包含了跨越多个企业系统的移动设备,那就会觉得本书是非常有价值的资源,可以从中了解到iOS设备强大的网络功能。第1~5章最适合企业架构师阅读。

  项目技术经理与分析师可以通过本书了解到一些技术基础,从而规划应用开发项目并设定应用需求。第1~5章以及每一子章节的介绍性部分对于项目经理和分析师来说颇具价值。

  对于技术读者来说,本书为新手提供了全新的想法,可以在应用中加入一些引人注目的特性。由于本书是从企业开发者的视角编写的,因此应用示例适合于传统的商业组织和应用。示例并没有涉及如何编写游戏;相反,这些示例都专注于企业中最为常见的那些任务。与休闲活动相关的一些网络技术(如点对点网络)在企业中也占据着一席之地,可以为移动设备开启新的、有价值的使用场景。

  本书内容

  本书重点关注于运行在Apple操作系统(iPhone、iPad与iPod,统称iOS)之上的应用的网络编程技术,主要介绍了如下主题:

  ● 在客户端设备与服务器之间执行HTTP请求

  ● 管理客户端设备与服务器之间的数据负载

  ● 处理HTTP请求中的错误

  ● 保护网络通信

  ● 改进网络通信的性能

  ● 执行Socket层的通信

  ● 实现推送通知

  ● 单个设备上的应用间通信

  ● 多个设备上的应用间通信

  本书的所有示例应用与代码片段都针对iOS 5.0+编写。作者选择将重点放在iOS 5+的原因在于iOS用户更倾向于快速升级;因此,早期iOS安装版本的基数会很小。其他移动操作系统对于新OS版本的使用率则慢很多,这是因为每个版本都必须经过无线运营商的审批,这延缓了它们的发布。

  本书提供的服务器端代码示例是用PHP与Perl开发的,运行在Apache上。之所以选择这些技术是因为它们在Mac OS X上可以立刻使用,这也是运行iOS开发环境所必需的。

  本书的组织结构

  本书分为4个部分,每一部分都涵盖了iOS网络编程领域中的一个广泛主题。这几个部分涉及从对移动应用架构的高层次介绍到应用间通信的具体协议与解决方案,同时深入介绍了应用与服务器间通信的最为流行的方式。

  第Ⅰ部分:理解iOS与企业网络

  大多数读者应该从这一部分开始阅读。这一部分从高层次概览了iOS网络以及针对移动网络架构的最佳实践。

  第1章:iOS网络功能介绍——本章回顾了用于将设备连接到服务器或是其他设备的网络编程基础知识以及iOS提供的API。

  <!--[if !supportEmptyParas]--> <!--[endif]-->

  第2章:设计服务架构——本章介绍了部署设备友好的网络应用的架构模式。

  第Ⅱ部分:HTTP请求:iOS网络功能

  这部分深入介绍了iOS设备与服务器通信所需的最常见的设施。

  第3章:构建请求——本章介绍了从iOS应用构建请求的方式,同时提供了使用URL加载API的代码示例。

  第4章:生成与解析负载——本章介绍了编码iOS应用与服务器之间传递的信息的最为常见的方式,同时提供了XML、JSON以及HTML负载管理的代码示例。

  第5章:错误处理——本章介绍了HTTP请求与响应中的错误处理。

  第Ⅲ部分:高级网络技术

  这部分包含5章,重点介绍了iOS开发者可以使用的高级网络技术。

  第6章:保护网络传输——本章介绍了除了基本的SSL通信外保护网络传输的方式,并提供了客户端与服务器端证书验证的示例。

  第7章:优化请求性能——本章介绍了改进网络通信性能的几种方式。

  第8章:底层网络——本章介绍了从iOS应用中通过底层网络API执行Socket与数据包通信的方式。

  第9章:测试与操纵网络流量——本章介绍了拦截与修改设备和服务器间通信的方式,从而可以实现应用诊断与质量保证。

  第10章:使用推送通知——本章介绍了如何使用推送通知实现服务器与应用间的异步通信。

  第Ⅳ部分:应用间网络通信

  这一部分包含3章内容,介绍了如何实现同一台设备上以及不同设备上的应用间通信。

  第11章:应用间通信——本章介绍了同一台设备上应用间通信的各种方式。

  第12章:使用Game Kit实现设备间通信——本章介绍了如何通过Game Kit实现设备间通信,这一章的目标并不在游戏,Game Kit能够实现的特性有很多,本章并未介绍全部。

  第13章:使用Bonjour实现自组织网络——最后一章介绍了Bonjour,并通过它实现多台设备上的应用间通信。

  学习本书的前提

  要想从本书获得最大的收益,你应该对iOS编程有基本的理解,比如基本的Xcode使用、如何将应用部署到设备上等。要想运行示例应用,你需要如下软件与硬件:

  ● Apple Mac电脑,安装有OS X Lion(10.7)或更高版本

  ● XCode 4.3.2或更高版本

  ● 一台iOS设备,iPhone 3GS或更高版本,iPad或iPod Touch,安装iOS 5.0或更高版本

  ● 一个Apple开发者账号,地址是https://developer.apple.com/programs/register/

  源代码

  读者在学习本书中的示例时,既可以手动输入所有的代码,也可以使用本书附带的源代码文件。本书使用的所有源代码都可以从站点http://www.wrox.com/www.tupwk.com.cn/ downpage上下载。登录到站点http://www.wrox.com/,使用Search工具或使用书名列表就可以找到本书。接着单击本书细目页面上的Download Code链接,就可以获得所有源代码。

  <!--[if !supportEmptyParas]--> <!--[endif]-->

  可以将本书的所有源代码作为一个文件下载(可根据语言来选择版本:C#或Visual Basic),然后用喜欢的解压缩工具对其进行解压缩。提取源代码时,请确保维持作为代码下载一部分的原始文件夹结构。不同的解压缩工具对这个功能有着不同的名称,不过应尽可能寻找一个像User Folder Names或Maintain Directory Structure这样的功能。从下载的代码中提取了文件之后,最后应有一个名为Source的文件夹以及一个名为Resources的文件夹。然后在C盘的根目录位置创建一个新文件夹,命名为BegASPNET,并将Source和Resources文件夹移到这个新文件夹中,最后得到类似C:\\\\BegASPNET\\\\Source和C:\\\\BegASPNET\\\\Resources这样的文件夹。Source文件夹中包含本书19章中每一章的源代码文件,以及Planet Wrox网站的最终版本。Resources文件夹包含本书的一些练习中所需要的文件。如果一切正常,最后应看到如图0-1所示的结构。

  

  图0-1

  在以后的章节中,将在C:\\\\BegASPNET文件夹中创建名为Site和Release的文件夹,从而文件夹结构将如图0-2所示。

  

  图0-2

  Site文件夹包含本书将要构建的站点,而Release文件夹将包含本书末尾的站点的最终版本。每当做本书的一些练习受阻时,都可以打开Source文件夹查看一切最后应是什么样子。

  如果要为特定章节运行站点来看看它是如何工作的,一定要在Visual Studio中打开那一章的文件夹作为一个网站。因此应直接打开诸如C:\\\\BegASPNET\\\\Source\\\\ Chapter 12这样的文件夹,而不是打开它的父文件夹C:\\\\BegASPNET\\\\Source。

  如果想要使用两种编程语言完成操作,则创建第二个文件夹C:\\\\BegASPNETVB或C:\\\\BegASPNETCS来存放另一个版本的文件。这样一来,这两个站点就可以共存而不产生冲突。如果专门为C#语言创建一个文件夹,请不要包含#符号。因为对一个网站来说,路径名中的#是一个无效字符。

  坚持采用这个结构可以确保顺利执行本书的“试一试”练习。错误地混合或嵌套这些文件夹会使练习的完成变得困难,还可能导致发生预料之外的情况和错误。每当遇到本书中没有解释的问题或错误时,请确保站点结构仍然与这里提出的结构紧密相关。

  勘误表

  尽管我们已经尽了最大的努力来保证文章或代码中不出现错误,但是错误总是难免的,如果你在本书中找到了错误,例如拼写错误或代码错误,请告诉我们,我们将非常感激。通过勘误表,可以让其他读者避免走入误区,当然,这还有助于提供更高质量的信息。

  要在网站上找到本书英文版的勘误表,可以登录www.wrox.com/remtitle.cgi?isbn= 1118311809,或者访问http://www.wrox.com,通过Search工具或书名列表查找本书,然后在本书的细目页面上,单击Errata链接。在这个页面上可以查看到Wrox编辑已提交和粘贴的所有勘误项。完整的图书列表还包括每本书的勘误表,网址是www.wrox.com/misc-pages/ booklist.shtml。

  如果你在勘误表上没有找到错误,那么可以到www.wrox.com/contact/techsupport.shtml上,完成上面的表格,并把找到的错误发送给我们。我们将会核查这些信息,如果无误的话,会把它放置到本书的勘误表中,并在本书的后续版本中更正这些问题。

  p2p.wrox.com

  要与作者和同行讨论,请加入p2p.wrox.com上的P2P论坛。这个论坛是一个基于Web的系统,便于你张贴与Wrox图书相关的消息和相关技术,与其他读者和技术用户交流心得。该论坛提供了订阅功能,当论坛上有新的消息时,它可以给你传送感兴趣的论题。Wrox作者、编辑和其他业界专家和读者都会到这个论坛上来探讨问题。

  在http://p2p.wrox.com上,有许多不同的论坛,它们不仅有助于阅读本书,还有助于开发自己的应用程序。要加入论坛,可以遵循下面的步骤:

  (1) 进入p2p.wrox.com,单击Register链接。

  (2) 阅读使用协议,并单击Agree按钮。

  (3) 填写加入该论坛所需要的信息和自己希望提供的其他信息,并单击Submit按钮。

  (4) 你会收到一封电子邮件,其中的信息描述了如何验证账户和完成加入过程。

  不加入P2P也可以阅读论坛上的消息,但要张贴自己的消息,就必须加入该论坛。

  加入论坛后,就可以张贴新消息,回复其他用户张贴的消息。可以随时在Web上阅读消息。如果要让该网站给自己发送特定论坛中的消息,可以单击论坛列表中该论坛名旁边的Subscribe to this Forum图标。

  关于使用Wrox P2P的更多信息,可阅读P2P FAQ,了解论坛软件的工作情况以及P2P和Wrox图书的许多常见问题的解答。要阅读FAQ,可以在任意P2P页面上单击FAQ链接。

课课家教育

未登录