【发布时间】:2012-02-21 21:46:19
【问题描述】:
我正在构建一个 iOS 客户端应用程序来与现有的后端架构进行交互。为了减少延迟、API 调用和负载,最好在客户端“缓存”模型数据以加快索引速度,然后根据需要对客户端/服务器端进行相应的更新。
当前的理论堆栈如下所示:
Server Side >>>>>>>>>>>>>>>>> Client Side
-----------------------------------------
PHP >> JSON >> CORE DATA >> UIKit Objects
注意: 同样值得注意的是,iOS 客户端虽然在内部遵循 MVC,但本质上是更大的 MVC 客户端-服务器架构中的“视图”。因此,就像在用户操作后更新模型或在模型更改后更新视图一样,服务器需要与客户端更改同步,而客户端需要与服务器端更改同步。
一些背景:
A.许多不同的数据结构可能会通过管道,并且必须动态构建成UIViews。可能必须定义模式(除了记住可接受的对象结构是什么之外,我不确定是否有“最佳方式”来遵守JSON 模式客户端)。我已经意识到需要将与创建自定义视图(“视图”模型)相关的模型数据与将在这些视图中呈现的模型数据(“常规”模型)分开。
B.最终用户应该能够立即CRUD(创建、读取、更新、销毁)这些视图中呈现的大多数数据(但不能对视图本身进行 CRUD)。他们以后可能需要在 Web 界面或其他上下文中查看此内容。
C. RestKit 看起来是从 API 到 JSON 到 COREDATA 的一个很好的候选者。当需要将客户端模型副本推送到服务器时,我需要确定它是否在结构上支持回调。也许最好的方法是在客户端模型中记录发生更改并通知任何基于 RestKit 的 HTTP 管理器将其传递给服务器。
终极问题: 任何人都可以谈论这种架构的最佳实践、陷阱、技巧和框架吗? (特别是在性能和客户端和服务器之间的工作分配方面,但也非常感谢一般建议。)
【问题讨论】:
标签: iphone ios json core-data architecture