具有数据共享特征的即时消息通信的制作方法

文档序号:6567794阅读:212来源:国知局
专利名称:具有数据共享特征的即时消息通信的制作方法
具有数据共享特征的即时消息通信
些旦冃"、
随着用户能够利用不断扩展的类型的设备诸如个人计算机、无线电话、媒体设备等进行即时消息通信,所以即时消息通信日益流行。即时消息通信可以被用于,例如使两个或多个用户在即时消息通信会话过程中通过网络交换消息。当两个用户同时在线时,在两个用户之间可以实时交换即时消息。因此,即时消息可以被用于以模拟两个用户如何参与典型的口语交谈的方式来支持文本交谈。
然而,典型的即时消息通信会话不能提供可以在即时消息通信会话之外保存的数据共享技术。例如,在典型即时消息通信会话中共享数据通常要求用户中的每
一个都同时在线。因此,如果通过即时消息通信会话一用户不可用,则就不能向那个用户提供在线的其他用户所共享的数据。此外,在即时消息通信会话之间不保存共享状态。这会导致用户之间的数据不一致,这可能是难以手动管理的,诸如确定哪个数据版本是当前的、特定版本是否包括来自客户机中的每一个的改变等。这些不一致会导致用户受挫并且因此导致减弱的即时消息通信体验。
概述
描述了具有数据共享特征的即时消息通信。 一个或多个技术可以被用来使数据在与一个或多个即时消息通信会话有关的用户之间共享,即时用户并未同时在线。另外,这些技术可以被用来同步特定用户之间的数据,从而用户中的每一个都具有该数据的"最新的"副本。此外,这些技术可以被用于基于不同的考虑来调度数据的同步化。
提供此概述以用简化的形式介绍下面将在详细说明中进一步描述的概念的选择。此概述并不旨在标识所请求保护的主题的关键特征或基本特征,也不旨在被用来帮助确定所请求保护的主题的范围。
附图的简要说明


图1是可以用于实现具有数据共享特征的即时消息通信的示例性实施方式中
4的环境的示意图。
图2是更详细地示出图1中的消息通信服务、多个客户机和存储的示例性实施方式中的系统的示意图。
图3是将图1中的多个客户机示为结合即时消息通信使用所共享的空间来在客户机之间共享客户机数据的示例性实施方式的示意图。
图4是被配置为提供即时消息通信以及图3中的共享空间以与至少一个其他
客户机共享数据的示例性实施方式中的用户界面的示意图。
图5是被配置为提供即时消息通信以及图3中共享空间以与至少一个其他客户机共享数据的示例性实施方式中的另一个用户界面的示意图。
图6是描述其中即使当要共享结合即时消息通信会话共享的数据的客户机中的一个不可用时,也同步该数据的示例性实施方式中的过程的流程图。
图7是描述了其中客户机关于即时消息通信可用性的存在性被用来在客户机之间共享数据的过程的流程图。
图8是描述了其中调度结合即时消息通信共享的数据的同步化的示例性实施方式中的过程的流程图。
图9是其中在存在性文档中发布版本矢量以指定要结合即时消息通信来共享的数据的示例性方式中的示意图。
图io是其中同步化协商消息被用于触发客户机之间所共享的数据的复制的示
例性实施方式中的示意图。
相同的参考标号在讨论的示例中被用于引用相同的结构和组件。
详细说明
概况
描述了具有数据共享特征的即时消息通信。即时消息通信过程中传统的数据共享(例如,文件传送)只有当共享该数据的用户中的每一个同时可用,例如都登录到消息通信服务时才会发生,并且一次只能被用于传送一个文件,并且不能在即时消息通信会话之间保存共享状态。因此,用户之间的交互受到了用户中的每一个当前是否可以使用的限制,且不允许跨会话建立状态,例如小孩的相册。因此,描述了这样的技术,在这些技术中,即时消息通信可以包括数据共享,使得客户机可以共享数据,而不考虑客户机中的每一个当前是否可用。
例如,两个用户可以在即时消息通信会话过程中通过使用即时消息来进行通
5信。在会话过程中,第一用户可以通过被用于执行即时消息通信会话的即时消息通信用户界面来指定特定的数据项将被共享。例如,即时消息通信会话可以提供"共享空间",可以在即时消息通信会话过程中为在第一用户的联系人列表中所指定任何一个或一组用户建立该"共享空间"。此共享空间可以允许第一用户共享文件并且对文件进行共享空间中所有其他用户可见的更新,即使这些其他用户当前并未在线。例如,第一用户可以将表示共享空间的文件夹指定为可由第一用户的联系人列表上的任何其他用户、第一用户的联系人列表上的特定用户、第一用户的联系人列表上的上的一组用户等访问。然后,第一用户可将数据拖到那个共享空间(例如,该文件夹)中,并且一旦在线,那个文件夹的内容就与由其他用户维护的类似文件夹进行同步。因此,通过即时消息通信会话,向其他用户中的每一个提供了并不依赖于其他用户是否同时可用的数据的同步化的版本。此外,其他用户也可以对数据进行被同步返回给第一用户的改变。共享空间(例如,文件夹)可以跨多个即时消息通信会话进行保存。
在下面的讨论中,首先描述了可以用于利用各技术提供具有数据共享特征的即时消息 通信的示例性环境和用户界面。然后描述可以由示例性环境提供以及在其他环境中提供的示例性过程。
示例性环境
图1是可以用以实现具有数据共享特征的即时消息通信的示例性实现方式中
的环境100的示意图。环境100包括消息通信服务102,它可以通过网络106由多个客户机104(1)-104(N)访问。客户机104(1)-104(N)可以以各种方式配置以访问网络106。例如, 一个或多个客户机104(1)-104(N)可以被配置为计算设备,诸如台式机、移动站、娱乐设备、可通信地耦合到显示设备的机顶盒、无线电话、游戏控制台等。因此,客户机104(1)-104(N)可以是从具有实质的存储器和处理器资源的完全资源设备(例如,个人计算机、游戏控制台)到具有有限存储器和/或处理资源的低资源设备(例如,传统的机顶盒、便携式游戏控制台)。客户机104(1)-104(N)还可以涉及操作该客户机的人和/或实体。换言之, 一个或多个104(1)-104(N)可以描述包括用户、软件和/或设备的逻辑客户机。
此外,尽管网络106被示为因特网,但是该网络也可以假定各种配置。例如,网络106可以包括广域网(WAN)、局域网(LAN)、无线网络、公共电话网、内联网等。此外,尽管示出了单个网络106,但是网络106也可以被配置为包括多个网络。例如,客户机104(1)可以通过对等网络与客户机104(N)通信耦合。客户机104(1)-104(N)中的每一个也可以通过因特网通信耦合到消息通信服务102。也构想了多种其它例子。
多个客户机104(1)-104(N)中的每一个都被示为包括多个消息通信模块108(1)-108(N)中的相应的一个。每个消息通信模块108(1)-108(N)是执行的,使得相应的客户机104(1)-104(N)可以将其存在性信息传输给消息通信服务102,并且可以参与与客户机104(1)-104(N)中的另一个的即时消息通信会话。即时消息通信提供了一种机制,使得当参与即时消息通信会话时,客户机104(1)-104(N)中的每一个都可相互发送文本消息。尽管也可以使用延迟传递,诸如通过当客户机104(1)-104(N)中的一个不可用例如离线时将文本消息记入日志,但即时消息通常实时传输。因此,即时消息通信可以被认为是电子邮件与因特网聊天的组合,因为即时消息通信支持消息交换并且被为双向实况聊天设计。因此,即时消息通信可以被用于同步通信。例如,像语音电话呼叫,即时消息通信会话可以实时执行,使得每个客户机104(1)-104(N)都可以在即时消息接收到时答复彼此的客户机。
在一个实施方式中,消息通信模块108(1)-108(N)通过使用消息通信服务102彼此通信。消息通信服务102,例如,可以包括消息通信管理器模块110,它可以执行来在消息通信模块108(1)-108(N)之间路由即时消息。例如,客户机104(1)可能使消息通信模块108(1)形成即时消息以便传输给客户机104(N)。消息通信模块108(1)被执行来将即时消息传输给消息通信服务102,消息服务102然后执行消息通信管理器模块110以便通过网络106将即时消息路由给客户机104(N)。客户机104(N)接收即时消息,并且执行消息通信模块108(N)以便显示该即时消息。
在另一个实施方式中,当客户机104(1)-104(N)被彼此直接通信耦合(例如,通过对等网络)时,在不使用消息通信服务102的情况下也可以传输即时消息。对客户机104(1)-104(N)使用对等网络的进一步讨论可以在涉及图2的描述中找到。
客户机104(1)-104(N)中的每一个还被示为具有相应的共享模块112(1)-112(N)。共享模块112(1)-112(N)可以执行来在客户机104(1)-104(N)之间共享关于即时消息通信的数据。例如,共享模块112(1)可以被执行以接收通过即时消息通信用户界面指定用于与客户机104(1)共享的数据,并且使得所指定的数据被存储,使得即使客户机104(N)不可用(例如,当前登录到消息通信服务102),客户机104(N)也可在稍后接收所指定的数据。
所指定的数据金额被存储在多个位置中并且以多种方式存储,在图1中被示为客户机数据114(d)(其中"d"可以是从1到"D"的任意整数)被存储在可以
通过网络106访问的存储116中的,即客户机数据114(d)可以通过"云区(cloud)" 使用。例如,存储116可以由多个客户机104(1)-104(N)通过对等网络提供,使得 客户机104(1)-104(N)中的子集可以包括该数据。因此,当该多个中以前不可用的 客户机变为可用时,那个客户机可以从客户机104(1)-104(N)的子集接收该数据。 在另一个例子中,存储116被包括作为消息通信服务102的一部分。例如,消息通 信服务102可以包括共享管理器模块118,它可以执行以管理多个客户机数据104(d) 的存储,例如同步化客户机数据114(d)、调度客户机数据的同步等,对其讨论可在 涉及图2的描述中找到。
存储116还可以以多种方式访问。例如,存储116,更具体地,通过存储器 116可用的客户机数据114(d),可以通过基于web的接口使用。通过这种接口所作 的改变被传播给对应的客户机,并且可以进行冲突检测和分解(resolution)规则。 也可以考虑存储器116的多种其它例子,而不背离其精神和范围,诸如消息通信服 务102和/或多个客户机客户机104(1)-104(N)可访问的单机专用存储系统。
通过经"云区"提供客户机数据114(d),甚至当客户机104(1)-104(N)中的每 一个都不可用时,也可用共享或访问该数据。存储116提供共享空间,该共享空间 允许客户机104(1)-104(N)共享客户机数据114(d),并且对该数据进行共享空间中 的每一其它客户机可见的更新,即使这些其它客户机当前并未在线。例如,客户机 104(1)可以指定一文件夹为表示可以由客户机104(N)访问的共享空间。客户机 104(1)的用户可以将数据拖到共享空间(例如,该文件夹)中,并且一旦客户机104(1) 在线,即诸如通过当客户机104(N)离线时"云区"中的存储116使那个文件夹的 内容与由客户机104(N)维护的类似文件夹同步化。因此,通过即时消息通信会话, 向客户机104(N)提供有不依赖于其它客户机(例如,客户机104(1))同时可用的 的数据同步化版本。此外,当客户机104(1)离线时,客户机104(N)还可以对客户 机数据114(d)进行将通过"云区"中的存储116被同步化返回到客户机104(1)的改 变。可在涉及图6-10的描述中找到对客户机数据114(d)共享的进一步讨论。
尽管示例性环境100示出了被配置为使用具有数据共享特征的即时消息通信 的示例性实施方式,但是可以以多种方式重新安排该示例性环境。例如,共享管理 器模块118和存储器116可以被设置在单机系统中。共享管理器模块118和存储 116也可以由多个客户机104(1)-104(N)提供,诸如在其中不使用消息通信服务102 的情况下执行即时消息通信的实施方式中。例如,共享模块112(1)-112(N)可以包
8括共享管理器模块118的功能来管理多个客户机数据114(d)。此外,尽管一起示出,
但是共享模块112(1)-112(N)和消息通信模块118(1)-118(N)也可以被分开提供,并
且通过各自的应用程序编程接口来通信。
通常,此处所述的任何功能都可以利用软件、固件(例如,固定逻辑电路)、 手动处理或者这些实现方式的组合来实现。如此处所使用的术语"模块"、"功能" 以及"逻辑"通常表示软件、固件或软件和固件的组合。在软件实现的情况下,当 在处理器(例如, 一个或多个CPU)上执行时,该模块、功能或逻辑表示执行指 定任务的程序代码。该程序代码可以被存储在一个或多个计算机可读存储器设备 中,可在涉及图2的描述中找到进一步的说明。下面描述的即时消息通信技术的特 征是独立于平台的,意思是即时消息通信技术可以在具有各种处理器的各种商业计 算平台上实现。
图2是更详细地示出了图1中的消息通信服务102、多个客户机104(1)-104(N) 和存储116的示例性实现方式的系统200的示意图。消息通信服务102被示为由多 个服务器202(s)来实现,其中"s"可以是从1到"S"的任意整数。图2中的多个 客户机104(1)-104(N)被示为客户机设备。例如,多个服务器202(s)和客户机 104(1)-104(N)都被示为包括各自的处理器204(S)、 206(1)-206(N)以及各自的存储器 208(s)、 210(1)-210(N)。
处理器并不受形成它们的材料或者其中采用的处理机制的限制。例如,处理 器可以由半导体和/或晶体管组成(例如,电子集成电路(IC))。在这种上下文 中,处理器可执行指令可以是电子可执行指令。或者,处理器的或者是用于处理器 的机制,并且以及计算设备的机制或者用于计算设备的机制,可以包括但并不限于 量子计算、光学计算、机械计算(例如,利用纳米技术)等。此外,尽管为各个服 务器202(s)以及客户机104(1)-104(N)示出了单个存储器208(s)、 210(1)-210(N),但 是可以使用各种类型的存储器以及其组合,诸如随机存取存储器(RAM)、硬盘 存储器、可移动介质存储器等。
多个客户机104(1)-104(N)中的每一个包括被示为在各个处理器206(1)-206(N) 上执行并且被存储在各个存储器210(1)-210(N)中的多个消息通信模块 108(1)-108(N)中相应的一个。如前所述,消息通信模块108(1)-108(N)可以执行,以 按照通过网络106使用消息通信服务102的间接通信和/或通过对等网络212的直 接通信来提供即时消息通信会话,这在图2中采用双箭头示出以便指示对等网络 212可以与网络106分开提供或者作为网络106的覆盖。
9消息通信模块108(1)-108(N)可以按照多种方式配置以提供即时消息通信。例 如,消息通信模块108(1)-108(N)可以被配置为可以执行来诸如通过如前述的对等 网络覆盖、通过消息通信服务102等自己提供即时消息通信的专用模块。在另一个 例子中,消息通信模块108(1)-108(N)被配置为可以执行以访问被配置为提供即时 消息通信的网站的消息通信服务102的通信模块(例如,在web浏览器内执行的 ActiveX或类似控件)。换言之,在web浏览器内执行的控件被配置为通过与网站 的交互来提供消息通信模块108(1)-108(N)的功能。在这样的例子中,存储116被 配置以便通过web接口进行访问,使得web浏览器可以通过如前所述的客户机数 据114(d)的存储在客户机之间共享数据。
可以以多种方式将多个消息通信模块108(1)-108(N)提供给多个客户机 104(1)-104(N)。在一个实施方式中,响应于启动即时消息通信会话的请求,由消息 通信服务102 (更具体地通过执行消息通信管理器模块110)提供消息通信模块 108(1)-108(N)。例如,客户机104(1)可以请求启动与客户机104(N)的即时消息通信 会话。如果客户机104(N)接受启动即时消息通信会话,则在处理器204(s)上执行消 息通信管理器模块110,以通过网络106传输消息通信模块用于在各自的客户机 104(1)-104(N)上执行,以便提供即时消息通信会话。在不同的实施方式中,客户机 104(1)-104(N)的用户下载并且安装消息通信模块108(1)-108(N)。
消息通信模块108(1)-108(N)中的每 一 个被示为具有多个复制模块 214(1)-214(N)中相应的一个以及多个调度模块216(l)-216(N)中相应的一个。复制模 块214(1)-214(N)表示负责同步化由多个客户机104(1)-104(N)共享的数据诸如文件 和目录的功能。例如,客户机104(1)-104(N)中的每一个都可以包括一个相应的联 系人列表218(1)-218(N),它被用于指定如何通过定义一个或多个共享空间来共享 由客户机104(1)-104(N)维护的数据220(1)-220(N)。例如,客户机104(1)的联系人 218(1)之一可以引用客户机104(N)(例如,别名、昵称、网络地址等),同样,客 户机104(N)的联系人218(N)之一可以引用客户机104(1);利用以上的联系人,客 户机104(1)和104(N)可以建立共享空间。当复制模块214(1)-214(N)被执行时,它 们可以实现对等客户机数据220(1)-220(N)复制,使得由联系人218(1)-218(N)所引 用的客户机104(1)-104(N)中的每一个都具有客户机数据220(1)的同步化版本。
通过例如与共享管理器模块118交互,复制模块214(1)-214(N)可以使客户机 数据220(1)-220(N)与客户机数据114(d)同步化,使得客户机104(1)-104(N)可以对 其客户机数据220(1)-220(N)作出改变,并且使该改变变得与客户机数据114(d)同步,并且使该改变对共享该数据的每一其它客户机可见,而无需客户机的明确动作。 换言之,同步化可以由模块自动地并且在没有用户干预的情况下执行。此外,通过
使用客户机数据114(d)的存储116,即使客户机104(1)-104(N)中的每一个当前都不 可用,例如,登录到消息通信服务102、登录到由多个客户机104(1)-104(N)执行的
对等即时消息通信会话而无需使用消息通信服务102等,该改变也可以进行并且被 传播。在一个实施方式中,尽管也构想了复制整个数据项(例如,文件和目录), 但可复制改变的数据而不是整个数据项(例如,文件的修改子集)以保存硬件、软 件以及网络资源。例如,客户机数据114(d)可以描述文件的修改子集,该子集利用 "存储和转发"技术来传输到共享客户机数据114(d)的每一个客户机。这允许回收 存储116中的空间。例如,在部分复制的情况下,存储116可以保存关于目录结构 和文件元数据的信息,而不是所共享的每个文件的数据;在这种情况下,在存储 116中只保存尚未被复制到多个客户机104(1)-104(N)的文件的数据。 一旦文件被复 制到多个客户机104(1)-104(N),就可以自动回收存储116中的空间。
复制模块214(1)-214(N)和/或共享管理器模块118也可以管理客户机数据 220(1)-220(N)以及114(d)的同步,以便检测和标记冲突的改变。然后,该模块可以 通知冲突的客户机104(1)-104(N)以便修正,诸如确定哪些改变应被保存、检测等。 可以由复制模块214(1)-214(N)提供多种其它功能,对其进一步的描述可在涉及关 图6-7以及9-10的描述中找到。
调度模块216(1)-216(N)表示被配置为调度由相应的复制模块214(1)-214(N)所 执行的同步化的功能。例如,调度模块216(1)-216(N)可以控制复制活动,以便管 理被用于执行同步化的资源,诸如处理资源(例如,CPU周期)、存储器资源(例 如,所使用的存储器的量、存储器访问的频率等)、网络资源(例如,所使用的带 宽)等。此外,调度模块216(1)-216(N)可以基于各种其它考虑来调度同步化,对 其进一步描述可在涉及图8的描述中找到。
可以以多种方式配置为在多个客户机104(1)-104(N)之间共享客户机数据 220(1)-220(N)以及114(d)而提供的共享空间。例如,客户机104(1)-104(N)中的每一 个都具有"客户机"文件夹222、 一个或多个"与特定客户机共享"文件夹224、 "组"共享文件夹226以及表示用于共享数据项的存储的其它228。这些文件夹的 一个或多个副本也可以被维护为存储116中的客户机数据114(d)。例如,客户机文 件夹222可以对应于客户机104(1)-104(N)中的特定的一个,并且包含被复制到具 有该客户机文件夹的副本的每一其它客户机的数据。在一个实施方式中,其它客户机将接收该客户机放入那个文件夹中的任何客户机数据(例如,文件、文件夹等), 但是将不能改变或修改那个数据。在一种不同的实施方式中,所有客户机都能改变 或修改该数据。
可以为各个客户机104(1)-104(N)的相应联系人列表218(1)-218(N)中所包含的
每一联系人提供"与特定客户机共享"文件夹224。这个文件夹可以被用于与其他 联系人协作,诸如通过允许由能够访问该文件夹的每个用户对这个文件夹中的数据 项作出改变,例如与其它客户机上的另一个本地存储版本或者与存储116中客户机 数据114(d)同步的该文件夹的本地存储版本。也可以提供"组共享"文件夹226用
于协作。
"与特定客户机共享"文件夹224以及"组共享"文件夹226两者都可以利 用已保存的组的概念。例如,可通过使用指定特定组中的成员资格的多个持久对象 216(a)(其中"a"可以是从1到"A"的任意整数),来提供组的持久性(例如, 在"与特定客户机共享"文件夹224的例子中为两个一组,在"组共享"文件夹 226中为两个或多个一组)。例如,每个持久对象216(a)可以包含对被允许参与到 组中的客户机的集合的引用。因此,该组中的每个参与者都可以具有包含由该组的 成员所共享的数据的对应文件夹(例如,"与特定客户机共享"文件夹224以及"组 共享"文件夹226),诸如以便允许组协作。此外,"组共享"文件夹226的一个 或多个副本还可以被维护为存储116中的客户机数据114(d)。尽管可以以多种不同 的方式提供存储218,但持久对象216(a)被示为存储在被包含在存储器208(s)中的 存储218以及本地副本218(1)-218(N)中。
多个持久对象216(a)中的每一个都是持久的,使得它将在创建该持久对象的模 块的执行的终止以外继续存在和/或在期间创建了该持久对象的会话之后继续存 在。例如,消息通信模块108(1)可以在客户机104(1)上执行,并且存储持久对象 216(a)。因此,即使终止了消息通信模块108(1)的执行,也可以在下次客户机 104(1)-104(N)"登录"时调用该持久对象216(a)。因此,持久对象216(a)可以在用 于创建该持久对象216(a)的即时消息通信会话之后、在用于创建该持久对象的模块 (例如,消息通信模块108(1))的执行之后等保存。
持久对象216(a)也可以用于提供多种其它功能。例如,通过提供持久对象216(a) 中对客户机引用的持久性,持久对象216(a)可以被重用以邀请客户机104(1)-104(N) 参与到在线活动(例如即时消息通信、共享、在线游戏等)中,而无需执行多个手 动步骤,诸如选择客户机104(1)-104(N)中的哪些来参与到在线活动中、发送希望参与到在线活动中的通知等。另外,持久对象216(a)可被配置为可在所引用的客户 机104(1)-104(N)中任意一个的联系人218(1)-218(N)中调用或复制。例如,客户机 104(N)可利用由客户机104(1)创建的持久对象216(a)。此外,由持久对象216(a)所 引用的每个客户机都可以被允许改变持久对象216(a)以包括对另一个客户机的应 用,从而增加该持久对象所描述的组的成员。应当注意,该持久对象216(a)可以被 用于指定共享的关系而不要求此处所指定的客户机中的每一个都同时在线。
图3是将图1中的多个客户机示出为结合即时消息通信使用共享空间在客户 机之间共享客户机数据的示例性实施方式300的示意图。客户机104(1)、 104(n)和 104(N)被示为分别具有名字"Adam" 、 "Bob"和"Charlene",并且从而在下面 的讨论中,可以被称为"客户机104(1)"或"Adam 104(1)"、"客户机104(n)" 或"Bob 104(n)",以此类推。
Adam 104(1)被示为包括"我的共享"文件夹302、 "Bob"文件夹304、 "Charlene"文件夹306、"组"文件夹308以及"Adam/Bob"文件夹310。Bob 104(n) 被示为包括"我的共享"文件夹312、 "Adam"文件夹314、 "Charlene"文件夹 316、"组"文件夹318以及"Adam/Bob"文件夹320。同样,Charlene 104(N)包 括"我的共享"文件夹322、 "Adam"文件夹324、 "Bob"文件夹326以及"组" 文件夹328。
"我的共享"文件夹302、 312、 322用于与其它客户机上的对应文件夹304、 306、 314、 316、 324、 326共享被放入这些文件夹中的数据。例如,Adam 104(1) 的"我的共享"文件夹302分别对应于Bob 104(n)和Charlene 104(N)的"Adam" 文件夹314、 324。因此,放入文件夹302中的数据被自动地复制到文件夹314、 324, 如由从文件夹302到文件夹314、 324的虚线所示。以这种方式,Bob 104(n)和 Charlene 104(N)可以容易地确定该数据来源于Adam 104(1)。类似的功能也可以分 别由Bob 104(n)和Charlene 104(N)的"我的共享"文件夹312、 322使用,如由对 应的虚线所示出的。
因为它们属于同一组,所以Adam 104(1)、 Bob 104(n)和Charlene 104(N)也可 以通过组文件夹308、 318、 328来共享数据。如之前所描述的,可以基于指定组成 员的持久对象216(a)来形成组。在这些文件夹308、 318、 328中修改的数据可以在 客户机104(1)、 104(n)和104(N)之间自动同步化。
还可以提供文件夹用于两个用户之间的协作。例如,"Adam/Bob"文件夹310、 320可以表示Adam 104(1)和Bob 104(n)(例如,两个一组)之间所共享的数据用于协作,使得其中任何一个客户机都可以对被包含在这些文件夹中的数据进行添 加、修改、删除以及其它改变。
尽管已经描述了由多个文件夹提供的共享空间,但是也可以以利用多种表示 以多种其它方式来提供共享空间而不背离其精神和范围,诸如结合存储器116、在
消息通信服务102中实现。此外,还可以以多种方式配置由文件夹320-328表示的 共享空间,下面的示意图示出了它的一个例子。
图4是被配置为提供即时消息通信以及图3的共享空间用于与至少一个其它 客户机共享数据的的示例性实施方式400中的用户界面的示意图。通过执行客户机 104(1)上的消息通信模块108(1)来显示用户界面402。用户界面402包括即时消息 通信部分404,即时消息通信部分404被配置为显示在与另一个客户机(在这个例 子中,为图3中的Bobl04(n))的即时消息通信会话期间所传输的即时消息。为了 发送消息,可经由包括"发送"按钮408的表示的文本输入部分406来输入文本, 当选中该"发送"按钮408时,使输入的文本被传输到参与该即时消息通信会话的 每个客户机。
用户界面402还包括共享部分410。用户界面402的共享部分410包括之前关 于图3描述的文件夹的表示,包括"我的共享"文件夹302、 "Bob"文件夹304、 "Charlene"文件夹306、"组"文件夹308以及"Adam/Bob"文件夹310。因此, 用户界面402可以被配置为提供即时消息通信和数据共享。
如前所述,即使当其它客户机中的一个或多个当前不在线时,诸如Charlene 104(N),也可以共享数据。例如,被拖到组文件夹308的数据可以立即与当前可用 的每个客户机(例如,Bobl04(n))共享,并且被存储以供此后当文件夹所指定的 其它客户机例如Charlene 104(N)可用时,向其传输。可以在涉及图6-10的描述中 找到对文件夹的同步化的进一步讨论。
图5是被配置用于提供即时消息通信和图3的共享空间以与至少一个其它客 户机共享数据的示例性实施方式500中的另一种用户界面的示意图。如图4,通过 执行客户机104(n)上的消息通信模块108(n),来显示用户界面502。图5的用户界 面502包括共享部分504,它包括表示多个客户机、相应客户机的名字(例如, "Adam" 、 "Bob"和"Charlene")、相应客户机是否支持数据共享的指示、以 及如果支持数据共享则对从那些客户机是否有新的或更新的数据可用的指示(例 如,"闪光(gleam)")。
例如,Adam的表示包括被示为指示Adam支持数据共享的文件夹的指示。此外,"Adam"文件夹上的视觉表示被用于向Bob 104(n)通知已经对包含在那个文 件夹中的数据作出了改变,在这个例子中,通过文件夹上的星(或"闪光")的覆 盖来示出这一点。因此,Bob 104(n)可以选择该文件夹,使该文件夹的内容被显示 在用户界面502的另一共享部分506中。
其它共享部分506被示为包括在Adam 104(1)和Bob 104(n)之间共享的子文件 夹,在这个例子中,该子文件夹包括休假照片508、工作项目510、文档512以及 小孩的家庭录像514。因此,通知Bob 104(n)已经对共享数据进行了修改,并且可 以在处于即时消息通信用户界面中时通过导航经过这些表示来调查这些改变。应当 注意,对Charlene 104(N)支持数据共享的指示(例如,文件夹)并不包括数据已经 被修改的指示。因此,保持向Bob 104(n)告知关于由Charlene 104(N)与Bob 104(n) 共享的数据的状态。还应当注意,"Dave"不包括共享指示,从而不支持数据共 享。尽管己经讨论了支持数据共享的示例性即时消息通信用户界面,但是应当理解, 也可利用各种其它用户界面来支持数据共享,而不背离其精神和范围。
示例性过程
下面的讨论描述了具有可以利用之前描述的系统和设备实现的数据共享特征 的即时消息通信。每一个过程的各个方面都可以采用硬件、固件或软件或者其组合 来实现。过程被示为指定由一个或多个设备执行的操作的一组块,并且不是必然地 限定为由相应的块(例如,图6-8)和箭头例如图9-10执行该操作而示出的顺序。 在下面讨论的各部分中,将对图1的环境100和/或图2的系统200进行参考。
图6是描述了其中即使当要共享数据的共享客户机中的一个不可用,也可以 使结合即时消息通信会话共享的数据被同步化的示例性实施方式中的过程600的 流程图。当使用消息通信模块108(1)时,客户机104(1)指定要共享的新数据(块 602)。例如,通过分别使用共享用户界面400或500中的共享文件夹404或506 的表示,客户机104(1)可以将文件从其桌面拖到共享文件夹,例如文件夹302、 308、 310。
然后,作出关于哪些其它客户机将接收共享数据的判断(块604)。例如,共 享模块112(1)可以通过检查接收到照片的指示的文件夹来确定那个文件夹中所放 置的数据要与特定客户机共享。然后,通过即时消息通信,使所指定的数据与可用 的其它客户机同步(块606)。例如,消息通信模块108(1)可以确定特定客户机中 的每一个的存在性,并且通过经由网络106或对等网络212将其连接来使该数据与
15可用的那些客户机同步。可在涉及图7的描述中找到对存在性的进一步讨论。
存储所指定的数据以便传输给不可用的其它客户机(块60S)。例如,可通过
与消息通信服务102连接,来将该数据存储为存储116中的客户机数据114(d)。从 而,当至少一个之前不可用的客户机变为可用时(块610),所指定的数据就与该 至少一个客户机同步(块612)。因此,数据可以被指定为由多个客户机共享和同 步,而不考虑该客户机中的每一个是否当前可用。
图7是描述了其中与利用客户机关于即时消息通信的可用性的存在性来在客 户机之间共享数据的示例性实施方式中的过程700的流程图。通过与即时消息通信 用户界面交互,第一客户机与共享的数据交互(块702)。例如,第一客户机可以 将该数据添加到共享文件夹、改变已经被包含在该文件夹中的数据、从文件夹中删 除数据等。
然后,作出关于该交互是否触发了复制的判断(判定块704)。例如,共享模 块112(1)可以监控客户机104(1)与客户机数据220(1)的交互,以便确定是否对该客 户机数据作出了需要被复制的改变。如果否(自判定块704的"否"),则可以继 续监控该交互(块702)。
当该交互触发了复制(自判定块704的"是"),则作出关于哪些客户机被 指定来与之共享该数据(块706)。例如,数据可以被包含在"我的共享"文件夹 302中,其副本可以被作为文件夹314包含在客户机104(n)(即"Bob")上以及 作为文件夹324被包含在客户机104(N)(即"Charlene")上。在其它例子中,该 数据可以被包含在由持久对象指定的组文件夹308中等。
然后,査明所确定的客户机中的每一个的存在性(块70S)。例如,消息通信 模块108(1)可以确定每一个客户机104(1)-104(N)关于可用于即时消息通信的存在 性,诸如客户机是否"在线"、"离线"、"在线但不接收即时消息"等。因此, 数据的共享可以利用通过即时消息通信所提供的存在性的概念。
然后,当客户机存在时,将该数据与客户机中的每一个共享(块710)。这可 以以多种方式来执行。例如,可以通过共享模块112(1)与消息通信模块108(1)的交 互来监控客户机的存在性(块712)。接着,作出关于该客户机是否"登录"到消 息通信服务的判断(判定块714)。例如,消息通信模块108(1)可以与消息通信管 理器模块110通信以便确定多个客户机104(1)-104(N)中的哪些客户机当前登录。 如果客户机登录(自判定块714的"是"),则同步化共享的数据项以便反映由第 一客户机进行的交互(块716)。当客户机未登录时(自判定块714的"否"),则再次监控客户机的存在性。因此,在这个实施方式中, 一旦当客户机变为可用时, 即同步化由该客户机共享的数据。然而,在另一实施方式中,调度数据同步化,其 例子可以在涉及下面附图的描述中找到。
图8是描述了其中调度结合即时消息通信共享的数据的同步化的示例性实施 方式中的过程800的流程图。作出关于哪些数据项要被同步以用于共享的判断(块
802)。例如,共享块112(1)当被执行时,可以监控由客户机与被指定要与至少一 个其它客户机共享的数据项进行的交互。
然后,作出关于哪些客户机要接收将被同步的数据项的判断(块804)。例如, 客户机可以与多个不同数据项进行交互,并且共享模块112(1)可以诸如通过用于与 不同客户机共享而指定的不同文件夹,来确定哪些客户机共享哪些数据项。
然后,为所确定的客户机调度数据项的同步化(块806)。该调度可以是基于 多个特性的。例如,所确定的客户机的特性可以被用于调度数据项的同步化(块 808)。例如,特性可包括所确定的客户机当前是否登录到消息通信服务、描述客 户机的历史存在性趋势的数据(例如,客户机"x"通常在"y"时间段可用)、客 户机的硬件和/或软件资源(例如,连接速度以及客户机接收数据所需的时间量) 等。
在另一个例子中,可以使用要被同步化的数据项的特性(块810),诸如大小、 关于其它数据项的优先级等。在其它例子中,可以使用同步化客户机的特性(块 812),诸如存储器周期、客户机发送数据的网络带宽等。以这种方式,许多特性 都可以被用于调度同步化。尽管已经讨论了一些例子,但是显然,在不背离其精神 和范围的情况下,也构想了多种其它例子。
版本矢量(vector)
如之前在图3-5中所示,共享空间可以在用户界面中被表示为文件夹。这些文 件夹的内容可以在客户机之间同步,而不考虑客户机是否同时在线。因此,在两个 客户机之间共享的空间的情况下,这可能意味着最终(即,当完成同步时)两个客 户机将在其共享文件夹中具有相同的一组数据(例如,文件夹和子文件夹)。在组 (例如,利用持久对象216(a)形成的组)所有成员之间共享的空间的情况下,这可 能意味着最终该组或循环中的每一个成员都将在其文件夹中具有同样的一组数据。
可以以许多方式来实现数据同步。例如,可以由复制模块利用基于多主控状 态(multi-master state-based)的文件复制技术来同步化数据。这种技术涉及用于要 被同歩的文件夹的每个拷贝或者副本的全局状态(被称为"版本矢量")的计算。例如,通过比较两个版本矢量,复制模块可以确定两个副本是否要被同步化。如果 版本矢量一样,则认为将副本是同步化的。然而,如果版本矢量不同,则复制模块 可以使用版本矢量上的差异来高效地确定什么数据项(例如,文件或文件夹)要被 同步化。
版本矢量可以包含多个条目,条目的数目等于要被同步化的不同副本的数目。 这可能是有利的,因为那个数目通常远小于被保持同步的数据项的数目。例如,对 于两个客户机Adam 104(1)和Bob 104(n)之间共享的空间,副本的数量通常会是两 个,每个客户机一个,而共享空间中可能有数几万个文件。例如,以下示出了用于 两个副本的可能的版本矢量的例子,客户机104(1)和104(n)上的两个副本分别用 "A"禾tl "B"表示
副本A的版本矢量{A—15,B—300} 副本B的版本矢量{A—12, B—500} 然而,注意到即使是对于两个客户机之间共享的空间的情况,也可能涉及多于两个 的副本。例如,考虑其中客户机Adam 104(1)利用两个不同机器"MA1"和"MA2" 与消息通信服务102进行交互,而Bob 104(n)利用一个机器"MB"与消息通信服 务102进行交互的情况。在这种情况下,存在数据的三个副本(分別在Ma" MA2 和Mb上),因此版本矢量各自将包含三个条目,其例子如下
Ma!上的副本A的版本矢量{MA1 —18,MA2—33,MB—300} M八2上的副本A的版本矢量{MA1—13,MA2—58,MB—300} Mb上的副本B的版本矢量 {MA1—11,MA2—10,MB—777} 尽管通过版本矢量可以解决两个机器之间高效同步化的问题,但是仍然需要 高效地确定哪些机器要被同步化的技术。例如,客户机"Adam"可能具有100个 联系人218(l),并且维护与这些联系人中的每一个的共享空间。因此,当Adam104(1) 上线时,蛮力方法可能要求Adam的消息模块108(1)连接到所有100个联系人,以 便交换版本矢量并确定是否需要同步化,这可能导致资源的低效使用。因此,可采 用多种技术来提供共享数据的髙效同步化,其例子可以在涉及下面附图的描述中找 到。
因为这两个实施方式都依赖于版本矢量是否相等的比较,所以可通过使用版 本矢量的紧凑表示而不是完整的矢量本身来进一步优化版本矢量以存储和传输较 少的数据。实现这种紧凑表示的一种方式是根据该矢量的标准表示来计算散列。尽 管可以使用任何散列算法,但是密码安全散列(诸如MD5或SHA-1)降低了冲突的风险,即相等的散列用于不同的版本矢量。在下面的说明中,术语"版本矢量" 可用于互换地表示完整的矢量或者该矢量的紧凑表示。
图9是其中在存在行文档中发布版本矢量以指定要结合即时消息通信共享的
数据的示例性实施方式900中的示意图。这种技术是基于每个客户机104(1)、104(n) 各自发布其版本矢量作为相应的存在性文档902(1)、 902(n)的一部分。只要客户机 104(1)、 104(n)注册了,这些存在性文档的最新副本902(m)就由消息通信服务102 来维护。这些存在性文档卯2(m)可以在每次客户机104(1)、 104(n)中的一个登录到 消息通信服务102时、每次由相应客户机104(1)、 104(n)维护的版本矢量中的一个 改变时等被更新。
例如,Adam 104(1)与Bob 104(n)具有一共享空间。每个客户机104(1)、 104(n) 维护共享文件夹相应的副本904(1)、 904(n),被示为"VVA"和"VVB"的相应版 本矢量,相应处于相应存在性文档902(1)、 902(n)中。接着,执行下面的过程以便 确定两个文件夹是否要被同步化,并且如果是,则执行同步化。
无论何时客户机104(1)注册消息通信服务102 (和/或无论何时其版本矢量中 的一个"VVA"改变),客户机104(1)即通过发送改变(CHG)命令904 (箭头906) 向消息通信服务102通知其存在行信息改变了。以其存在性文档902(1)中获得的关 于每一客户机104(1)的版本矢量的信息来扩充作为CHG命令的一部分发送的信 息。客户机104(1)所连接的连接服务器202(1)将这个信息路由到该客户机的存在性 服务器202(p)上(箭头908)。存在性服务器202(p)更新客户机104(1)的存在性数 据910(在这个例子中,它被配置为存在性文档902(m)),以便反映客户机的昵称、 状态码等。因此,存在服务器202(p)存储关于每一客户机104(1)的版本矢量的信息。
因为客户机104(n)在其联系人列表218(n)上具有客户机104(1),所以无论何时 客户机104(1)存在性改变,消息通信服务102即向客户机104(n拨送具有新信息的 命令914 (通过如箭头916所示的对应的连接服务器202(n))。命令914包括如客 户机104(1)、 104(n)所共享的任何空间的存在性数据910获取的来自客户机104(1) 的版本矢量信息。在这个实施方式中,存在性服务器202(p)可以过滤掉关于客户机 104(1)的其它版本矢量的信息,由此节省资源并保持客户机104(1)的私密性。
一旦接收到命令914,客户机104(n)即将接收到的版本矢量"VVA"与其自己 的版本矢量"VVB"进行比较。如果矢量匹配,即同步化共享文件夹904(1)、 904(n)。 然而,如果矢量不匹配,那么通过经由网络106或对等覆盖212的连接来执行共享 文件夹904(1)、 904(n)的同步化。例如,客户机104(n)可以联系客户机104(1),并且执行用于同步共享文件夹 904(1)、 904(n)的协议(箭头918)。如果之前使用紧凑表示来确定是否需要同步 化,则这个协议包括完整版本矢量的交换。在那个协议完成之后,每个客户机更新 其版本矢量,并且采用新的值更新相应的存在性文档902(1)、 902(n)。
图IO是其中利用同步协商消息(SNM)来触发客户机之间的共享数据的复制 的示例性实施方式1000中的示意图。在这种技术中,客户机104(1)、 104(n)使用 来自消息通信服务102的规范的存在性通知来确定何时向其它客户机发送SNM。 SNM包括用于可以使用同步化的文件夹的版本矢量。这种技术不使用存在性服务 器上的额外存储,并且使用最小量的带宽。
这种技术是基于被称为同步协商消息(SNM) 1002的可以被用于客户机 104(1)、 104(n)之间可靠的、单向通信的新消息通信服务协议原语的。SNM消息包 含识别所预期接收方的目的地即时消息通信句柄,以及包含版本矢量和共享空间的 标识符的有效负载。
首先,客户机104(1)通过执行消息通信模块108(1)及其对应的共享模块112(1) 来确定向联系人客户机104(n)发送SNM消息1002 (箭头1004)的至少一个条件 已经被满足。可以使用各种条件。例如,客户机104(1)的版本矢量中的一个已经改 变(例如,作为对共享文件的本地改变、完成的同步化的结果等),并且其用于那 个共享关系的联系人之一 (例如,客户机104(n))在线。在另一个例子中,与其具 有共享关系的其联系人之一 (例如,客户机104(n))上线。应当注意,这可以通过 在每个机器的基础上高速缓存那个特定联系人(例如,客户机104(n))的最近知道 的版本矢量以及如果客户机104(1)的当前版本矢量不同于该联系人例如客户机 104(n)所缓存的版本矢量即发送SNM消息1002来进行优化。
所发送的SNM消息1002由消息通信服务102(更具体的是连接服务器202(1), 202(n))路由给客户机104(n)(箭头1006)。 一旦接收SNM消息1002之后,客户 机104(n)就将接收到的版本矢量"VVA"与其自己的版本矢量"VVB"进行比较。 如果版本矢量匹配,那么就知道共享文件夹904(1)、 904(n)是同步的。
如果版本矢量不同,则客户机通过网络106或对等覆盖212来联系客户机 104(1),并且执行用于同步化文件夹904(1)、 904(n)的协议(箭头1008)。同上, 这种协议可以包括如果原先使用紧凑表示来确定是否需要同步化即交换完整的版 本矢量。在完成该协议之后,每个客户机104(1)、 104(n)更新其相应的版本矢量。
20结论
虽然使用专用于结构特征和/或方法动作的语言描述了本发明,但是应当理 解,所附权利要求中定义的本发明并不必被限于所描述的特定特征或动作。相 反,特定的特征和动作是作为实现所要求保护的本发明的示例性形式而被公开 的。
权利要求
1.一种方法,包括在即时消息通信会话过程中,由客户机指定要与一个或多个其它客户机共享的数据(602),其中至少一个所述其它客户机在所述即时消息通信会话过程中不可用;以及当每一个所述其它客户机可用时,将所述数据与所述客户机同步化(612)。
2. 如权利要求l所述的方法,其中所述同步化是在对等网络上执行的。
3. 如权利要求l所述的方法,其中所述指定是通过被配置为显示在所述即时 消息通信会话过程中所传输的即时消息的用户界面来执行的。
4. 如权利要求1所述的方法,其中所述指定是通过被配置为包括对应于与所 述一个或多个其它客户机共享的数据的文件夹的表示的用户界面来执行的。
5. 如权利要求l所述的方法,还包括将所述数据存储在不包含在所述客户机 和所述其它客户机中的存储中,并且其中所述同步化包括当至少一个所述其它客户 机可用时,将所述存储中所存储的数据提供给至少一个所述其它客户机。
6. 如权利要求5所述的方法,其中所述存储可以通过web接口访问。
7. 如权利要求l所述的方法,其中所述指定是通过包括对应于由具有多个其它所述客户机的组所共享的数据的 文件夹的表示的用户界面执行的;以及所述组中的成员由被配置为在所述即时消息通信会话终止之后继续存在的持 久对象指定。
8. 如权利要求l所述的方法,其中所述数据是数据项中描述对所述数据项作 出的一个或多个改变的子集。
9. 如权利要求l所述的方法,还包括调度所述数据的同步化。
10. —种方法,包括确定要由多个客户机共享的数据是否要被同步化(802);以及 基于所述判断,调度所述数据的同步化,尽管至少一个所述客户机不能通过 即时消息使用(806)。
11. 如权利要求IO所述的方法,其中所述判断是至少部分基于监控与被配置 为显示即时消息的用户界面的交互。
12. 如权利要求IO所述的方法,还包括确定一个或多个所述客户机的存在性, 并且其中所述调度是至少部分基于所确定的存在性来执行的。
13. 如权利要求IO所述的方法,其中所述判断是至少部分基于具有对应于所 述数据的版本矢量的同步协商消息的。
14. 如权利要求IO所述的方法,其中所述判断是至少部分基于通过利用被存 储为描述所述多个客户机中的一个或多个的存在性信息的一部分的版本矢量来执 行的。
15. 如权利要求IO所述的方法,其中所述调度是至少部分基于要接收所述数 据的对应的所述客户机的一个或多个当前特性的。
16. 如权利要求IO所述的方法,其中所述调度是至少部分基于发起所述数据 的至少一个所述客户机的一个或多个特性的。
17. 如权利要求IO所述的方法,其中所述调度是至少部分基于要被同步化的 数据的一个或多个特性的。
18. —种或多种包括计算机可执行指令的计算机可读介质,当所述计算机可 执行指令被执行时,引导计算机来确定是否要同步化在即时消息通信过程中被指定来与至少一个其它客户机共 享的数据(802);以及基于所述判断,调度何时将所述数据与所述至少一个其它客户机同步化 (806)。
19. 如权利要求18所述的一种或多种计算机可读介质,其中所述计算机可执 行指令引导计算机输出被配置为在即时消息通信会话过程中显示即时消息并且接 受将作为即时消息传输的输入的用户界面。
20. 如权利要求18所述的一种或多种计算机可读介质,其中该计算机可执行 指令引导所述计算机来利用基于所述至少一个其它客户机、所述数据以及所述计算 机的特性进行调度。
全文摘要
描述了一种具有数据共享特征的即时消息通信。可使用一个或多个所述的技术来结合即时消息通信会话共享数据,即使要共享数据的一个或多个客户机当前不可用。
文档编号G06F15/16GK101495985SQ200680021218
公开日2009年7月29日 申请日期2006年5月5日 优先权日2005年6月20日
发明者D·特多西, P·S·福德 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1