智能客户端数据缓存和数据同步关键技术研究.doc
上传人:sy****28 上传时间:2024-09-14 格式:DOC 页数:2 大小:70KB 金币:18 举报 版权申诉
预览加载中,请您耐心等待几秒...

智能客户端数据缓存和数据同步关键技术研究.doc

智能客户端数据缓存和数据同步关键技术研究.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

18 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

智能客户端数据缓存和数据同步关键技术研究程远ChengYuan(中国联合网络通信有限公司南阳市分公司信息化支撑中心,河南南阳473000)摘要:智能客户端要能够顺利的运行,包含有网络/服务连接管理、数据缓存管理、数据冲突处理管理,数据同步处理以及Web服务。通常要解决的问题包括有:应用程序可以确定它处于联机状态还是脱机状态;如果连接能够以不可预计的次数进行更改,那么应该可以通知依赖于连接状态的应用程序组件;应用程序存储数据,陈旧数据的刷新;应用程序无法访问所有必需的数据或服务时,采用离线的运作方式;应用程序从脱机变为联机时,应用数据与服务器同步处理。关键词:智能客户端;数据缓存;数据同步;离线操作智能客户端应用程序实现的一个目标就是能够在脱机状态下工作,因此就必须下载数据并将其缓存到客户端上。数据缓存(DataCache)[1]主要为客户端在离线情况下进行业务操作提供数据支持。它的职责是在客户端离线操作时完成以下功能:在网络连接的时候将数据下载到本地缓存中,当网络断开时用户能够利用缓存的数据继续正常工作,而在系统恢复连接以后,客户端的数据能够与服务器进行同步。用于支持智能客户端在离线状态时继续工作所需的数据,称为参考数据。对参考数据在本地进行缓存,并可以在过期后进行刷新。参考数据按客户端所作的操作及其提供的用途,可以将它们分为两类:只读引用数据与瞬态数据。只读引用数据是不会由客户端更改的,并且被客户端用于引用目的的数据。瞬态数据是可以在客户端发生改变的缓存数据。这种类型的数据主要包括因客户端通过新增、修改或删除等操作而被更改的数据。因此对瞬态数据的管理与维护,以及当网络连通后与服务器进行同步的问题都比较复杂。下载的参考数据会在一段时间后变旧,因此要对参考数据指定过期策略来刷新参考数据。数据缓存管理的过期刷新示意图如图1所示:缓存管理监视缓存数据是否已经过期,如果过期,缓存管理调用刷新控制的指定回调方法刷新缓存。在启动下在前,刷新控制将该数据添加到缓存中以防止信息丢失,然后再调用数据加载来启动下载数据。数据缓存管理(DataCacheManager)向服务器端发送下载数据请求需求,把数据缓存到本地机上。对于要进行短期缓存的数据,可以下载到DataSet数据集当中;对于要进行长期缓存的数据,可以以XML文件进行保存。客户端应用程序能够在离线状态下工作就必须先把数据缓存到本地,在本地进行维护,然后与服务器同步数据。客户端与服务器的数据同步[1][2][3]是指智能客户端应用程序在离线状态下操作(主要是对服务器端数据的创建、修改和删除等操作)的数据在联机后自动更新到服务器上。由于这些操作有一定的先后顺序与逻辑,并且本系统设计时客户端应用程序调用的是WebServices所提供的服务。服务器端的数据由于队列的有序性,确保了数据先后执行的顺序,保证了数据的同步。对于客户端数据,由于采用了数据缓存更新策略,使数据能同步,其详细的设计请参照下一章相关内容。客户端应用程序所作的操作由于是采用的离线操作,因此在与服务器进行数据同步时就可能发生数据的冲突。通常处理数据并发有两种:开放式并发:开放式并发是一种积极的数据处理方式,它关注的是原始数据的变更,发现与原始数据不一致时,通常会触发错误并询问用户希望如何处理,用户可以选择放弃更改数据或覆盖已经更改的数据。保守式并发:保守式并发是当用户编辑数据库中的某行数据时,会使此数据一直保持锁定。在锁定期间,其它用户不能更改数据,这样可以最高程度的保证数据的完整性,但是可用性低。一旦用户不能及时处理数据,数据就总是处于锁定状态。并且,保守式并发会导致系统性能大大降低,因此大部分的解决方案不会采用这种方式。本文采用的是开放式并发数据处理方式。然而,产生数据冲突时,不管采用任何一种方法来处理开放式并发策略,都可能出现并发失败的情况,对于整个系统的性能都会有很大的影响,因此为了降低并发式数据冲突失败的效率,尽量减少数据冲突。可以从两个方面来考虑:1.在本地数据缓存更新策略中进行了优化。可以为客户端缓存的数据设置一个合理的有效时间,在一定的有效时间内把它视为新数据,有效期一过就刷新数据。系统中尽量把缓存数据转换为可预测的或者个人数据,以使其具备可预测性。虽然这并不能消除并发问题,但是可让并发问题的概率降低。2.在服务器端的WebServices中进行了相应的处理。在WebServices服务器端对数据进行更新时尽量处理并发问题。在WebServices本文采用的是.NET开发环境,因此使用数据集(DataSet)和数据适配器(DataAdapter)共同协作来实现开放式数据并发。数据集是ADO.NET提供的一个重要的类,它拥有访问数据的强大功能,已经充分考虑了事