【问题标题】:CloudKit - no server-side logic?CloudKit - 没有服务器端逻辑?
【发布时间】:2014-07-26 23:30:35
【问题描述】:

使用CloudKit,您可以专注于客户端应用程序开发,让 iCloud无需编写服务器端应用程序逻辑。 CloudKit 为您提供身份验证、私有和公共数据库、结构化和资产存储服务——所有这些都是免费的,并且有很高的限制。

您不能上传任何代码以在 Apple 的服务器上运行?

我听说它与 Google App Engine 和其他云计算平台进行了比较,但如果没有运行自己的代码的能力,是不是整个事情都非常有限,没有可比性?

例如,如果我想构建一个新闻应用程序,它会定期推送用户感兴趣的主题的故事,那么仅使用 CloudKit 就无法做到这一点,因为我需要在服务器上进行预定的作业和数据处理。

有什么想法吗?

【问题讨论】:

  • 推测:我怀疑苹果会发布对它的任何竞争对手都不利的东西。 Parse 超级便宜,易于集成,并且有云代码。如果苹果的东西没有更好,他们可能会买下它(就像他们对 Testflight 所做的那样)
  • 我正在经历同样的经历:A) 哦,这看起来像是免费(或更便宜)的 GAE 版本。 B) 哦,等等,我无法为它提供逻辑、cron 作业,而且它仅限于 Apple 设备,所以忘记将您的应用程序扩展到初始数据库之外的任何地方。如果选择 Cloudkit 作为平台,您实际上是在将您自己和您的数据带入死角。 看看 Cloud Kit 的一些实际用例会很有趣。
  • 您的服务器也可以订阅吗?我喜欢在数据库中的某些内容发生更改时收到通知,以便它也可以向其他平台(如 Android)发送推送通知。

标签: ios icloud cloudkit


【解决方案1】:

CloudKit 不是一个成熟的网络托管服务。相反,它是用于 iCloud 的 SDK。您不应该在那里放置一个网站,而只是存储您可能希望在多个应用程序或平台中使用的用户数据。

iCloud API 使您的应用能够将应用数据存储在 iCloud 中,从而使您的应用自动保持最新状态。使用 iCloud 为您的用户在支持 iCloud 的设备上提供一致且无缝的体验。

【讨论】:

  • 嗯,我想我的主要问题是每个人似乎都是如何对待它的。如果您阅读过去几天与 WWDC 相关的新闻,许多人似乎暗示苹果正在提供免费的替代服务,例如 Google App Engine 或 Amazon Web Services。但实际上 CloudKit 只真正提供数据存储和身份验证。
  • 是的,人们似乎在赞美他们并不真正理解的东西。
【解决方案2】:

信不信由你,您实际上可以通过这种方法走得更远。

我没有使用过 CloudKit,但我可以为你描述一下我的应用程序堆栈:

AngularJS(或您最喜欢的客户端 HTML 渲染框架):单个页面将托管一系列由路由器选择的模板/控制器,并由用户更改锚点以选择他们的页面继续。

Firebase.io(或您最喜欢的云存储):任何动态数据都会进入云文档存储。控制器需要在客户端加载数据并渲染模板,当数据发生变化时,将数据发回。这也提供了身份验证和授权,因为您可以限制对数据的访问。

现在您需要一个地方来提供 HTML/CSS/JS/图像...这不需要“服务器端代码执行”,只需一个可以放置资产的 Web 服务器。

使用这种技术,您可以将所有用户的主题存储在该用户的数据库中,当页面加载时,将这些主题的所有源(也存储在数据库中)完全聚合到客户端。我可以看到,您的示例应用程序中没有任何实际需要服务器端执行的内容,只要您拥有可以为您提供身份验证和授权服务的云存储,以及用于提供静态资产的“哑”网络服务器。

【讨论】:

  • 这对于非服务器端开发堆栈来说都是正确的,但我认为他误解了 CloudKit 的用途。
  • 您可以将所有处理都放在客户端(在应用程序中,在手机上),但我认为这不会是一个很好的用户体验。让我们以播客应用程序为例 - Pocket Casts 使用自己的服务器下载所有 RSS 提要并聚合新的剧集信息,因此获取剧集更新非常简单快捷。另一个应用程序 Downcast 会在本地下载和处理手机上的 RSS 源,因此速度要慢得多,尤其是当您有 10 个或更多订阅时。
  • 在我看来,一个真正的“云连接”应用程序应该有一个服务器端对应物来改善用户体验(用于数据处理、通信等)。这并不是 Apple 真正提供的,而是开发人员真正需要的。
【解决方案3】:

某些情况,我们不需要服务器端的逻辑,只存储静态数据就可以覆盖所有的使用场景。

在这种情况下,如果有一个可以免费访问的存储空间来存储一些东西,那将非常有帮助。 CloudKit 提供了这样的东西,而不是完整的服务平台。

是的,它是有限的。无论如何,对某些人来说可能有用。例如,您的情况实际上可以支持 CloudKit。虽然 CloudKit 只是一个静态存储,它支持订阅。它监视一组条件并将事件通知推送到客户端。幸运的是,CloudKit 支持的唯一后台作业功能正是您所需要的。

无论如何,如果您需要更多,那么您可能需要考虑成熟的服务器。通常具有简单服务器端代码执行支持的简单 Web 服务也受到限制。

【讨论】:

  • 是的订阅听起来不错,但 CloudKit 数据库如何在没有任何服务器端代码的情况下获取新闻文章?您仍然需要 something 从某个地方获取新闻并将其放入数据库。
  • @alanp21 拉取新闻数据不必在服务器机器上完成。没有什么能阻止您从某个客户端发布新数据,而服务器只是提供数据。如果你想抓取一些新闻,你仍然可以在客户端机器上运行爬虫,并且可以只将结果发布到服务器。
【解决方案4】:

服务器端

正如你所说,CloudKit 不允许服务器端代码。

但也有可能。

Crons

您不希望每天都连接到 iCloud 仪表板以通过添加记录来执行推送。这里的一个解决方案是在 mac 服务器上编写一个应用程序(我猜 mac mini 作为服务器将在 CloudKit 中变得更流行),每天添加一个新的DailyCKRecord

订阅

订阅概念是客户端注册特定更新。例如,您可以创建一个名为Daily 的记录类型并让用户注册到它。您应该查看Apple documentation 和 WWDC14 视频(即使订阅不详细,这是一个很好的起点)。

好消息是推送通知与订阅概念相关联。所以基本上你说:向我发送一个通知,每个新的CKRecord 类型为Daily 添加。

BaaS 派对

使用 CloudKit 有什么意义(与 Parse 和其他相比?)

  • 价格:CloudKit 的价格非常优惠
  • 准备就绪:在 XCode 中单击 2 次即可开始使用
  • 用户一致性:您可以通过其 iCloud 帐户免费登录他的所有设备。具有非常好的隐私系统。您还可以与智能系统建立关系。

但是:

  • 您坚持使用 Apple 平台。我们甚至不知道我们是否可以导出数据..
  • 目前仅以数据为中心(无服务器端代码)
  • CloudKit 仪表板过于有限

未来

CloudKit 还是很新的。在 WWDC 上,它背后的一些人让我明白他们仍在努力工作。我敢打赌,他们正在研究两个重点:

  • 通过远程计划任务执行服务器端代码
  • CloudKit for Analytics(可视化方面)

编辑:Apple 人员完全了解并担心数据无法通过网络访问。这意味着有一天可能可以从其他平台访问。我在评论中读到,如果 CloudKit 不是更好,Apple 可能会购买 Parse,AFAIK 他们试图购买 Parse(据说是技能购买,但我们真的不知道)。

更新 WWDC15

CloudKit 现在可以在 JS 中使用,并且现在可以使用一些仪表板。拭目以待。

2016 年 2 月更新

CloudKit 现在支持Server-to-Server Web Service Requests

Web Services Reference

【讨论】:

    【解决方案5】:

    您不能上传任何代码以在 Apple 的服务器上运行?

    你可以,你不能。您不能将代码/基于 SOAP 的 Web 服务上传到服务器,而是可以在服务器上上传/存储观察者,称为订阅。

    整个事情非常有限,没有可比性?

    我想说在CloudKitMBaas 中,客户端通过更窄更健壮的接口与服务器通信:您不能上传异国情调的 Web 服务来进行 XML 解析、数据库操作和基于在它上面触发推送通知,但RestFull 架构允许您对数据存储执行 4 种基本操作,并且通过订阅客户端可以获得有关对表执行的 INSERT / UPDATE / DELETE 操作的通知。

    我认为MBaas 只是服务器-客户端架构发展的下一步。首先,它似乎是有限制的,但您可以像在基于 SOAP 的 Web 服务世界中那样做所有事情。开发非常快速/可扩展/使用舒适,并且更容易控制权限/设置、维护服务器、安全性等事情,几乎不需要任何努力。

    【讨论】:

      猜你喜欢
      • 2010-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-05
      • 2016-02-22
      • 2017-08-08
      • 1970-01-01
      相关资源
      最近更新 更多