在同步和异步通信模式之间过渡的方法和系统的制作方法

文档序号:7629222阅读:104来源:国知局
专利名称:在同步和异步通信模式之间过渡的方法和系统的制作方法
背景技术
文件共享应用程序允许数个不同用户共同分享信息。数个客户机可异步地访问服务器上的共享文件。一客户机可与另一客户机建立对等网络,从而两个客户机都可异步且直接地(即,实时地)访问共享文件。当连接丢失时,客户机可能正在访问对等网络上或服务器上的共享文件。到服务器的连接可能在服务器崩溃时或当客户机从服务器断开时丢失。到对等网络的连接可能在两个客户机不再位于同一邻近地区时或当其中一个客户机从对等网络断开时丢失。无论在哪种情况下,客户机都必须手动地重新连接到对等网络或服务器以重新获得对共享文件的访问。

发明内容
本发明针对一种在同步和异步通信模式之间过渡的方法和系统。多个不同的用户可通过数种不同的传输来同步地访问、修订和更新同一共享对象。该对象可以是诸如文件等任何能够被共享的实体。客户机可通过物理服务器访问共享对象来异步通信。服务器限制可使共享对象的同步从用户实现修订的时候起被延迟。客户机还可通过对等网络访问共享对象来同步通信。对等网络允许对共享对象的修订在客户机之间被直接传递,而不是通过服务器。
每个共享对象都与一清单文件相关联。该清单文件标识该共享对象的其它版本和实例存储在系统内的哪些位置。客户机访问共享对象并从对应的共享对象中的唯一位置标识符所标识的位置处检索相关联的清单文件。共享对象和清单文件允许客户机在本地访问、同步和异步通信之间无缝地过渡,从而用户不知道通信模式已改变。用户可改变位置,且任何可用的数据共享传输都被自动标识。由此,用户可通过各种不同的机制访问共享的对象并与其它经授权的用户合作。
客户机可访问服务器上的共享对象。客户机被自动连接到同样访问该共享对象的其它客户机。经授权可访问该共享对象的其它客户机被包括在一对等组中。该客户机检索与共享对象相关联的清单文件。该清单文件标识共享对象的不同版本和实例的位置。由此,当对等组中的任何客户机访问清单文件中所标识的共享对象的一个版本或实例时,该客户机可与对等组中的任何其它客户机建立对等网络。然后该客户机可从服务器断开,并继续访问对等网络上的共享对象。
客户机可从对等网络访问共享对象。客户机检索与共享对象相关联的清单文件。该清单文件标识该共享对象存在的其它位置。该客户机可访问服务器上的共享对象并确定哪些经授权的客户机也被连接到服务器。当对等网络不可用时,可通过服务器来访问所连接的那些客户机。然后该客户机可从对等网络断开,并继续访问服务器上的共享对象。
在本发明的一个方面,共享对象被访问。与共享对象相关联的清单文件被检索。该清单文件标识存储共享对象的另一实例的位置。与同样访问清单文件中所标识的共享对象的实例的至少一个客户机建立直接同步通信。与同样访问服务器上的该共享对象的至少一个客户机建立异步通信。


图1示出可以根据本发明的一个示例性实施例使用的计算设备。
图2根据本发明示出用于同步对共享对象的多个用户修订的系统的框图。
图3根据本发明示出指示共享对象的不同部分的链接节点的分层结构图。
图4根据本发明示出共享对象的主页面和相关联的冲突页面。
图5根据本发明示出用于同步对共享对象的多个用户修订的系统的框图。
图6根据本发明示出一操作流程图,该操作流程图示出用于同步对共享对象的多个用户修订的过程。
图7根据本发明示出一操作流程图,该操作流程图示出用于在共享对象中调解与合并来自多个用户的冲突的修订的过程。
图8根据本发明示出一操作流程图,该操作流程图示出用于同步对共享对象的多个用户修订的过程。
图9根据本发明示出一操作流程图,该操作流程图示出用于从异步通信模式无缝地过渡到同步通信模式的过程。
图10根据本发明示出一操作流程图,该操作流程图示出用于从同步通信模式无缝地过渡到异步通信模式的过程。
具体实施例方式
本发明针对一种在同步和异步通信模式之间过渡的方法和系统。多个不同的用户可通过数种不同的传输来同步地访问、修订和更新同一共享对象。客户机可通过物理服务器访问共享对象来异步通信。客户机还可通过对等网络访问共享对象来同步通信。
每个共享对象都与一清单文件相关联。该清单文件标识该共享对象的其它版本和实例存储在系统内的哪些位置。客户机访问共享对象并从对应的共享对象中的唯一位置标识符所标识的位置处检索相关联的清单文件。共享对象和清单文件允许客户机在本地访问、同步和异步通信之间无缝地过渡,从而用户不知道通信模式已改变。用户可改变位置,且任何可用的数据共享传输都被自动标识。由此,用户可通过各种不同的机制访问共享的对象并与其它经授权的用户合作。
示例性操作环境参考图1,一种用于实现本发明的示例性系统包括诸如计算设备100等计算设备。计算设备100可被配置成客户机、服务器、移动设备、或在基于网络的合作系统中与数据交互的任何其它计算设备。在最基本的配置中,计算设备100通常包括至少一个处理单元102和系统存储器104。取决于计算设备的确切配置和类型,系统存储器104可以是易失性的(诸如RAM等)、非易失性的(诸如ROM、闪存等)、或这两者的某种组合。系统存储器104通常包括操作系统105、一个或多个应用程序106,还可包括程序数据107。在以下详细描述的通信模式过渡模块108在应用程序106内实现。
计算设备100还可具有其它特征或功能。例如,计算设备100还可包括其它数据存储设备(可移动和/或不可移动的),诸如磁盘、光盘或磁带等。这些其它存储在图1中由可移动存储109和不可移动存储110示出。计算机存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。系统存储器104、可移动存储109和不可移动存储110都是计算机存储介质的示例。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术,CD-ROM、数字多功能盘(DVD)或其它光存储,磁带盒、磁带、磁盘存储或其它磁存储设备、或可用来存储所需信息并可由计算设备100访问的任何其它介质。任何此类计算机存储介质都可以是设备100的部件。计算设备100还可具有诸如键盘、鼠标、笔、语音输入设备、触摸输入设备等输入设备112。还可包括诸如显示器、扬声器、打印机等输出设备114。
计算设备100还包含允许该设备诸如通过网络等与其它计算设备118通信的通信连接116。网络包括局域网和广域网,以及其它大规模网络,包括但不限于,内联网和外联网。通信连接116是通信介质的一个示例。通信介质通常可具体化为诸如载波或其它传输介质等已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,并包括任何信息传递介质。术语“已调制数据信号”是指以在信号中将信息编码的方式设置或改变其一个或多个特征的信号。作为示例,而非限制,通信介质包括诸如有线网络或直接连线连接等有线介质,以及诸如声学、RF、红外及其它无线介质等无线介质。如本文中所使用的,术语计算机可读介质包括存储介质和通信介质两者。
同步和异步通信模式之间的过渡图2示出一种用于同步对共享对象的多个用户修订的系统的框图。对象可以是诸如文件等任何能够被共享的实体。该系统包括客户机200、210、220、230,诸如交换服务器240等具有文件存储能力的电子邮件服务器,web服务器250,对等网络260以及电子邮件附件270。客户机200、210被耦合到交换服务器240。客户机210、220被耦合到web服务器250。客户机210、220还通过对等网络260被耦合在一起。电子邮件附件270被安排为由web服务器250向客户机230或从客户机230传输。客户机200、210都与同一用户(用户1)相关联。例如,客户机200由用户1在家中访问,而客户机210由用户1在工作中访问。客户机220、230与不同的用户(分别与用户2和用户3)相关联。客户机200、210、220、230每一个包括高速缓存202、212、222、232,用于本地存储共享对象。对等网络260包括虚拟服务器262,用于在客户机210、220之间传递共享对象。修订文件242和共享对象252、264、272分别被存储在交换服务器240、web服务器250、虚拟服务器262和电子邮件附件270中。修订文件242和共享对象252、264、272可与对等组标识符相关联。对等组标识符标识被授权可访问和修订特定共享对象的那些用户(即,对等组)。在一个实施例中,对等组标识符是可被解析到任何web客户机的、指向对等组的统一资源定位器(URL)。共享对象252、264分别与清单文件254、266相关联。
许多不同的用户可通过数种不同传输来同时访问、编辑和更新同一共享对象。例如,在客户机210处的用户1和在客户机220处的用户2可从web服务器250访问共享对象252。共享对象被本地存储在对应的高速缓存212、222中。用户1和用户2都可修订共享对象252。这些修订与web服务器250上的共享对象252同步,从而用户1可看到用户2所作的修订,而用户2也可看到用户1所作的修订。
在另一个示例中,用户3可通过电子邮件附件270与用户2共享对共享对象272的访问。用户2可修订本地存储的共享对象,并向用户3发送附带了整个共享对象或仅附带了对共享对象的修订的电子邮件消息。用户2所作的修订与web服务器250上的共享对象252同步。当电子邮件在客户机230处接收时,用户2所作的修订自动地与存储在高速缓存232中的本地共享对象同步。用户3随即可对共享对象272进行其它修订,并用作为电子邮件附件270包括的整个共享对象或仅对共享对象的修订来回复用户2。用户3所作的修订与web服务器250上的共享对象252同步。客户机220处的共享对象也被更新以包括用户3所作的修订。
在另一个示例中,用户1可在家中在客户机200上访问共享对象,或在工作中通过交换服务器240在客户机210上访问共享对象。当对外部服务器的访问不被允许或不可用时,常常使用交换服务器。修订文件242包括对共享对象的修订。修订文件242可通过通用串行总线(USB)驱动器、电子邮件应用程序、或允许修订被往返传送的某种其它机制在客户机200、210之间传送。修订被应用于客户机200、210,以使存储在高速缓存202、212中的本地共享对象可被更新。
交换服务器240可对其能够处理的文件的大小有所限制(例如,最多2兆字节)。用户1可将包括对共享对象的任何修订的修订文件242从客户机200上传到交换服务器240。当修订文件242超过交换服务器240的大小限制时,可按分段将修订文件242从客户机200传送到客户机210。文件协议允许用于传送分段的请求/满足过程。在一个实施例中,交换服务器240与电子邮件应用程序相关联。由另一用户(用户2)所作的修订可通过web服务器250或对等网络260从客户机220传送到客户机210,然后通过发给用户1的电子邮件账户传送到客户机200。在另一个实施例中,客户机200周期性地轮询交换服务器240来获得当前的修订文件。
在另一个示例中,当从客户机210、220到web服务器250的连接丢失时,或当用户1和用户2宁愿实时地直接并同步地通信时,可在客户机210、220之间建立对等网络260。用户1和用户2可能会宁愿通过对等网络260通信,因为通过web服务器250的对象共享可能会导致在客户机210处作出修订的时间和该修订在客户机220处可用的时间之间的滞后。滞后可能是繁忙的服务器通信量的结果。对等网络260允许对共享对象的修订在客户机210、220之间直接传送,而不是通过web服务器250。在一个实施例中,对等网络260是传输控制协议/网际协议(TCP/IP)直接网络。TCP/IP直接网络允许修订被快速存储和检索。
当web服务器250连接被中断时,客户机210、220的每一个都可将共享对象252的一个副本本地存储在高速缓存212、222中。与共享对象252相关联的对等组标识符指示用户1和用户2都在同时访问共享对象。当两个用户都访问所建立的对等网络时(例如,两个用户在同一飞机上都用膝上计算机工作),他们就知道彼此的存在。对等网络260允许用户1和用户2同时访问对虚拟服务器262上的共享对象264的修订,以及实现其它修订。这些修订在客户机210、220上被即时复制,以使用户1和用户2可在共享对象264上积极地合作。当用户1和用户2不再位于同一附近地区时(例如,每个用户都返回他们各自的办公室),或当用户1和用户2不再想要实时通信时,对等网络260可被禁用。然后共享对象252可从web服务器250访问。访问对等网络260上的共享对象修订与访问web服务器250上的共享对象修订之间的过渡是自动且无缝的。
客户机210、220既可从web服务器250,也可从对等网络260接收当前修订。对共享对象所作的每个修订都与一全局唯一标识符(GUID)和一时间戳相关联。时间戳标识作出该修订的时间。客户机210可修改web服务器250上的共享对象252。客户机220通过将与高速缓存的对象相关联的GUID及时间戳和与web服务器250上的共享对象252相关联的GUID及时间戳进行比较,来确定高速缓存222中的共享对象的本地版本是否是当前的。如果当前版本未被本地存储,则尚未在已高速缓存的对象中实现的最新修订从web服务器250加载到客户机220,并与本地文件同步。由此,无需在每次共享对象的本地版本被更新时将完整的共享对象加载到客户机220。
在一个实施例中,客户机220可从与修订相关联的GUID和时间戳来确定相同的修订可从对等网络260中获得。但是,这不导致任何动作,因为客户机220已经实现了修改。在另一个实施例中,客户机220可从与修订相关联的GUID和时间戳确定相同的修改不能从对等网络260中获得。由此,客户机220向对等网络260提交修订,以使连接到对等网络260的其它用户可与共享对象的当前版本同步。
客户机220可从对等网络260接收另一版本。高速缓存222中的共享对象被更新。客户机222使用与修订相关联的GUID和时间戳来确定共享对象的当前状态在web服务器250上是否也可用。如果web服务器250上的共享对象252未与共享文档的当前状态同步,则客户机220向web服务器250提交最新修订,以使共享对象252可被更新。
当客户机在通过物理服务器连接到系统的同时修订共享对象时可发生异步通信。服务器限制可能使共享对象的同步从用户实现修订的时候起被延迟。在一个实施例中,客户机可在不连接到系统时修订共享对象的本地高速缓存的版本。当客户机通过服务器重新连接到系统时,客户机所作的任何修订可与共享对象同步。客户机可在本地访问、同步和异步通信之间无缝过渡,从而用户不知道通信模式已改变。用户可改变位置,且任何可用的数据共享传输(例如,对等网络、服务器)被自动标识。由此,用户可通过各种不同机制来访问共享对象并与其它经授权的用户合作。
每个共享对象都与一清单文件相关联。清单文件标识共享对象的其它版本和实例在系统内存储的位置。在一个实施例中,清单文件是可扩展标记语言(XML)文件。在另一个实施例中,清单文件标识多个共享对象。在又一个实施例中,清单文件可与能在客户机之间共享的任何对象相关联。例如,清单文件可与整个共享对象,或共享对象的任何部分(例如,内容容器、章、页、大纲、等等)相关联。
清单文件可存储在系统内的任何地方。如图中所示,清单文件254与共享对象252相关联。共享对象252和清单文件254都存储在web服务器250上。在另一个实施例中,清单文件存储在共享对象中。在又一个实施例中,清单文件存储在现用目录中。在再一个实施例中,清单文件存储在系统内的多个位置。清单文件存储在唯一位置标识符所标识的位置。唯一位置标识符可标识文件服务器、服务器的共享区域、web服务器、或对等组。
共享对象可从高速缓存来本地访问,或者通过服务器或通过对等网络来访问。客户机从对应的共享对象中的唯一位置标识符所标识的位置检索清单文件。在一个实施例中,客户机可本地存储清单文件以供将来引用。清单文件指示共享对象的任何其它版本和实例在系统内的位置(例如,在副存储或对等组中)。如果共享对象的另一个版本/实例存储在对等组中,则清单文件可包括对应的对等组标识符。
在一个实施例中,客户机220访问web服务器250上的共享对象252。客户机220被自动连接到同样访问共享对象252的其它客户机(例如,对等组)。客户机220检索与共享对象252相关联的清单文件254。清单文件254标识共享对象252的不同版本和实例的位置。由此,当对等组中的任何客户机访问清单文件254所标识的共享对象252的一个版本/实例时,客户机220可与对等组中的任何其它客户机建立对等网络。客户机220随即可从web服务器250断开,并继续访问对等网络上的共享对象252。
在另一个实施例中,客户机210可从对等网络260访问共享对象264。客户机210检索与共享对象264相关联的清单文件266。客户机210可连接到服务器并确定哪些客户机也连接到该服务器。当对等网络260不可用时,可通过服务器访问所连接的那些客户机。共享对象264(或252)和相关联的清单文件266(或254)允许客户机210(或客户机220)在异步和同步通信模式之间自动且无缝地过渡。
当一用户可访问共享对象时,并不会阻塞其它用户访问和修订该共享对象。任何经授权的用户可同时修订共享对象。在一个实施例中,可发生阻塞的短暂情况来确保修订事务的完整性。例如,用户可在从服务器断开的同时大范围修订共享文档。当用户重新连接到服务器时,可短暂地阻塞其它客户机访问共享对象,直至在共享对象中实现了该用户的所有修订。
图3示出指示共享对象的不同部分的链接节点的分层结构图。在一个实施例中,共享对象是在数个用户之间共享的笔记本。笔记本节点300象征整个共享对象。文件夹节点310被包括在笔记本节点300内。章节点320被包括在文件夹节点310内。页节点330、335被包括在章节点310内。表节点340、墨水节点342、大纲节点344和图像节点346被包括在页节点330内。大纲元素节点350被包括在大纲节点344内。文本节点360被包括在大纲元素节点350内。可在内容容器内将不同的节点组合在一起。例如,大纲节点344、大纲元素节点350和文本节点360可被组合在一起成为内容容器R0。内容容器R0被分配一个GUID(例如,GUID-0)。该GUID唯一地标识内容容器R0。
内容容器包括共享对象的内容(例如,单词、句子、段落、页、表、图片、手写笔迹、统一资源定位器、或共享对象中所包括的数据的任意组合)。内容容器为被组合在一起的对象内容提供维度。例如,内容容器可对应于线条、段落、页、或特定的页元素(例如,仅特定页上的表)。
共享对象存储图的初始版本。然后可对个别的内容容器执行特定的操作。例如,用户可修订内容容器的数据。对共享对象的修订可被标识为内容容器的状态。共享对象存储图的修订后的内容容器。使用GUID和时间戳将内容容器的当前状态与先前状态进行比较,从而可确定内容容器是否已被修订。
例如,两个不同的用户的每一个都可访问共享文档并修改内容容器R0。一个用户可通过删除文本节点360(如修订R1中所示)来修订内容容器R0。修订R1被存储在共享对象中。修订R1被分配一GUID(例如,GUID-1)来唯一地标识修订后的容器,并被分配标识修订R1被写到共享对象的时间和日期的时间戳。另一个用户可通过向大纲元素节点350添加文本节点380(如修订R2中所示)来修订内容容器R0。修订R2被存储在共享对象中。修订R2被分配时间戳和GUID(例如,GUID-2)来唯一地标识修订后的内容容器。
不同的用户可在不同的时间修订共享对象,从而共享对象的多个版本可能共存。但是,共享对象只有一个最新版本。在一个实施例中,共享对象的最新版本是包括与共享对象同步的最近期的修订并已对其它经授权的用户可用的那个版本。
例如,用户可通过向大纲节点344添加大纲元素节点370(如修订R3中所示)来修订共享对象被标识为修订R1的内容容器。修订R3被存储在共享对象中。修订R3也被分配时间戳和GUID(例如,GUID-3)来唯一地标识修订后的内容容器。修订R3是修订R1的扩展。由此,修订R1是用户所知悉的共享对象的最新版本(例如,本地存储的版本)。共享对象被检查,以确定共享对象的最新版本是否仍然是修订R1。在一个实施例中,可通过比较不同的内容容器的时间戳和GUID来确定共享对象的最新版本。如果共享对象的最新版本与比修订R1更近期的时间戳相关联,则另一个用户(例如,创建修订R2的用户)已在随后修改了同一内容容器。
如果自修订R1与共享对象同步以来,已有另一个用户修改了同一内容容器,则作为对修订R1的扩展的任何修订(例如,修订R3)只可在任何随后的修订都与共享对象同步且任何冲突的修订都被解决和合并以后才可与共享对象同步。例如,修订R2在修订R1后与共享对象同步。由此,共享对象的最新版本包括修订R2。在修订R3与共享对象同步以前,将修订R3与修订R2进行比较以确定是否有任何修订相冲突。比较是必需的,因为修订R3是修订R1的扩展,而后者不再与共享对象的最新版本相关联。修订R3被确定不与修订R2冲突,因为大纲元素节点370可被添加到大纲节点344而不会干扰修订R2。
在一个实施例中,共享对象是通过将内容容器从共享对象内的一个位置移到另一个位置来修订的。例如,可将表节点340从页节点330移到页节点335。确定表节点340已被移动,但新的位置无法被确定。在表节点340的原始位置创建代理节点。当表节点340的新位置被确定时,在表节点340的新位置处实现代理节点。如果表节点340在新位置被确定以前被删除,则将代理节点丢弃。
不同的用户可同时编辑共享对象。通常,用户修订共享对象的不同内容容器。由此,每个用户的修订无需进一步处理即可与共享对象同步。当两个用户编辑共享对象的同一内容容器时(例如,同一表值、同一句子)可能发生冲突。不同的用户修订之间的冲突可能异步地产生。例如,用户可能在不连接到服务器的时候修订共享对象被本地高速缓存的版本。当用户重新连接到服务器时,这些修订与共享对象同步。但是,这些修订可能与已与共享对象同步的其它修订冲突。
例如,修订R4是修订R3的扩展。修订R4从大纲节点344删除大纲元素节点350。确定了共享对象的最新版本包括修订R2。修订R2和修订R4之间的比较标识冲突,因为大纲元素节点350存在于修订R2中,但在修订R4中已被删除。
在内容容器的主版本和该内容容器的两个有分歧的版本之间执行三方合并来解决冲突。例如,合并内容容器R0(即,主版本)、修订R2和修订R4以建立共享对象的当前版本。内容容器的主版本可以是最后与服务器上的共享对象同步的那个版本。主版本包括非冲突的修订。
通过遵循由一种合并算法所建立的一组规则,冲突的内容容器被调解并合并到共享对象中。该合并算法确定哪些修订已与共享对象同步。例如,可根据优先级将不同的用户分级,从而一用户的修订优先于所有其它用户(即,主编辑)。当较低优先级的用户试图修订共享对象中已被较高优先级的用户修订过的内容容器时,该用户将被通知这些修订(即,次编辑)将不会被与共享对象同步。由此,主编辑被显示在共享对象的主页面上,而任何次编辑被标记为未与共享对象同步。
在另一个示例中,对服务器上的共享对象所作的修订优先于客户机上本地所作的修订。共享对象的服务器副本被认为是主版本,因为许多不同的用户可能已访问并修订了服务器上的共享对象。只有一个用户访问并修订了本地存储的版本。未与共享对象同步的修订后的内容容器(例如,次编辑)被标识为冲突的。冲突的内容容器通过被存储在与共享对象对应的主页面相关联的冲突页面上来保持。
图4示出共享对象的主页面和相关联的冲突页面。主页面400包括诸如内容容器410、420等非冲突的修订。任何未合并的冲突的修订在主页面400上由冲突指示器标识。在一个实施例中,冲突指示器是下拉菜单430。下拉菜单430的第一个条目可以是用户所生成的最近期的冲突。下拉菜单430的条目可包括用户名和对应的时间戳。下拉菜单430中的另一个条目可包括用户所生成的但未调解的其它冲突页面。下拉菜单430中的其它条目可对应于其它用户所生成冲突页面。从下拉菜单430选择一个条目将显示对应的冲突页面,其中冲突的修订被加亮,以将用户的注意力吸引到未被合并到共享对象的主版本中的那些修订。由此,用户或可调解并将冲突与主页面400合并,或可决定这些冲突是不相关的。
在另一个实施例中,冲突指示器是选项卡。主页面可与选项卡440相关联。对应的冲突页面也可与和选项卡440不同的选项卡相关联。例如,冲突页面选项卡可相对于选项卡440缩进,或在选项卡440以下层叠。包括与特定用户相关联的未被合并的冲突的冲突页面可由与其它选项卡不同的选项卡标识,以使用户的注意力被吸引到该用户所生成的冲突页面上。该用户随即可选择选项卡来导航到对应的冲突页面。
可在共享对象对应的主页面旁边显示所选择的冲突页面,以使用户可鉴于已合并的修订来调解并合并任何冲突的修订。冲突页面450与主页面400相关联。冲突页面450和主页面400相似,不同之处在于任何冲突的内容容器都被加亮以指示该冲突尚未被解决。例如,内容容器460用加亮的背景来呈现,以将用户的注意力吸引到未被合并的冲突上。在用户修订内容容器460中的数据以前,内容容器460可能已被删除并与共享对象同步,从而造成冲突。该用户可选择内容容器460以在主页面400上合并修订。
在一个实施例中,冲突页面与特定用户相关联。由此,当一个以上用户对页面作出不能被合并的修订时,可令一个以上的冲突页面与主页面相关联。为被授权可访问共享对象的所有用户存储所有冲突的修订。可假定访问冲突页面的用户最关注该用户所生成的冲突,从而该用户可调解那些冲突。例如,当用户1选择冲突指示器时,向用户1呈现其对应的冲突页面。用户还可查看与另一个用户相关联的冲突页面。例如,用户1可选择选项卡470以导航到与用户2相关联的冲突页面。
随着时间的推移,可能积累起与共享对象的一个主页面相关联的多个冲突页面。在该时间段期间,用户可能已将数个修订与共享对象位于服务器上的主版本同步,而同时忽略了任何对应的冲突页面。由此,可假定用户未调解的较早的冲突页面不再相关。在一个实施例中,在预定的时间段过去以后,任何被标识为不相关的冲突页面可被清除,而用户在该时间段期间已同步了该页面的修订。例如,与任何主页面相关联的三个最近期的冲突页面被保留,而任何其它相关联的冲突页面在自创建起一个月后被清除。
在一个实施例中,冲突页面不是在实时通信期间创建的,因为与异步通信期间相比,冲突可能更频繁地发生。相反,用户可合作地修订同一内容容器。任何冲突都可被立即解决,因为所有用户都可迅速确定他们的修订是否已被实现。或者,通知一用户另一用户正在修订特定的内容容器。可鼓励该用户在另一个用户的修订完成以前修订不同的内容容器。
图5示出用于同步对共享对象的多个用户修订的系统的框图。该系统包括客户机500、510、540、550和服务器520、530。客户机500被耦合到服务器520、530。客户机510被耦合到服务器520。客户机540、550被耦合到服务器530。客户机540包括存储542和子存储544。服务器520包括存储522和子存储524、526。服务器530包括存储532。存储532包括副存储534、536。
存储522、532,子存储524、526和副存储534、536可存储与共享对象相关联的修订。存储522、532,子存储524、526和副存储534、536是分层结构。例如,存储522可与整个共享笔记本文档相关联。子存储524可与共享笔记本文档的一章相关联。子存储526可与共享笔记本文档的一页相关联。在一个实施例中,仅顶层共享对象的最近期版本被包括在存储522中。存储532可存储整个顶层共享对象。副存储534、536与共享对象的各部分相关联。例如,副存储534可与共享对象的一章相关联,而副存储536可与共享对象不同的一章相关联。
应用程序无需共享对象的特定内容容器的当前版本即可将共享对象从服务器520或服务器530加载到客户机500。例如,客户机500向存储522请求共享对象。该共享对象的最近期的可用版本在客户机500处存在。共享对象最近期的可用版本可能不对应于共享对象的当前版本,因为最近期版本的数据在对应的子存储526中不可用。子存储526被赋予请求标签,以指示客户机500要求最近期的修订数据以更新共享对象。子存储526还可被赋予时间戳,它标识客户机500从子存储526请求修订数据的时间和日期。子存储还可被分配GUID,它标识请求该数据的客户机(例如,客户机500)。请求标签、时间戳和GUID被用来在另一个客户机访问子存储526时通知客户机500。例如,客户机510可用最新修订的数据访问子存储526。由此,客户机500被通知共享对象的最新修订数据在子存储526中可用。
客户机500可以是用户的家庭计算机,而客户机540可以是用户的工作计算机。服务器530可以是在客户机500、540之间传送修订文件的交换服务器。修订文件可被用来更新存储在客户机500、550上的共享对象。在一个实施例中,客户机500被限制不得处理大于预定大小(例如,2兆字节)的文件。例如,客户机500可包括限制可被接收的电子邮件消息的大小的电子邮件应用程序。存储542包括与顶层共享对象相关联的修订。子存储544包括与共享对象的内容容器相关联的修订。
客户机540可轮询服务器530以确定是否有另一个客户机提交了数据修订请求。当被请求的数据修订的最新版本在存储542或子存储544中可用时,客户机540可满足该请求。如果修订文件的大小小于客户机500可处理的限制,则客户机540可向客户机500传送整个所请求的修订。如果修订文件的大小大于该限制,则文件可被分成小于该限制的较小的文件。或者,可通过删除先前的请求来减少修订文件的大小。然后这些较小的文件通过服务器530从客户机540发送到客户机500。
对修订数据的多个请求可在服务器上等待。在一个实施例中,这些请求可从不同的客户机(例如,客户机500、550)作出。每个请求的客户机可与一不同的文件大小限制相关联。例如,客户机500被限于小于2兆字节的文件,而客户机550可处理多达20兆字节的文件。因此,当修订文件大于2兆字节时,不能通过一个传输事务来同时满足两个请求。在一个实施例中,将一优先级位与每个请求的客户机相关联,以建立满足请求的次序。
这些请求是通过将修订文件与客户机500、550同步来满足的。取决于修订文件的大小,可在一个修订事务中或通过一系列多个事务来将修订文件与客户机500、550同步。当整个修订被同步时,每个客户机500、550都确定请求已被满足。客户机540可清除所请求的数据,因为请求已被满足。稍后客户机540可轮询服务器530以确定是否有任何其它请求等待满足。
图6示出一操作流程图,该图示出用于同步对共享对象的多个用户修订的过程。该过程在开始框开始,在此多个用户被授权可同时访问并修订共享对象(即,对等组)。对象可以是诸如文件等能够被共享的任何实体。对等组可由对等组标识符来标识。共享对象的不同版本由对应的GUID和时间戳来标识。时间戳标识共享对象最后与修订同步的时间。
移到框600,用户修订共享对象。可在服务器上,在本地高速缓存中,或在对等网络上修订共享对象。在一个实施例中,修订被存储为修订文件。前进至框610,将修订与GUID和时间戳相关联。时间戳标识用户修订共享对象的时间。
前进至框620,共享对象的最新版本被定位。共享对象的最新版本是包括与共享对象同步的最近期的修订并对其它经授权的用户可用的那个版本。共享对象的最新版本可从与共享对象的不同版本相关联的时间戳和GUID确定。
转移至判定框630,确定是否存在任何冲突的修订。当不同用户修订同一内容容器时,修订可能会冲突。如果存在冲突的修订,则不能将修订与共享对象同步。如果存在冲突的修订,则处理前进至框640,在此冲突的修订被调解并合并(如参考图7所讨论的)。如果不存在任何冲突的修订,则处理前进至框650,在此将修订与共享对象同步,以使其它用户可查看该修订。然后处理在结束框终止。
图7示出一操作流程图,该图示出用于调解并合并对共享对象的多个用户修订的过程。该过程在开始框开始,在此一个以上用户修订了共享对象中的同一内容容器。当将修订后的内容容器中的一个与共享对象同步时产生冲突,从而对该内容容器的任何其它修订都无法被同步。
移到框700,冲突的修订被显示在冲突页面上。冲突页面和对应的主页面相似,不同之处在于冲突的修订被加亮并显示以代替同步后的修订以外。
前进至框710,冲突指示器被显示在共享对象的主页面上。该冲突指示器可以是下拉菜单、选项卡、或通知用户主页面有冲突页面可用的任何其它机制。与特定用户相关联的冲突页所用的冲突指示器可与和其它用户相关联的冲突页面所用的冲突指示器不同,以使当前用户可迅速标识当前用户所生成的冲突页面。
前进至框720,当选择冲突指示器时,在主页面旁边显示冲突页面。向用户同时呈现主页面的同步后状态和对应的冲突页面两者。
转移至框730,用户调解冲突的修订并将其合并到主页面中。在一个实施例中,用户可选择内容容器,以使该内容容器与主页面合并。在另一个实施例中,用户可直接将修订实现到主页面上。在又一个实施例中,用户可将冲突的修订标识为不相关的。
前进至框740,被标识为不相关的冲突的修订被清除。在一个实施例中,冲突的修订可由用户标识为不相关的。在另一个实施例中,冲突的修订可被自动标识为不相关的。例如,用户可能已将数个修订与位于服务器上的共享对象主版本同步,而同时忽略任何对应的冲突页面。用户未调解的较早的冲突页面在预定时间段过去以后被标识为不相关的。然后处理在结束框终止。
图8示出一操作流程图,该图示出用于同步对共享对象的多个用户修订的过程。该过程在开始框开始,在此共享对象的不同版本被存储在整个系统上的不同位置。移至框800,共享对象从存储被下载到客户机。
前进至判定框810,确定该共享对象是否是共享对象的当前版本。如果该共享对象是共享对象的当前版本,则处理在结束框终止。如果该共享对象不是共享对象的当前版本,则处理前进至框820。该共享对象可能不是当前版本,因为对共享对象的内容容器最近期的修订不能从该存储中获得。
前进至框820,向该存储赋予请求标记和客户机信息,以指示该客户机要求最近期的修订以更新共享对象。客户机信息可包括标识请求的客户机的GUID,以及标识客户机向存储请求共享对象的当前版本的时间的时间戳。
转移至框830,在存储处接收共享对象的当前版本。当另一个客户机用最近期的修订数据访问该存储时,该存储可接收共享对象的当前版本。请求的客户机被通知共享对象的当前版本已被该存储接收。前进至框840,将共享对象的当前版本与请求的客户机同步。处理随即在结束框终止。
图9示出一操作流程图,该图示出用于从异步通信模式无缝地过渡到同步通信模式的过程。该过程在开始框开始,在此建立标识经授权可访问共享对象的用户的对等组。
移至框900,客户机访问服务器上的共享对象。该客户机被自动连接到同样访问该共享对象的其它客户机(即,对等组)。令共享对象与清单文件相关联。共享对象包括唯一位置标识符,它标识对应的清单文件存储在系统内的位置。
前进至框910,从由唯一位置标识符所标识的位置检索清单文件。清单文件标识共享对象的其它版本和实例存储在系统内的位置。清单文件包括存储共享对象的一个版本的对等组的对等组标识符。
前进至框920,当对等组中的任何其它客户机访问由清单文件所标识的共享对象的一个版本或实例时建立对等网络。由此,客户机可从服务器断开,并继续访问对等网络上的共享文件。处理随即在结束框终止。
图10示出一操作流程图,该图示出用于从同步通信模式无缝地过渡到异步通信模式的过程。该过程在开始框开始,在此在至少两个经授权可访问共享对象的用户之间建立对等网络。
移至框1000,客户机访问对等网络上的共享对象。共享对象与清单文件相关联。共享对象包括唯一位置标识符,它标识对应的清单文件存储在系统中的位置。
前进至框1010,从由唯一位置标识符所标识的位置检索与共享对象相关联的清单文件。清单文件标识共享对象的其它版本和实例存储在系统内的位置。前进至框1020,客户机连接到服务器。客户机确定其它哪些客户机也连接到该服务器。跳至框1030,客户机标识经授权可从对等网络访问共享对象的其它客户机。前进至框1040,当对等网络不可用时,客户机连接到—经授权的客户机。处理随即在结束框终止。
以上说明书、实例和数据提供了制造和使用本发明的组成部分的完整描述。因为可作出本发明的许多实施例而不会偏离本发明的精神和范围,所以本发明驻留在所附权利要求书中。
权利要求
1.一种用于在同步和异步通信模式之间过渡的计算机实现的方法,包括访问共享对象;检索与所述共享对象相关联的清单文件,其中,所述清单文件标识存储所述共享对象的另一实例的位置;与同样访问在所述清单文件中标识的所述共享对象的实例的至少一个客户机同步和直接地通信;以及与同样访问第一服务器上的所述共享对象的至少一个客户机异步通信。
2.如权利要求1所述的计算机实现的方法,其特征在于,检索清单文件还包括从所述共享对象中的唯一位置标识符所标识的位置处检索清单文件。
3.如权利要求1所述的计算机实现的方法,其特征在于,同步通信还包括标识经授权可访问所述第一服务器上的所述共享对象的客户机。
4.如权利要求1所述的计算机实现的方法,其特征在于,访问共享对象还包括访问第二服务器上的共享对象。
5.如权利要求1所述的计算机实现的方法,其特征在于,访问共享对象还包括访问第一对等网络上的共享对象。
6.如权利要求1所述的计算机实现的方法,其特征在于,同步通信还包括与同样访问所述清单文件中标识的所述共享对象的实例的所述至少一个客户机建立第二对等网络。
7.如权利要求1所述的计算机实现的方法,其特征在于,异步通信还包括连接到所述第一服务器。
8.一种用于在同步和异步通信模式之间过渡的系统,包括第一客户机;被安排成由所述第一客户机访问的共享对象;以及与所述共享对象相关联的清单文件,其中,所述清单文件标识存储所述共享对象的另一实例的位置,其中,所述第一客户机与同样访问所述清单文件中标识的所述共享对象的实例的至少一个客户机同步和直接地通信,以及其中,所述第一客户机与同样访问第一服务器上的所述第一对象的至少一个客户机异步通信。
9.如权利要求8所述的系统,其特征在于,所述第一客户机从由所述共享对象中的唯一位置标识符所标识的位置处检索所述清单文件。
10.如权利要求8所述的系统,其特征在于,当所述第一客户机与所述至少一个客户机实时通信时,另一客户机被授权可访问所标识的第一服务器上的所述共享对象。
11.如权利要求8所述的系统,其特征在于,所述第一客户机访问第二服务器上的所述共享对象。
12.如权利要求11所述的系统,其特征在于,所述第一客户机通过与同样访问所述清单文件中标识的所述共享对象的版本的至少一个客户机建立第一对等网络来同步通信。
13.如权利要求12所述的系统,其特征在于,所述第一客户机在所述第一对等网络被建立以后从所述第二服务器断开。
14.如权利要求8所述的系统,其特征在于,所述第一客户机访问第二对等网络上的所述共享对象。
15.如权利要求14所述的系统,其特征在于,所述第一客户机通过连接到所述第一服务器来异步通信。
16.如权利要求15所述的系统,其特征在于,在所述第一客户机连接到所述第一服务器以后,所述第一客户机从所述第二对等网络断开。
17.一种具有用于在实时和异步通信模式之间过渡的计算机可执行指令的计算机可读介质,包括从以下至少一个访问共享对象第一服务器和第一对等网络检索与所述共享对象相关联的清单文件,其中,所述清单文件标识存储所述共享对象的另一实例的位置;通过第二对等网络与同样访问所述清单文件中标识的所述共享对象的实例的至少一个客户机同步和直接地通信;以及与同样访问第二服务器上的所述共享对象的至少一个服务器异步通信。
18.如权利要求17所述的计算机可读介质,其特征在于,检索清单文件还包括从由所述共享对象中的唯一位置标识符所标识的位置处检索清单文件。
19.如权利要求17所述的计算机可读介质,其特征在于,同步通信还包括标识经授权可访问所述第一服务器上的所述共享对象的客户机。
20.如权利要求17所述的计算机可读介质,其特征在于,还包括从以下至少一个断开所述第一服务器和所述第一对等网络。
全文摘要
多个不同的用户可通过数种不同传输同时访问、修订和更新同一共享对象。客户机可通过物理服务器访问共享对象来异步通信。客户机还可通过对等网络访问共享对象来同步通信。与共享对象相关联的清单文件标识存储共享对象的其它版本和实例的位置。共享对象和相关联的清单文件允许客户机在本地访问、同步和异步通信之间无缝地过渡,以使用户不知道通信模式已改变。用户可改变位置,且任何可用的数据分享传输被自动标识。由此,用户可通过各种不同的机制访问共享对象和与其它经授权的用户合作。
文档编号H04L12/00GK1805394SQ20051013167
公开日2006年7月19日 申请日期2005年12月14日 优先权日2005年1月14日
发明者S·P·克拉科, D·拉斯马森, I·科弗曼 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1