详细描述
首先参考图1,一个框图示出根据本发明的实施例的用于通过发布者和订阅者之间的web聚合频道更新web聚合项目的系统100。在一示例性示例中,系统100示出发布者A操作的第一设备102和订阅者B操作的第二设备104。第一设备102和第二设备104可以是一般的计算设备,如计算机、移动计算设备(例如,个人数字助理(PDA)、蜂窝电话、便携式游戏控制台等)、或其组合。例如,第一设备102可以包括能够处理计算机可执行指令、代码、例程、应用程序、软件等的处理器(112)。第一设备102还包括计算机存储介质116和用户界面(UI)114。
例如,计算机存储介质116包括RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁存储设备、或可以用于存储所需信息并可由通用计算机(例如,服务器计算机104或客户机设备108)访问的任何其它介质。同样,第一设备102可以包括通信介质,通信介质一般用诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。本领域技术人员熟悉已调制数据信号,其一个或多个特征以将信息编码在该信号中的方式来设置与改变。诸如有线网络或直接线连接等有线介质,以及如声学、RF、红外线及其它无线介质等无线介质都是通信介质的示例。以上的任一种的组合也包括在计算机可读介质116的范围之内。
仍参考图1,发布者A可能拥有可用来提供给订阅者B的媒体内容。例如,发布者A可能拥有要与可能对其感兴趣的其他人共享的文章。如此,发布者A建立聚合频道(例如,RSS源)106以使订阅者B可经由聚合频道106获得聚合项目(例如,文章)110。回过来,订阅者B订阅聚合频道106以接收聚合项目110。在另一示例中,发布者A可以通过同一聚合频道106发布或张贴一个或多个项目(例如,同步项目110-2和同步项目110-3)。一旦聚合项目110经由常见的通信网络108(例如,互联网、内联网等)从第一设备102传输到第二设备104,则订阅者B可以接收发布者A所发布的聚合项目110的一个副本。
例如,发布者A可以操作其中发布者A提供聚合频道以供订阅(例如,RSS源)的网站,其中订阅者B可以直接订阅。在另一示例中,发布者A可以向web聚合聚集网站或服务提供/发布聚合项目110以便诸如订阅者B等其它用户可以订阅聚合频道106。需要理解,虽然使用RSS协议描述了本发明的各实施例的示例,但也可以使用其它web聚合格式或协议而不背离本发明的范围。
现参考图2A到图2C,各框图示出根据本发明的实施例的同步元数据202、更新元数据228和同步摘要230的示例性实现。例如,如图1所示,订阅者B接收发布者A发布或张贴的聚合项目110。然而,假定订阅者B发现发布者A所发布的文章中存在印刷错误并想要更新或修改该文章。当前协议或惯例只准许订阅者B对聚合频道106张贴批注,通知发布者A存在印刷错误。如此,现有协议准许单主和单向系统,其中发布者A是可以修改或更新包括在web聚合项目110中的媒体内容的唯一个人。如果订阅者B一收到文章并将其存储在第二设备104中,他或她就希望修改该文章,则现有web聚合协议不准许将经更新的或经修改的文章同步传输到发布者A。
现参考图2A,其示出在聚合项目的每一个(例如,聚合项目110-1)中建立或定义同步元数据202的实现。本发明的各方面将同步元数据202应用于每一聚合项目110以实现对聚合项目的高效且同步的更新。在该示例中,同步元数据202包括表1中的以下字段及其相应描述:
字段 |
类型 |
描述 |
必需 |
项目ID |
串 |
项目的全局唯一ID。其可以是16字节UUID的表示。 |
是 |
最后更新者 |
串 |
最后更新项目ID所标识的项目的个人的全局唯一ID。其可以是16字节UUID的表示。 |
是 |
已删除 |
布尔 |
表示项目的删除并指定墓碑。 |
否 |
表1:同步元数据字段。
在一实施例中,同步元数据202可以使用可扩展标记语言(XML)中的“<history>”(历史)标签在RSS格式下实现。在一实施例中,web聚合项目包括诸如数据226等描述与其相关联的媒体内容的其它数据或元数据。例如,RSS协议下的每一web聚合项目都使用“<item>”(项目)元素,并且同步元数据202被包括在“<history>”(历史)子元素下。每一<history>子元素都至少包括项目ID(ID)字段204、“最后更新者(LASTUPDATER)”字段206、和可任选的“已删除(DELETED)”字段208。在一实施例中,每一web聚合项目110都恰好包括一个与其相关联的<history>子元素。
使用先前的文章作为说明,发布者A可以在项目ID字段204中将该文章标识为“0000000000000001”而“最后更新者”字段206标识发布者A。发布者A可能希望将“已删除”字段208保留为空白,因为其是可任选字段。
在每一<history>子元素中,更新元数据228的一个或多个实例等于对web聚合项目110做出改变或修改的独特端点(例如,发布者A或订阅者B)的数量。每一组更新元数据228都包括“由(BY)”字段210和“序列号(SN)”时间字段212。例如,表2更详细地描述了更新元数据228:
字段 |
类型 |
描述 |
必需 |
由 |
串 |
最后更新项目ID所标识的项目的个人的全局唯一ID。必须是16字节UUID的表示。 |
是 |
序列号 |
64位或更多整数值 |
表示由端点“何时”做出改变的整数。(由每次做出持久保存到RSS源的更新或一组改变,则递增“由”字段的时间信号计数)。 |
是 |
表2:更新元数据。
例如,最初,在发布者A首先发布web聚合项目110时,“由”字段210可以包括“发布者A”且“序列号”时间字段212可以包括指示何时记录了更新和改变的时间值。在一实施例中,“序列号”时间字段212可以是来自时钟向量(或还被称为向量时钟)的值,该时钟向量是用来使用事件上的逻辑时钟来对分布式系统中的事件进行排序的数据结构。换言之,在发布者A更新web聚合项目110时,“序列号”时间字段212可以不直接与第一设备102中的时钟相关联(例如,格林尼治标准时间2006年7月12日,周三,下午5:05)。在另一实施例中,“序列号”时间字段212可以是虚拟或逻辑时钟值。还可以使用虚拟或逻辑时钟值的其它表示而不背离本发明的范围。
通过定义同步元数据202和更新元数据228,本发明的各实施例使用户或端点(例如,发布者A和订阅者B)能够通过RSS高效地同步任意数据。另外,在用户修改web聚合项目110中的媒体内容时,本发明的各方面向其呈现同步元数据202和更新元数据228(即,包括“序列号”时间字段212),如图2B示出的用户界面(UI)。在该替换实施例中,对话窗口214示出,web聚合项目一旦被更新(或被首次创建),则可以向用户呈现对话窗口214以更新同步元数据202和更新元数据228。例如,用户可以确认或修改与要发布的web聚合项目110相对应的项目ID字段204。类似地,用户在“最后更新者”字段206中输入标识用户的标识值。用户还可以任选地在“已删除”字段208中输入适当的信息。在更新元数据228中,用户可以适当地输入“由”字段210并递增“序列号”字段212。
在操作中,发布者A通过将媒体内容(例如,文档文章)与web聚合项目110相关联来在第一设备102处创建该web聚合项目110。在创建web聚合项目110时,发布者A定义同步元数据202包括诸如项目ID、“最后更新者”和/或“已删除”等值。发布者A经由web聚合频道(web聚合频道106)发布web聚合项目110以供其他用户(例如,订阅者B)订阅web聚合频道106。
如此,发布者A从订阅者B接收订阅请求并向订阅者B发送所发布的web聚合项目110。在订阅者B修改或更新web聚合项目110时,最初可能为空的同步元数据202和更新元数据228被提供给订阅者B。因为订阅者B和其他订阅者对web聚合项目110的媒体内容的修改做出贡献,所以本发明的各实施例提供使用web聚合频道的双向多主(例如,具有内容修改权限的多用户)通信。同样,无需向web聚合的发布者或订阅者洪泛与web聚合项目相关联的不必要的元数据,本发明的各方面简化该方案并提供最相关的信息来实现所需结果。
尽管上述同步元数据202和更新元数据228中的字段要求特定字符长度或数据类型(例如,16字节或“串”数据类型),但也可以使用或实现其他数据类型、要求或数据表示而不背离本发明的范围。
在一实施例中,各实施例启用web聚合项目的冲突检测和冲突解决。例如,假定在订阅者B从发布者A接收到web聚合项目110之后,订阅者B希望通过修改媒体内容(例如,校正印刷错误)来更新web聚合项目。订阅者B可以着手对媒体内容做出改变并在同步元数据202(例如,“最后更新者”=订阅者B)和更新元数据228(例如,“由”=订阅者B,且“序列号”=50)中输入适当的信息。为将该信息/改变传递回发布者A或也订阅同一web聚合频道106的其他用户,订阅者B可以着手发布经更新的web聚合项目。
现参考图2C,一框图示出web聚合频道106的同步摘要230的示例性实现。在一实施例中,同步摘要230包括关于给定源的所有项目的数据、元数据、和/或其它信息。在另一实施例中,同步摘要230还包括对与web聚合频道106相关联的所有web聚合项目做出的所有更新。在替换实施例中和例外的情况下,同步摘要230可能不包括与可以具有向量信息的项目相关联的数据、元数据、和/或信息。换言之,每一聚合项目将具有列出对每一聚合项目所做出的更新和与其相关联的其它信息的同步摘要。
仅出于说明目的且不作限制,因为聚合频道106只包括一个聚合项目,所以图2C中的同步摘要230与图2A中示出的更新元数据相匹配。使用同步摘要230,用户(包括发布者A和订阅者B)可以审阅属于web聚合频道106的web聚合项目的更新历史。
在一实施例中,订阅者B一旦更新了web聚合项目,则在同步摘要230中自动地传输并更新该经更新的信息。例如,在订阅者B完成对发布者A所发布的文章的改变之后,更新信息(例如,“最后更新者”=订阅者B和“序列号”=50)则与web聚合频道的同步摘要230进行了同步。在一实施例中,首先分析web聚合频道的同步摘要230来确定web聚合项目的更新元数据228中是否已包括相同的摘要内容。如果否,则用更新元数据228中的信息更新同步摘要230。
在替换实施例中,在发布者A从订阅者B接收到经更新的媒体内容时,本发明的各实施例使发布者A能根据更新元数据228和同步元数据202来确定媒体内容的两个版本之间是否存在冲突。在该示例中,在从订阅者B接收到经更新的媒体内容时,发布者A将来自订阅者B的经更新的媒体内容中的“最后更新者”中的值与他或她包括在web聚合项目中的原始媒体内容中的“最后更新者”值进行比较。如果值彼此相等,则发布者A下一步可以比较虚拟时钟值(例如,“序列号”值)来确定哪一版本是在较晚的时间更新的。如果经更新的媒体内容的“序列号”值大于原始媒体内容的“序列号”值,则经更新的媒体内容是该媒体内容的经更新的版本。如果经更新的媒体内容的“序列号”值小于或等于原始媒体内容的“序列号”值,则原始媒体内容比来自订阅者B的版本更新近。
另选地,如果“最后更新者”值不同,则发布者A可以着手评估更新元数据228是否包括与来自经更新的媒体内容的版本中的“最后更新者”信息相匹配的信息(例如,“由”值),或反之亦然。如果包括,则不存在关于哪一版本更新近的冲突。否则,存在关于哪一版本更新近的冲突。
在发布者A创建的文章的示例中,“最后更新者”是不同的,因为订阅者B对原始媒体内容做出了改变。在发布者A检查经更新的媒体内容的更新元数据228时,他或她将看到他或她在订阅者B更新该媒体内容之前创建了该媒体内容。如此,不存在冲突且同步摘要230适当地包括该媒体内容的完整的更新历史,且原始媒体内容由经更新的媒体内容所替换。
在存在冲突的情况下,在一实施例中,经由UI(例如,UI 310)向发布者呈现用于解决冲突的任意选择的列表。在一示例中,在两个端点或用户不知道其他人的改变而对web聚合项目做出独立的改变时,产生冲突。检测该冲突的一个示例可以是检查同步元数据202中的“最后更新者”字段(将在图4C中详细描述)和更新元数据228中的“由”字段。还可采用其它冲突检测机制或方法而不背离本发明的范围。在本发明的另一方面,可以禁用冲突检测机制。在又一替换实施例中,冲突检测机制可以评估与web聚合项目、web聚合频道或两者相关联的其它和附加元数据或信息。还可使用其它冲突检测和/或解决机制和方案而不背离本发明的范围。
一旦检测到冲突,则可以向用户提供选项列表来选择媒体内容的哪一版本应被用作web聚合项目的占优势的版本。例如,选项可以包括:
1.本地版本总是占优势;
2.远程版本总是占优势;
3.如果远程版本的“最后更新者”值等于原始发布者,则该远程版本占优势。否则,本地版本占优势。用户可以配置和定制其它冲突解决方案而不背离本发明的范围。
一旦解决了冲突,则在更新元数据228、同步元数据202和同步摘要230中更新占优势的版本。在替换实施例中,提供可任选的冲突元数据来指示由于冲突解决技术而选择或不选择特定版本。
在另一替换实施例中,如果发布者A希望删除web聚合项目的媒体内容,则发布者A可以任选地在“已删除”字段208中输入信息且同步元数据202也将包括这一删除信息。
现参考图3,一框图示出根据本发明的实施例的用于更新web聚合频道的同步摘要的系统300。在该图示中,一个或多个web聚合用户302订阅web聚合频道(例如RAA源)304或对其做出贡献。例如,web聚合用户302可以既是发布者又是订阅者,因为web聚合用户可以更新web聚合项目110。web聚合项目110可以存储在数据存储306中且在其首次被发布后在服务器计算机312处可用。例如,web聚合项目110可在发布者所维护的网站处可用且处理器308执行用于处理web聚合用户302和web聚合项目110之间的交互的计算机可执行指令。
在另一实施例中,处理器308被配置为管理用于在web聚合用户302和web聚合项目110之间提供交互的用户界面(UI)310。例如,UI 310可以向web聚合用户302呈现或触发对话窗口,如图2B中的窗口214。在另一实施例中,UI 310可以向web聚合用户302投影更新元数据228或同步元数据202的各部分以影响对web聚合项目110的同步更新。还应理解,web聚合用户302的每一个在物理上都可以位于服务器计算机312或其他web聚合用户302远程的位置。
在存在web聚合项目110的各种版本的情况下,同步摘要230适当地包括web聚合项目110的每一版本的更新元数据228和同步元数据202中所指示的信息。例如,假定接收到web聚合项目的第一版本和web聚合项目的第二版本(例如,在第一设备102、第二设备104或服务器计算机312处)。web聚合项目的第一版本指示对该web聚合项目的第一更新而web聚合项目的第二版本指示对该web聚合项目的第二更新。为该web聚合频道定义同步摘要230(如果尚未定义的话),且同步摘要230描述与给定web聚合频道的所有web聚合项目相关联的历史。聚集Web聚合项目110的各版本的每一个的同步元数据202并确定所聚集的同步元数据的次序。同步摘要230下一步用该web聚合项目的各版本的同步元数据的所确定的次序来更新。
在一实施例中,同步摘要230合并web聚合项目的所有版本的同步元数据。在该示例中,假定同步摘要230正在合并web聚合项目110的两个版本的同步元数据202并且假定已经确定这两个版本中的一个胜过另一个(例如,使用上述一种或多种冲突解决技术)。同步摘要230首先将同步摘要230中的“最后更新者”值设置为等于占优势的“最后更新者”。下一步,对于两个版本的更新元数据228中的每一更新条目,同步摘要230包括两个版本中具有共同的“由”属性的每一更新条目并将两个版本的较大的“序列号”值应用于同步摘要230。
例如,如果两个版本在其更新元数据中都包括发布者A处于一个“由”字段中,但占优势的版本具有为250的“序列号”值而非占优势的版本具有为200的“序列号”值。在这种情况下,同步摘要将具有条目:“由”=“发布者A”,“序列号”=“250”。
同样,同步摘要230添加更新元数据228中对两个版本而言不共有的剩余更新条目。
在另一实施例中,服务器计算机312可以包括同步摘要230中所列举的web聚合项目110的各版本的每一个的副本,以便用户可以选择web聚合项目110的各个版本。
现参考图4A到图4C,各流程图示出根据本发明的实施例的同步web聚合项目和web聚合频道的操作。图4A示出用于创建其中嵌入有同步元数据的web聚合项目的流程图。在402处,用户(例如,发布者A)通过相关联或在其中包括媒体内容(例如,文档文章)来准备web聚合项目(例如,RSS源项目)。在404处,用户创建或生成与该web聚合项目相关联的适当的元数据。例如,用户可以输入同步元数据中的字段(例如,<history>子元素中的字段)。在406处,通过检查该web聚合项目的更新元数据来确定该web聚合项目是否是首次创建的。如果该web聚合项目是首次创建的,则在410处,创建更新元数据。在412处,用户在更新元数据中输入适当的信息,如“由”字段和“序列号”值。在414处,用户下一步发布该web聚合项目。
如果确定该web聚合项目不是新创建的项目,则图4B示出用户如何前进至408来进一步执行用于更新与该web聚合项目相关联的元数据的操作。例如,用户(其可以是发布者A或订阅者B)可以更新web聚合项目的现有媒体内容。如此,在416处,确定该web聚合项目是否在被更新。如果不需要更新,则在418处,用户返回到图4A的414。如果该web聚合项目在被更新,则在420处,标识同步元数据。
例如,根据本发明的各实施例的同步元数据至少包括以下:<history>子元素和<update>(更新)元素列表(更多细节请参见以上图2A)。一旦标识了同步元数据,则在422处,用户可以更新该web聚合项目的更新元数据和同步元数据。例如,用户将输入信息,如“由”值、“序列号”值和“最后更新者”值。可任选地,用户可以输入指示是否要删除该web聚合项目的信息。
现参考图4C,一流程图示出根据本发明的实施例的用于根据同步元数据和更新元数据来同步web聚合项目的一个或多个版本的操作。仅出于说明目的且不作限制,本地同步项目446表示web聚合项目的一个版本而远程同步项目则表示web聚合项目的另一版本。在424处,用户(例如,发布者A、订阅者B、或服务器计算机312)接收远程同步项目。在426处,将本地同步项目446的同步元数据与远程同步项目的同步元数据进行比较。在428处,确定远程同步项目的“最后更新者”值是否等于本地同步项目的“最后更新者”值。如果值相等,则确定不存在冲突。下一步是在432处确定哪一版本应被用作占优势的版本。根据一种技术,如果本地同步项目的“序列号”值小于或等于远程同步项目的“序列号”值,则在434处,远程同步项目是占优势的版本。如果远程同步项目的“序列号”值小于或等于本地同步项目的“序列号”值,则在43 6处,本地同步项目应当占优势。
另一方面,如果本地和远程同步项目的“最后更新者”值不同,则在430处,确定本地同步项目的“最后更新者”是否在远程同步项目的更新元数据中。例如,在确定本地同步项目的“最后更新者”是否在远程同步项目的更新元数据中时,将本地同步项目的“序列号”字段(例如,虚拟时钟值)与远程同步项目的“序列号”字段进行比较。在另一示例中,可以使用其它虚拟或逻辑时钟值或表示,以便该虚拟或逻辑时钟值可被用作时钟向量包含检查以确定哪一版本(即,本地同步项目还是远程同步项目)应当占优势。
如果判定是肯定的,则在440处,远程同步项目是占优势的版本。另一方面,如果远程同步项目的“最后更新者”在本地同步项目的更新元数据中,则本地同步项目是占优势的版本。如果在web聚合项目的两个版本的更新元数据中都未发现“最后更新者”值,则存在冲突,且在438处,向用户呈现解决该冲突的各种选项。一旦确定了占优势的版本或解决了冲突,则在444中,更新同步元数据和更新元数据以包括来自占优势的版本的适当信息。
图5示出根据本发明的实施例的启用web聚合项目同步的数据结构500。在一示例中,聚合频道530可以包括一个或多个聚合项目,如聚合项目502。聚合项目502包括媒体内容532和与媒体内容532相关联的相关数据或元数据。数据结构500还包括一组标准元数据504,如以XML标签的形式。数据结构500包括用于同步媒体内容532的各版本的同步元数据506。例如,同步元数据506被表示为XML格式的<history>子元素且包括以下字段:项目ID字段510、最后更新者字段512和可任选的已删除字段514。同步元数据506还包括更新元数据508,其包括一个或多个更新字段516。每一更新字段516都包括以下子字段:“由”和“序列号”。
聚合频道530还包括同步摘要522(和如图2C中示出的标准元数据230),其包括一个或多个更新字段524。每一聚合项目502都包括同步摘要,其包括对聚合项目502所做出的所有更新。更新字段524的每一个还包括以下子字段:“由”和“序列号”。
图6是示出在其上可以存储本发明的各方面的示例性计算机可读介质602的框图。例如,计算机可读介质602包括用于发布包括与其相关联的媒体内容的web聚合项目的发布者组件604。定义组件606定义包括与所发布的web聚合项目相关联的第一虚拟时钟值的同步元数据,该第一虚拟时钟值指示该web聚合最后更新是何时。计算机可读介质602还包括用于从订阅者接收订阅所发布的web聚合项目的请求的接口组件608。通信组件610响应于所接收到的请求将所发布的web聚合项目发送到发布者远程的且可由订阅者访问的位置。接口组件608向订阅者提供包括第一虚拟时钟值的聚合元数据,且同步组件612在订阅者在发布者远程的位置处修改媒体内容时准许订阅者修改(例如,递增)第一虚拟时钟值。
在一实施例中,同步组件612准许订阅者添加新的虚拟时钟值而代替修改。在另一实施例中,冲突组件614可在所发布的web聚合项目被发送到发布者远程的位置时在该位置处检测web聚合项目的版本。在替换实施例中,冲突组件614可以确定所发布的web聚合项目是否引起冲突组件614所检测到的、与在发布者远程的位置处的web聚合项目的版本的冲突。冲突组件614可以向订阅者呈现解决冲突的一个或多个选择或可以经由自动的或预设的首选项来解决所确定的冲突。在另一替换实施例中,版本组件616可以根据包括在同步元数据中的修改历史列表来向订阅者提供一个或多个版本。
图7是示出在其上可以存储本发明的各替换方面的示例性计算机可读介质702的框图。例如,计算机可读介质702包括用于通过web聚合频道来定义关于web聚合订阅的聚合摘要和关于web聚合项目的一个或多个版本的web同步元数据的存储器组件704。聚集组件706在web同步摘要中聚集来自用户的web聚合项目的一个或多个版本的web同步元数据。例如,web聚合项目的一个或多个版本包括用户的一个或多个更新和与这些更新相关联的各个时间段,各时间段可被包括在web聚合元数据中。
计算机可读介质702还包括用于根据所指示的更新和各时间段来确定聚合摘要中的各版本的一个或多个所聚集的web同步元数据的次序的判定组件708。更新组件710根据所确定的次序来更新web聚合摘要以向用户提供该一个或多个所聚集的版本。在替换实施例中,UI组件712以所确定的次序向用户提供该一个或多个所聚集的版本。
除非另有指定,否则此处所示和所述的本发明各实施例的操作的执行或进行的次序不是必需的。即,除非另有指明,否则各操作可按照任何次序执行,且本发明的实施例可以包括比本文所公开的更多或更少的操作。例如,构想了在另一操作之前、同时或之后执行或进行某一操作是在本发明各方面的范围之内的。
本发明的各实施例可以用计算机可执行指令来实现。计算机可执行指令可以被组织为一个或多个计算机可执行组件或模块。本发明的各方面可以用任何数量的这些组件或模块及其任何组织来实现。例如,本发明的各方面不限于在各附图和本文中示出的特定的计算机可执行指令或者特定的组件或模块。本发明的其他实施例可以包括具有比在本文中示出和描述的更多或更少的功能的不同计算机可执行指令或组件。
当介绍本发明或其实施例的各方面的各元素时,冠词“一”、“一个”、“该”和“所述”指的是存在该元素的一个或多个。术语“包括”、“包含”、“具有”旨在是包括性的并且指的是可以有除所列元素之外的其它元素。
在详细描述了本发明的各方面之后,可以清楚,修改和变化是有可能的,而不背离所附权利要求书中定义的本发明各方面的范围。在不背离本发明各方面的范围的情况下,可对以上构造、产品和方法进行各种改变,以上描述中所包含的以及在附图中所示出的所有一切旨在应被解释为说明性并且没有限制意义。