您的位置:首页 > Web前端

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

2008-02-15 09:17 381 查看
之前的文章讲解了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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: