iam*_*4de 7 iphone data-synchronization
我正在开发一个普通的iPhone应用程序,它从服务器(XML,JSON等)中提取数据,我想知道实现同步数据的最佳方法是什么.标准是速度(较少的网络数据交换),健壮性(更新失败时的数据恢复),离线访问和灵活性(当数据库结构略有变化时适应,如新列).我知道它因应用程序而异,但你们可以分享一些策略/经验吗?
对我来说,我在考虑这样的事情:
1)在iPhone中存储上次修改日期
2)启动时,发送一条消息,如getNewData.php?lastModifiedDate = ...
3)服务器将仅处理和发回上次修改的数据.
4)此数据的格式如下:
<+><data id="..."></data></+> // add this to SQLite/CoreData
<-><data id="..."></data></-> // remove this
<%><data id="..."><attribute>newValue</attribute></data></%> // new modified value
我也不想为每个属性制作<+>,< - >,<%> ...,因为它太复杂了,所以当收到<%>字段时,我只想删除数据使用指定的id,然后再次添加它(假设此处的id不是某些自动自动递增的字段).
5)下载并更新所有内容后,我将更新"上次修改日期"字段.
这个策略的主要问题是:如果在我更新某些内容时网络出现故障=>上次修改日期尚未更新=>下次重新启动应用程序时,我将不得不再次执行相同的操作.更不用说潜在的不一致数据了.如果我使用临时表进行更新并使整个事件成为原子,那么它将起作用,但是如果更新太长(大量数据更改),则用户必须等待很长时间才能获得新数据.我应该为每个数据字段使用Last-Modified-Date并逐步更新数据吗?
我将从使更新例程原子化开始,因为您将有足够的时间来弄清楚如何使客户端-服务器通信正常工作。
之后是考虑将其调整为增量的好时机,但前提是您进行了一些测试以确定是否确实有必要。如果您将更新协议调整为尽可能低的带宽,您可能会发现即使是“大”更新下载速度也足够快。
另一种看待它的方法是问自己,当普通用户进行同步时,多久会出现网络问题?您可能不想针对不太可能的情况进行调整。
如果您尝试优化(最小化)数据传输,您可能需要考虑使用与 XML 不同的格式,因为 XML 相当冗长。或者至少您可能希望通过使每个元素名称和属性尽可能小来以 XML 可读性换取空间,并消除所有不必要的空格。
| 归档时间: |
|
| 查看次数: |
611 次 |
| 最近记录: |