[Web开发] 微软的RSS协议扩展 - FeedSync 介绍 (3)

之前的文章讲解了FeedSync XML 文件的格式,以及如何实现数据更新同步。  下面介绍当发生数据一致性冲突的时候, FeedSync 如何处理。

还是基于同样的假设, 我有一个Feed 文件描述今天我的任务列表(如下)。 我有2台电脑,台式机电脑A以及笔记本电脑B, 在两台电脑上都可以对任务列表进行修改。

   <item>
      
<sx:sync id="ep1.100" updates="3" deleted="false" noconflicts="false">
        
<sx:history sequence="3" when="2007-11-29T06:27:13Z" by="B"/>
        
<sx:history sequence="2" when="2007-11-29T06:27:13Z" by="A"/>
        
<sx:history sequence="1" when="2007-11-29T06:27:11Z" by="A"/>
      
</sx:sync>
      
<title>Buy Groceries</title>
      
<description>Get milk, eggs, butter and bread</description>
   
</item>

现在在台式机电脑A 上,我把 "Buy groceries” 那项的description改成“Get milk, eggs, butter and rolls” 。 这个时候A上的Feed文件变成

    <item>
      
<sx:sync id="ep1.100" updates="4" deleted="false" noconflicts="false">
        
<sx:history sequence="4" when="2007-11-29T06:27:13Z" by="A"/>
        
<sx:history sequence="3" when="2007-11-29T06:27:13Z" by="B"/>
        
<sx:history sequence="2" when="2007-11-29T06:27:13Z" by="A"/>
        
<sx:history sequence="1" when="2007-11-29T06:27:11Z" by="A"/>
      
</sx:sync>
      
<title>Buy Groceries</title>
      
<description>Get milk, eggs, butter and rolls</description>
    
</item>

在笔记本电脑B 上, 我把"Buy groceries” 的标题改成 "Buy groceries - DONE” 。这个时候B上的Feed文件变成

    <item>
      
<sx:sync id="ep1.100" updates="4" deleted="false" noconflicts="false">
        
<sx:history sequence="4" when="2007-11-29T06:27:15Z" by="B"/>
        
<sx:history sequence="3" when="2007-11-29T06:27:13Z" by="B"/>
        
<sx:history sequence="2" when="2007-11-29T06:27:13Z" by="A"/>
        
<sx:history sequence="1" when="2007-11-29T06:27:11Z" by="A"/>
      
</sx:sync>
      
<title>Buy Groceries - DONE</title>
      
<description>Get milk, eggs, butter and bread</description>
    
</item>

然后,在Server 上做同步的时候, 因为电脑B 上做改动的时间晚于电脑A, 最后的结果将是电脑B 上版本“胜出”电脑A 上的版本。而电脑A 上的版本会被保留大到了<sx:history> 标签里面。 以下是同步后,server上的版本:

    <item>
      
<sx:sync id="ep1.100" updates="4" deleted="false" noconflicts="false">
        
<sx:history sequence="4" when="2007-11-29T06:27:15Z" by="B"/>
        
<sx:history sequence="3" when="2007-11-29T06:27:13Z" by="B"/>
        
<sx:history sequence="2" when="2007-11-29T06:27:13Z" by="A"/>
        
<sx:history sequence="1" when="2007-11-29T06:27:11Z" by="A"/>
        
<sx:conflicts>
           
<item>
             
<sx:sync id="ep1.100" updates="4" deleted="false" noconflicts="false">
               
<sx:history sequence="4" when="2007-11-29T06:27:13Z" by="A"/>
               
<sx:history sequence="3" when="2007-11-29T06:27:13Z" by="B"/>
               
<sx:history sequence="2" when="2007-11-29T06:27:13Z" by="A"/>
               
<sx:history sequence="1" when="2007-11-29T06:27:11Z" by="A"/>
             
</sx:sync>
             
<title>Buy Groceries</title>
             
<description>Get milk, eggs, butter and rolls</description>
           
</item>
        
</sx:conflicts>
      
</sx:sync>
      
<title>Buy Groceries - DONE</title>
      
<description>Get milk, eggs, butter and bread</description>
    
</item>

这时候,我在电脑B上会从Server 那边收到这个冲突的通知, 我可以选择解决这个冲突。 最终server那边的feed文件变成

    <item>
      
<sx:sync id="ep1.100" updates="5" deleted="false" noconflicts="false">
        
<sx:history sequence="5" when="2007-11-29T06:27:16Z" by="B"/>
        
<sx:history sequence="4" when="2007-11-29T06:27:13Z" by="A"/>
        
<sx:history sequence="4" when="2007-11-29T06:27:15Z" by="B"/>
        
<sx:history sequence="3" when="2007-11-29T06:27:13Z" by="B"/>
        
<sx:history sequence="2" when="2007-11-29T06:27:13Z" by="A"/>
        
<sx:history sequence="1" when="2007-11-29T06:27:11Z" by="A"/>
      
</sx:sync>
      
<title>Buy Groceries - DONE</title>
      
<description>Get milk, eggs, butter and bread</description>
    
</item>

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值