最近做一个系统,服务器和客户机之间的网络很不稳定,所以数据需要存在本地,等服务器和客户机之间联通了在把数据上传的服务器上。
       服务器数据库使用sql server 。
       我的想是:
       客户端用xml文件来保存数据,在固定的时间上传数据到服务器,如果服务器无法联通就等待下一次联通。
       
       现在就有一个问题:客户端可能有几个,如果客户端A和B都对数据做了修改。在如何保证客户端xml数据和sql server之间的数据的正确性。 
       
       如果客户机第一次上传了数据,服务器和客户端都有了这份数据。当客户机在上传后,在下一次联通的时候, 客户机和服务器之间的同步问题。是应该同步客户机,还是服务器。因为有多个客户端,服务器的数据和客户端的都有可能做了修改。
       

解决方案 »

  1.   

    用标志(比如更新数据时的TimeStamp)来协同同步。如果多个客户出现冲突,可以选择一个牺牲品。
    也就是说要让客户知晓断网期间的交易(或录入)有可能会被取消。本地存储也可以用SQL CE
      

  2.   

    如果客户端A和B都对数据做了修改,那就要看先后了
    在A改了某数据后,B再修改,那A的改动肯定是被覆盖了
    而且只能用服务器同步客户端,因为服务器只有一个
    而客户端有N个,所以当连通的时候,应该让用户先更新服务器的数据
    才可以让客户提交XML数据
    有点像团队开发工具的方式,如SVN
      

  3.   

    开始也考虑了用SQList做本地数据库,
    数据量也不是很大 ,也就100条的样子,用xml操作也很方便。呵呵 谢谢了 
      

  4.   

    不太好实现,尤其是多个客户端的情况下,可以看看SVN的源码,
      

  5.   

    我的意思是..网络通的时候你要主客户端先更新了服务器的改动
    才可以发送XML提交他自己的改动
    这个和网络什么时候通没关系
    你过10天再和服务器连接的话
    你就先更新这10天的数据
      

  6.   

    goomou的意思应该客户机上对数据做差异性的标识,那么修改的时间在更新时间后的话,这些数据是需要上传的,上传完成后,在对数据做同步。同时这个时候做同步的话会对前面的修改进行覆盖,牺牲掉前面的。