创建类似 iCloud 的服务器 [关闭]

Posted

技术标签:

【中文标题】创建类似 iCloud 的服务器 [关闭]【英文标题】:Creating an iCloud like server [closed] 【发布时间】:2011-08-04 20:22:31 【问题描述】:

所以,iCloud 仍处于保密协议之下,但我的问题与其说是关于 iCloud,不如说是如何实现受 iCloud 启发的东西。

我们都知道 iCloud 只是一种基于服务器的文档同步机制。我只是真的受到它的文档方面的启发。对我来说,专注于同步文档似乎是一种不同的范式。我编写的 Web API(数量不多)都是 SQL 数据库驱动的。

一个例子: 一个简单的博客文章通常是这样的: 数据库中的一行,包含标题、内容、发布日期、作者。 例如,如果您想更新标题,您可以更新数据库中的该行/列。很简单,直到您想要同步一群正在进行离线更改的客户端。

但是,如果一篇博客文章是一个单独的文档,那么它本身就维护着自己的内部结构,标题、内容等都在一个文件中。当您修改标题时,文档会在本地更新,然后将整个文档(或差异)推送到服务器。服务器只是用新文档替换旧文档,瞧,标题在服务器上更新。显然,这会导致合并冲突,但可以通过向客户端发送冲突文档来解决。

无论如何,我喜欢这种方法,我可以看到它对许多网络应用程序非常有用,尤其是那些希望支持离线修改数据并在互联网连接可用时轻松同步的应用程序,虽然它非常适合ios

我的问题:我所说的内容有名称吗?是否有一些有用的阅读材料可用于学习如何实施这种技术?

换句话说(编辑)

iCloud API(目前在 NDA 下)非常酷,我想开始将我的 iOS 应用程序中的数据组织为与文档服务器同步的文档,而不仅仅是通过一些 REST api 同步的普通核心数据对象。 如果您可以部署一个为您的 iOS 应用定制的类似 iCloud 的服务器,该有多酷?!

【问题讨论】:

【参考方案1】:

IMPO 数据库方法比处理附加文件更实用。但这可以通过 php 或 C++ 函数来完成。我做过类似的事情,你通过 C++ 编辑一个文件,然后放入一个文件夹,该文件夹可以是任何将与服务器同步的文件夹。

【讨论】:

我并不是在谈论使用文件系统。您也可以使用数据库来实现基于文档的服务器(每个文档都有一行,内容有一个列,关于文档的每条元数据都有列)。我对将服务器级别的数据视为同步文档与更新行/列的范式差异更感兴趣。 你仍然会有行,而且你会有文档?为什么要让它变得困难,简单的就是最好的。只要有行并更新它们。无论如何,这些行都有信息,更新一行然后检索文档,打开信息,更改它,保存并更新它可能需要更少的时间。我不知道这是否有问题,但我真的没有看到。【参考方案2】:

经过更多研究,我意识到我正在寻找的东西称为Document-oriented Database,并且我选择了Apache CouchDB 作为一个很好的面向文档的数据库,用于我的 iPhone 应用程序。它与 iCloud 并不完全相同,但有许多相似的功能。

【讨论】:

以上是关于创建类似 iCloud 的服务器 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

是否有 C++ CalDav 协议库可以连接到 iCloud//Yahoo [关闭]

使用身份验证服务访问 iCloud 日历

在 iPhone 设置中禁用每个应用程序的 iCloud

为 iOS(或类似)在线创建数据模型和 Web 服务的网站? [关闭]

iOS EKEvent Store 在循环中重新创建 iCloud 日历,不会保存本地。

如何在 iPhone 中设置 iCloud Root?