[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>
 本文转自 陈本峰 51CTO博客,原文链接:http://blog.51cto.com/wingeek/273138 ,如需转载请自行联系原作者



相关文章
|
2天前
|
域名解析 缓存 网络协议
Web基础与HTTP协议
通过掌握这些基础知识和技术,开发者可以更加高效地构建和优化Web应用,提供更好的用户体验和系统性能。
33 15
|
1月前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
174 45
|
17天前
|
前端开发 安全 JavaScript
2025年,Web3开发学习路线全指南
本文提供了一条针对Dapp应用开发的学习路线,涵盖了Web3领域的重要技术栈,如区块链基础、以太坊技术、Solidity编程、智能合约开发及安全、web3.js和ethers.js库的使用、Truffle框架等。文章首先分析了国内区块链企业的技术需求,随后详细介绍了每个技术点的学习资源和方法,旨在帮助初学者系统地掌握Dapp开发所需的知识和技能。
2025年,Web3开发学习路线全指南
|
22天前
|
监控 前端开发 JavaScript
使用 MERN 堆栈构建可扩展 Web 应用程序的最佳实践
使用 MERN 堆栈构建可扩展 Web 应用程序的最佳实践
29 6
|
24天前
|
存储 前端开发 JavaScript
如何在项目中高效地进行 Web 组件化开发
高效地进行 Web 组件化开发需要从多个方面入手,通过明确目标、合理规划、规范开发、加强测试等一系列措施,实现组件的高效管理和利用,从而提高项目的整体开发效率和质量,为用户提供更好的体验。
27 7
|
28天前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
|
28天前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
36 2
|
1月前
|
监控 前端开发 JavaScript
探索微前端架构:构建可扩展的现代Web应用
【10月更文挑战第29天】本文探讨了微前端架构的核心概念、优势及实施策略,通过将大型前端应用拆分为多个独立的微应用,提高开发效率、增强可维护性,并支持灵活的技术选型。实际案例包括Spotify和Zalando的成功应用。
|
1月前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
52 1
|
1月前
|
XML 安全 PHP
PHP与SOAP Web服务开发:基础与进阶教程
本文介绍了PHP与SOAP Web服务的基础和进阶知识,涵盖SOAP的基本概念、PHP中的SoapServer和SoapClient类的使用方法,以及服务端和客户端的开发示例。此外,还探讨了安全性、性能优化等高级主题,帮助开发者掌握更高效的Web服务开发技巧。