如何实现在线数据的离线浏览和修改
昨天,老总提出来这样一个需求,如果用户在网络中断的时候,如何还能够继续操作他职能范围内的数据,然后等网络开通之后,将修改后的数据在上传到服务器。在这样的过程中,会出现以下情况,员工A和员工B同时负责一个职能,他们对数据具有相同的访问能力,或者B比A访问能力大,A和B在离线的时候,保存在各自本地的是数据的同一个版本,A首先更新了这个版本,然后上传到服务器,这时候,如果B也是离线修改,需要将结果上传到服务器的时候,上传会失败,但非常可能的情况是B的数据才是最后想要的,这时候怎么办?
离线浏览和离线修改的解决方案为每次关闭前,将最后用户所操作的数据,序列化成DataSet,然后作一个离线浏览器,这个从技术上来说并不困难,困难的就是增加了上述问题。昨天第一次提出这样的问题,首先就想到了版本控制软件,解决之道,第一种,是采用数据独占的方式 ,即“严格锁”,只要一份数据被人下载到客户端,就将服务器端该数据冻结起来,不让其受到其他人的修改,但其他人可浏览。第二种方法为类似cvs的“乐观锁",就是服务器端不进行锁定,假如A修改了数据,这时候B再更新,服务器首先检查服务器端数据版本和本地数据版本是否一样,一样说明之前没有人修改,直接上传,不一样,通过日志,查找最后修改该数据的人,二人进行协商,最后确定结果。
通过数据固定化和乐观锁,应该能解决离线浏览和离线修改的功能,思考的不是非常全面,以后会有所增删
离线浏览和离线修改的解决方案为每次关闭前,将最后用户所操作的数据,序列化成DataSet,然后作一个离线浏览器,这个从技术上来说并不困难,困难的就是增加了上述问题。昨天第一次提出这样的问题,首先就想到了版本控制软件,解决之道,第一种,是采用数据独占的方式 ,即“严格锁”,只要一份数据被人下载到客户端,就将服务器端该数据冻结起来,不让其受到其他人的修改,但其他人可浏览。第二种方法为类似cvs的“乐观锁",就是服务器端不进行锁定,假如A修改了数据,这时候B再更新,服务器首先检查服务器端数据版本和本地数据版本是否一样,一样说明之前没有人修改,直接上传,不一样,通过日志,查找最后修改该数据的人,二人进行协商,最后确定结果。
通过数据固定化和乐观锁,应该能解决离线浏览和离线修改的功能,思考的不是非常全面,以后会有所增删
作者:jillzhang
出处:http://jillzhang.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://jillzhang.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。