【问题标题】:iOS RESTful application design patterniOS RESTful 应用程序设计模式
【发布时间】:2015-05-06 21:10:36
【问题描述】:

很明显,没有这样的东西作为iOS中的后台服务。话虽如此,我正在寻找一种在设计模式下执行网络请求的标准方法。

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

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

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

  1. 用户按下主页按钮,应用关闭(这是意料之中的)
  2. 设备改变了方向

考虑到这一点,让我们进入将文件上传到服务器的场景,假设它是一张图片。网络请求可能需要一些时间才能完成,用户也可以更改设备方向或离开应用程序。我们如何解决这个问题?

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

【问题讨论】:

    标签: android ios rest design-patterns


    【解决方案1】:

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

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

    所以,这似乎至少在表面上非常接近您为 Android 描述的内容,尽管它只支持下载和上传操作。

    您可以查看此document,它为您提供了一些关于如何使用NSURLSession 的提示。您应该专门搜索下载任务和上传任务。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-15
      • 1970-01-01
      • 2013-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多