[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>
本文来自优快云博客,转载请标明出处: http://blog.youkuaiyun.com/WinGeek/archive/2008/02/15/2096415.aspx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值