独立的数据层(Isloating the Data Layer)
普通的应用没有真正的数据层:
第一步,要独立数据层:
例如:如果Ajax也能够用通过JSON请求获取信息,要改成通过一个中间对象来获取数据。
这个对象决定是从服务器上、本地、或者同时从这2者中获取数据。
也可以考虑这个中间对象作为 data switch, 实现 Data Layer的接口
第一步通过这个data switch向Data Layer获取数据
第二步:如果增加了本地数据层,有Data switch进行切换:
Modality(特征?形式?)
最基本的离线使用的问题就是要确定Modality
- Modal Application:相对于Online Modes,是很明确地离线使用,通过用户界面可以表现出来。用户很清楚地知道现在的使用模式,手工进行切换
- Modeless Application:在online Mode和Offline Mode使用对用户是透明的,界面没有什么变化。用户不需要切换状态,是程序自动完成的。
Modal:
当在线使用,和后台服务器进行通讯;当离线使用,和本地服务器进行通讯。数据必须在切换模式的时候进行同步。
Modeless:
Modeless假设在离线状态下使用,或者随时都有可能离线。应用程序尽可能的使用本地数据(local store),并且不断地、小数据量通过后台服务和服务器进行数据同步。
数据同步(Data Synchronization)
有数种方式可以用在数据同步中,但是没有一种是适合任何情况的。最终选择的方案根据系统的不同而不同。
Manual Sync:
最简单的方式,有客户决定。可以通过将本地的所有数据进行上传覆盖服务器的数据,或者下载服务器上的数据覆盖本地的数据。
要求: 数据量不能大。
Background Sync:
由应用程序在服务器和本地之间进行不断地同步。这个通过每隔一段和服务器进行通讯,让服务器push/stream数据到客户端(在Ajax术语中,叫做Comet)
没有评论:
发表评论