iOS RESTful应用程序设计模式

时间:2015-05-06 21:10:36

标签: android ios rest design-patterns

非常清楚没有这样的东西作为iOS中的后台服务。话虽这么说,我正在寻找一种在设计模式下执行网络请求的标准方法。

Android 背景下,Google I / O 2010提出了如下图所示的设计模式。

Google I/O 2010 RESTful application design pattern

它基本上意味着您不应该直接从活动中发出网络请求,而是将其发送到后台服务(橙色矩形)this document中列出的背后原因包括系统可能在用户离开屏幕时杀死活动

回到我之前所说的,我正在寻找与RESTful iOS应用程序的设计模式相关的标准或原则,因为我注意到UIViewController可能在以下情况下停止异步操作: / p>

  1. 用户按下主页按钮,应用程序关闭(这是预期的)
  2. 设备更改了方向
  3. 考虑到这一点,让我们进入我们将文件上传到服务器的场景,让我们说它是一张图片。网络请求可能需要一些时间才能完成,用户也可以更改设备方向或离开应用程序。我们如何解决这个问题?

    注意:我知道解决方案可能只是通过使视图控制器成为API客户端类的委托来使用delegate pattern,但我觉得这会违反Single Responsibility Principle

1 个答案:

答案 0 :(得分:0)

您应该查看iOS 7中引入的NSURLSession,它支持后台上传和下载。

  

NSURLSession类支持暂停应用时的后台传输。后台传输仅由使用后台会话配置对象创建的会话提供(通过调用backgroundSessionConfiguration:返回)。

所以,这看起来,至少表面上非常接近你所描述的Android,虽然它只支持下载和上传操作。

您可以查看此document,其中提供了您使用NSURLSession的方式的一些提示。您应该专门搜索下载任务和上传任务。

Here您可以找到更完整的代码示例。