Core data 通过解析进行核心数据同步
我对开发一个库感兴趣,该库将通过Parse mobile后端跨设备同步核心数据模型。我想镜像iCloud core data sync试图提供的功能 为什么不使用iCloud或iCloud? 我目前正在一个生产应用程序中使用iCloud core data sync,它是。我还想提供独立于苹果ID的认证,这也是我想离开iCloud的另一个原因。就合奏而言,我不确定这是否仍然适用于Dropbox。 我还没有开始开发图书馆。我正在寻找关于我的计划的反馈,该计划概述如下。这项设计是基于 图书馆的总体设计:Core data 通过解析进行核心数据同步,core-data,parse-platform,dropbox,sync,ensembles,Core Data,Parse Platform,Dropbox,Sync,Ensembles,我对开发一个库感兴趣,该库将通过Parse mobile后端跨设备同步核心数据模型。我想镜像iCloud core data sync试图提供的功能 为什么不使用iCloud或iCloud? 我目前正在一个生产应用程序中使用iCloud core data sync,它是。我还想提供独立于苹果ID的认证,这也是我想离开iCloud的另一个原因。就合奏而言,我不确定这是否仍然适用于Dropbox。 我还没有开始开发图书馆。我正在寻找关于我的计划的反馈,该计划概述如下。这项设计是基于 图书馆的总体设
我有什么遗漏吗?这种方法有哪些潜在缺陷?我听说同步很难,这类任务应该留给最有经验的开发人员吗?我不是最有偏见的响应者,因为我是集成框架的开发人员,但让我谈谈我的想法 就集成本身而言,它是一个后端不可知框架。是的,它可以与iCloud和Dropbox Sync API一起使用,但也可以与CloudKit、Dropbox核心API(未弃用)和WebDAV一起使用。还有一个定制的Node.js服务器和一个包,它允许您自己使用Heroku和S3托管数据 因此,即使你不想坚持使用苹果,也有其他选择。但更重要的是,您可以编写自己的后端适配器类。大多数代码大约有500行,您可以基于现有的一个类。这将允许您创建一个后端来存储数据并使用Parse进行身份验证,并将数据合并留给集成。这样做的另一个优点是,您可以在将来轻松地移动到其他后端,或者将其作为选项提供。(CloudKit绝对值得一看。) 但是,假设您决定不使用其他人的框架,那么是的,您的方法听起来是全局正确的 您只需观察
nsmanagedobjectcontextdidsaveinnotification
并从userInfo
字典中提取更改,而不是通过接口执行CRUD操作
我相信你会发现很多你没有想到的小事情,正是这些细节使得同步变得困难。一个这样的例子是,您需要构建足够健壮的东西来处理失败,例如在应用程序退出之前没有完成解析操作。您可能需要在每个对象上都有一个更改标记,以便可以检索自上次同步以来更改的对象
如果你的应用程序只有少量数据,那么构建这个系统并不十分困难,但是随着你的数据开始变大,你需要开始使用批处理之类的方法来降低iOS上的内存数据。这类事情可能需要很多时间。例如,Ensemble2的API与Ensemble1几乎相同,但我花了大约4个月的时间重写了批处理之类的东西,以提高内存效率
我使用您描述的方法构建了一个原型应用程序(应用程序是社交的,不是同步的,因此没有集成)。我使用了CloudKit,它与Parse非常相似。大约需要1000行Swift代码才能使整个数据上传/下载正常工作,并有一个本地核心数据缓存。这当然是可以做到的,特别是如果您已经很好地了解核心数据的话。否则可能会有一个学习曲线
我提倡像Ensembles这样的框架,只是因为它已经解决了您需要解决的许多小细节,并且不会将您锁定到特定的后端。如果Parse决定提高他们的费用,你可以自由地搬到其他地方。我不是最有偏见的回应者,因为我是Ensembles框架的开发者,但让我谈谈我的想法 就集成本身而言,它是一个后端不可知框架。是的,它可以与iCloud和Dropbox Sync API一起使用,但也可以与CloudKit、Dropbox核心API(未弃用)和WebDAV一起使用。还有一个定制的Node.js服务器和一个包,它允许您自己使用Heroku和S3托管数据 因此,即使你不想坚持使用苹果,也有其他选择。但更重要的是,您可以编写自己的后端适配器类。大多数代码大约有500行,您可以基于现有的一个类。这将允许您创建一个后端来存储数据并使用Parse进行身份验证,并将数据合并留给集成。这样做的另一个优点是,您可以在将来轻松地移动到其他后端,或者将其作为选项提供。(克劳克)