專利名稱:具有數(shù)據(jù)共享特征的即時消息通信的制作方法
具有數(shù)據(jù)共享特征的即時消息通信
些旦冃"、
隨著用戶能夠利用不斷擴展的類型的設備諸如個人計算機、無線電話、媒體設備等進行即時消息通信,所以即時消息通信日益流行。即時消息通信可以被用于,例如使兩個或多個用戶在即時消息通信會話過程中通過網(wǎng)絡交換消息。當兩個用戶同時在線時,在兩個用戶之間可以實時交換即時消息。因此,即時消息可以被用于以模擬兩個用戶如何參與典型的口語交談的方式來支持文本交談。
然而,典型的即時消息通信會話不能提供可以在即時消息通信會話之外保存的數(shù)據(jù)共享技術。例如,在典型即時消息通信會話中共享數(shù)據(jù)通常要求用戶中的每
一個都同時在線。因此,如果通過即時消息通信會話一用戶不可用,則就不能向那個用戶提供在線的其他用戶所共享的數(shù)據(jù)。此外,在即時消息通信會話之間不保存共享狀態(tài)。這會導致用戶之間的數(shù)據(jù)不一致,這可能是難以手動管理的,諸如確定哪個數(shù)據(jù)版本是當前的、特定版本是否包括來自客戶機中的每一個的改變等。這些不一致會導致用戶受挫并且因此導致減弱的即時消息通信體驗。
概述
描述了具有數(shù)據(jù)共享特征的即時消息通信。 一個或多個技術可以被用來使數(shù)據(jù)在與一個或多個即時消息通信會話有關的用戶之間共享,即時用戶并未同時在線。另外,這些技術可以被用來同步特定用戶之間的數(shù)據(jù),從而用戶中的每一個都具有該數(shù)據(jù)的"最新的"副本。此外,這些技術可以被用于基于不同的考慮來調(diào)度數(shù)據(jù)的同步化。
提供此概述以用簡化的形式介紹下面將在詳細說明中進一步描述的概念的選擇。此概述并不旨在標識所請求保護的主題的關鍵特征或基本特征,也不旨在被用來幫助確定所請求保護的主題的范圍。
附圖的簡要說明
圖1是可以用于實現(xiàn)具有數(shù)據(jù)共享特征的即時消息通信的示例性實施方式中
4的環(huán)境的示意圖。
圖2是更詳細地示出圖1中的消息通信服務、多個客戶機和存儲的示例性實施方式中的系統(tǒng)的示意圖。
圖3是將圖1中的多個客戶機示為結合即時消息通信使用所共享的空間來在客戶機之間共享客戶機數(shù)據(jù)的示例性實施方式的示意圖。
圖4是被配置為提供即時消息通信以及圖3中的共享空間以與至少一個其他
客戶機共享數(shù)據(jù)的示例性實施方式中的用戶界面的示意圖。
圖5是被配置為提供即時消息通信以及圖3中共享空間以與至少一個其他客戶機共享數(shù)據(jù)的示例性實施方式中的另一個用戶界面的示意圖。
圖6是描述其中即使當要共享結合即時消息通信會話共享的數(shù)據(jù)的客戶機中的一個不可用時,也同步該數(shù)據(jù)的示例性實施方式中的過程的流程圖。
圖7是描述了其中客戶機關于即時消息通信可用性的存在性被用來在客戶機之間共享數(shù)據(jù)的過程的流程圖。
圖8是描述了其中調(diào)度結合即時消息通信共享的數(shù)據(jù)的同步化的示例性實施方式中的過程的流程圖。
圖9是其中在存在性文檔中發(fā)布版本矢量以指定要結合即時消息通信來共享的數(shù)據(jù)的示例性方式中的示意圖。
圖io是其中同步化協(xié)商消息被用于觸發(fā)客戶機之間所共享的數(shù)據(jù)的復制的示
例性實施方式中的示意圖。
相同的參考標號在討論的示例中被用于引用相同的結構和組件。
詳細說明
概況
描述了具有數(shù)據(jù)共享特征的即時消息通信。即時消息通信過程中傳統(tǒng)的數(shù)據(jù)共享(例如,文件傳送)只有當共享該數(shù)據(jù)的用戶中的每一個同時可用,例如都登錄到消息通信服務時才會發(fā)生,并且一次只能被用于傳送一個文件,并且不能在即時消息通信會話之間保存共享狀態(tài)。因此,用戶之間的交互受到了用戶中的每一個當前是否可以使用的限制,且不允許跨會話建立狀態(tài),例如小孩的相冊。因此,描述了這樣的技術,在這些技術中,即時消息通信可以包括數(shù)據(jù)共享,使得客戶機可以共享數(shù)據(jù),而不考慮客戶機中的每一個當前是否可用。
例如,兩個用戶可以在即時消息通信會話過程中通過使用即時消息來進行通
5信。在會話過程中,第一用戶可以通過被用于執(zhí)行即時消息通信會話的即時消息通信用戶界面來指定特定的數(shù)據(jù)項將被共享。例如,即時消息通信會話可以提供"共享空間",可以在即時消息通信會話過程中為在第一用戶的聯(lián)系人列表中所指定任何一個或一組用戶建立該"共享空間"。此共享空間可以允許第一用戶共享文件并且對文件進行共享空間中所有其他用戶可見的更新,即使這些其他用戶當前并未在線。例如,第一用戶可以將表示共享空間的文件夾指定為可由第一用戶的聯(lián)系人列表上的任何其他用戶、第一用戶的聯(lián)系人列表上的特定用戶、第一用戶的聯(lián)系人列表上的上的一組用戶等訪問。然后,第一用戶可將數(shù)據(jù)拖到那個共享空間(例如,該文件夾)中,并且一旦在線,那個文件夾的內(nèi)容就與由其他用戶維護的類似文件夾進行同步。因此,通過即時消息通信會話,向其他用戶中的每一個提供了并不依賴于其他用戶是否同時可用的數(shù)據(jù)的同步化的版本。此外,其他用戶也可以對數(shù)據(jù)進行被同步返回給第一用戶的改變。共享空間(例如,文件夾)可以跨多個即時消息通信會話進行保存。
在下面的討論中,首先描述了可以用于利用各技術提供具有數(shù)據(jù)共享特征的即時消息 通信的示例性環(huán)境和用戶界面。然后描述可以由示例性環(huán)境提供以及在其他環(huán)境中提供的示例性過程。
示例性環(huán)境
圖1是可以用以實現(xiàn)具有數(shù)據(jù)共享特征的即時消息通信的示例性實現(xiàn)方式中
的環(huán)境100的示意圖。環(huán)境100包括消息通信服務102,它可以通過網(wǎng)絡106由多個客戶機104(1)-104(N)訪問??蛻魴C104(1)-104(N)可以以各種方式配置以訪問網(wǎng)絡106。例如, 一個或多個客戶機104(1)-104(N)可以被配置為計算設備,諸如臺式機、移動站、娛樂設備、可通信地耦合到顯示設備的機頂盒、無線電話、游戲控制臺等。因此,客戶機104(1)-104(N)可以是從具有實質(zhì)的存儲器和處理器資源的完全資源設備(例如,個人計算機、游戲控制臺)到具有有限存儲器和/或處理資源的低資源設備(例如,傳統(tǒng)的機頂盒、便攜式游戲控制臺)??蛻魴C104(1)-104(N)還可以涉及操作該客戶機的人和/或實體。換言之, 一個或多個104(1)-104(N)可以描述包括用戶、軟件和/或設備的邏輯客戶機。
此外,盡管網(wǎng)絡106被示為因特網(wǎng),但是該網(wǎng)絡也可以假定各種配置。例如,網(wǎng)絡106可以包括廣域網(wǎng)(WAN)、局域網(wǎng)(LAN)、無線網(wǎng)絡、公共電話網(wǎng)、內(nèi)聯(lián)網(wǎng)等。此外,盡管示出了單個網(wǎng)絡106,但是網(wǎng)絡106也可以被配置為包括多個網(wǎng)絡。例如,客戶機104(1)可以通過對等網(wǎng)絡與客戶機104(N)通信耦合。客戶機104(1)-104(N)中的每一個也可以通過因特網(wǎng)通信耦合到消息通信服務102。也構想了多種其它例子。
多個客戶機104(1)-104(N)中的每一個都被示為包括多個消息通信模塊108(1)-108(N)中的相應的一個。每個消息通信模塊108(1)-108(N)是執(zhí)行的,使得相應的客戶機104(1)-104(N)可以將其存在性信息傳輸給消息通信服務102,并且可以參與與客戶機104(1)-104(N)中的另一個的即時消息通信會話。即時消息通信提供了一種機制,使得當參與即時消息通信會話時,客戶機104(1)-104(N)中的每一個都可相互發(fā)送文本消息。盡管也可以使用延遲傳遞,諸如通過當客戶機104(1)-104(N)中的一個不可用例如離線時將文本消息記入日志,但即時消息通常實時傳輸。因此,即時消息通信可以被認為是電子郵件與因特網(wǎng)聊天的組合,因為即時消息通信支持消息交換并且被為雙向實況聊天設計。因此,即時消息通信可以被用于同步通信。例如,像語音電話呼叫,即時消息通信會話可以實時執(zhí)行,使得每個客戶機104(1)-104(N)都可以在即時消息接收到時答復彼此的客戶機。
在一個實施方式中,消息通信模塊108(1)-108(N)通過使用消息通信服務102彼此通信。消息通信服務102,例如,可以包括消息通信管理器模塊110,它可以執(zhí)行來在消息通信模塊108(1)-108(N)之間路由即時消息。例如,客戶機104(1)可能使消息通信模塊108(1)形成即時消息以便傳輸給客戶機104(N)。消息通信模塊108(1)被執(zhí)行來將即時消息傳輸給消息通信服務102,消息服務102然后執(zhí)行消息通信管理器模塊110以便通過網(wǎng)絡106將即時消息路由給客戶機104(N)??蛻魴C104(N)接收即時消息,并且執(zhí)行消息通信模塊108(N)以便顯示該即時消息。
在另一個實施方式中,當客戶機104(1)-104(N)被彼此直接通信耦合(例如,通過對等網(wǎng)絡)時,在不使用消息通信服務102的情況下也可以傳輸即時消息。對客戶機104(1)-104(N)使用對等網(wǎng)絡的進一步討論可以在涉及圖2的描述中找到。
客戶機104(1)-104(N)中的每一個還被示為具有相應的共享模塊112(1)-112(N)。共享模塊112(1)-112(N)可以執(zhí)行來在客戶機104(1)-104(N)之間共享關于即時消息通信的數(shù)據(jù)。例如,共享模塊112(1)可以被執(zhí)行以接收通過即時消息通信用戶界面指定用于與客戶機104(1)共享的數(shù)據(jù),并且使得所指定的數(shù)據(jù)被存儲,使得即使客戶機104(N)不可用(例如,當前登錄到消息通信服務102),客戶機104(N)也可在稍后接收所指定的數(shù)據(jù)。
所指定的數(shù)據(jù)金額被存儲在多個位置中并且以多種方式存儲,在圖1中被示為客戶機數(shù)據(jù)114(d)(其中"d"可以是從1到"D"的任意整數(shù))被存儲在可以
通過網(wǎng)絡106訪問的存儲116中的,即客戶機數(shù)據(jù)114(d)可以通過"云區(qū)(cloud)" 使用。例如,存儲116可以由多個客戶機104(1)-104(N)通過對等網(wǎng)絡提供,使得 客戶機104(1)-104(N)中的子集可以包括該數(shù)據(jù)。因此,當該多個中以前不可用的 客戶機變?yōu)榭捎脮r,那個客戶機可以從客戶機104(1)-104(N)的子集接收該數(shù)據(jù)。 在另一個例子中,存儲116被包括作為消息通信服務102的一部分。例如,消息通 信服務102可以包括共享管理器模塊118,它可以執(zhí)行以管理多個客戶機數(shù)據(jù)104(d) 的存儲,例如同步化客戶機數(shù)據(jù)114(d)、調(diào)度客戶機數(shù)據(jù)的同步等,對其討論可在 涉及圖2的描述中找到。
存儲116還可以以多種方式訪問。例如,存儲116,更具體地,通過存儲器 116可用的客戶機數(shù)據(jù)114(d),可以通過基于web的接口使用。通過這種接口所作 的改變被傳播給對應的客戶機,并且可以進行沖突檢測和分解(resolution)規(guī)則。 也可以考慮存儲器116的多種其它例子,而不背離其精神和范圍,諸如消息通信服 務102和/或多個客戶機客戶機104(1)-104(N)可訪問的單機專用存儲系統(tǒng)。
通過經(jīng)"云區(qū)"提供客戶機數(shù)據(jù)114(d),甚至當客戶機104(1)-104(N)中的每 一個都不可用時,也可用共享或訪問該數(shù)據(jù)。存儲116提供共享空間,該共享空間 允許客戶機104(1)-104(N)共享客戶機數(shù)據(jù)114(d),并且對該數(shù)據(jù)進行共享空間中 的每一其它客戶機可見的更新,即使這些其它客戶機當前并未在線。例如,客戶機 104(1)可以指定一文件夾為表示可以由客戶機104(N)訪問的共享空間??蛻魴C 104(1)的用戶可以將數(shù)據(jù)拖到共享空間(例如,該文件夾)中,并且一旦客戶機104(1) 在線,即諸如通過當客戶機104(N)離線時"云區(qū)"中的存儲116使那個文件夾的 內(nèi)容與由客戶機104(N)維護的類似文件夾同步化。因此,通過即時消息通信會話, 向客戶機104(N)提供有不依賴于其它客戶機(例如,客戶機104(1))同時可用的 的數(shù)據(jù)同步化版本。此外,當客戶機104(1)離線時,客戶機104(N)還可以對客戶 機數(shù)據(jù)114(d)進行將通過"云區(qū)"中的存儲116被同步化返回到客戶機104(1)的改 變。可在涉及圖6-10的描述中找到對客戶機數(shù)據(jù)114(d)共享的進一步討論。
盡管示例性環(huán)境100示出了被配置為使用具有數(shù)據(jù)共享特征的即時消息通信 的示例性實施方式,但是可以以多種方式重新安排該示例性環(huán)境。例如,共享管理 器模塊118和存儲器116可以被設置在單機系統(tǒng)中。共享管理器模塊118和存儲 116也可以由多個客戶機104(1)-104(N)提供,諸如在其中不使用消息通信服務102 的情況下執(zhí)行即時消息通信的實施方式中。例如,共享模塊112(1)-112(N)可以包
8括共享管理器模塊118的功能來管理多個客戶機數(shù)據(jù)114(d)。此外,盡管一起示出,
但是共享模塊112(1)-112(N)和消息通信模塊118(1)-118(N)也可以被分開提供,并
且通過各自的應用程序編程接口來通信。
通常,此處所述的任何功能都可以利用軟件、固件(例如,固定邏輯電路)、 手動處理或者這些實現(xiàn)方式的組合來實現(xiàn)。如此處所使用的術語"模塊"、"功能" 以及"邏輯"通常表示軟件、固件或軟件和固件的組合。在軟件實現(xiàn)的情況下,當 在處理器(例如, 一個或多個CPU)上執(zhí)行時,該模塊、功能或邏輯表示執(zhí)行指 定任務的程序代碼。該程序代碼可以被存儲在一個或多個計算機可讀存儲器設備 中,可在涉及圖2的描述中找到進一步的說明。下面描述的即時消息通信技術的特 征是獨立于平臺的,意思是即時消息通信技術可以在具有各種處理器的各種商業(yè)計 算平臺上實現(xiàn)。
圖2是更詳細地示出了圖1中的消息通信服務102、多個客戶機104(1)-104(N) 和存儲116的示例性實現(xiàn)方式的系統(tǒng)200的示意圖。消息通信服務102被示為由多 個服務器202(s)來實現(xiàn),其中"s"可以是從1到"S"的任意整數(shù)。圖2中的多個 客戶機104(1)-104(N)被示為客戶機設備。例如,多個服務器202(s)和客戶機 104(1)-104(N)都被示為包括各自的處理器204(S)、 206(1)-206(N)以及各自的存儲器 208(s)、 210(1)-210(N)。
處理器并不受形成它們的材料或者其中采用的處理機制的限制。例如,處理 器可以由半導體和/或晶體管組成(例如,電子集成電路(IC))。在這種上下文 中,處理器可執(zhí)行指令可以是電子可執(zhí)行指令?;蛘撸幚砥鞯幕蛘呤怯糜谔幚砥?的機制,并且以及計算設備的機制或者用于計算設備的機制,可以包括但并不限于 量子計算、光學計算、機械計算(例如,利用納米技術)等。此外,盡管為各個服 務器202(s)以及客戶機104(1)-104(N)示出了單個存儲器208(s)、 210(1)-210(N),但 是可以使用各種類型的存儲器以及其組合,諸如隨機存取存儲器(RAM)、硬盤 存儲器、可移動介質(zhì)存儲器等。
多個客戶機104(1)-104(N)中的每一個包括被示為在各個處理器206(1)-206(N) 上執(zhí)行并且被存儲在各個存儲器210(1)-210(N)中的多個消息通信模塊 108(1)-108(N)中相應的一個。如前所述,消息通信模塊108(1)-108(N)可以執(zhí)行,以 按照通過網(wǎng)絡106使用消息通信服務102的間接通信和/或通過對等網(wǎng)絡212的直 接通信來提供即時消息通信會話,這在圖2中采用雙箭頭示出以便指示對等網(wǎng)絡 212可以與網(wǎng)絡106分開提供或者作為網(wǎng)絡106的覆蓋。
9消息通信模塊108(1)-108(N)可以按照多種方式配置以提供即時消息通信。例 如,消息通信模塊108(1)-108(N)可以被配置為可以執(zhí)行來諸如通過如前述的對等 網(wǎng)絡覆蓋、通過消息通信服務102等自己提供即時消息通信的專用模塊。在另一個 例子中,消息通信模塊108(1)-108(N)被配置為可以執(zhí)行以訪問被配置為提供即時 消息通信的網(wǎng)站的消息通信服務102的通信模塊(例如,在web瀏覽器內(nèi)執(zhí)行的 ActiveX或類似控件)。換言之,在web瀏覽器內(nèi)執(zhí)行的控件被配置為通過與網(wǎng)站 的交互來提供消息通信模塊108(1)-108(N)的功能。在這樣的例子中,存儲116被 配置以便通過web接口進行訪問,使得web瀏覽器可以通過如前所述的客戶機數(shù) 據(jù)114(d)的存儲在客戶機之間共享數(shù)據(jù)。
可以以多種方式將多個消息通信模塊108(1)-108(N)提供給多個客戶機 104(1)-104(N)。在一個實施方式中,響應于啟動即時消息通信會話的請求,由消息 通信服務102 (更具體地通過執(zhí)行消息通信管理器模塊110)提供消息通信模塊 108(1)-108(N)。例如,客戶機104(1)可以請求啟動與客戶機104(N)的即時消息通信 會話。如果客戶機104(N)接受啟動即時消息通信會話,則在處理器204(s)上執(zhí)行消 息通信管理器模塊110,以通過網(wǎng)絡106傳輸消息通信模塊用于在各自的客戶機 104(1)-104(N)上執(zhí)行,以便提供即時消息通信會話。在不同的實施方式中,客戶機 104(1)-104(N)的用戶下載并且安裝消息通信模塊108(1)-108(N)。
消息通信模塊108(1)-108(N)中的每 一 個被示為具有多個復制模塊 214(1)-214(N)中相應的一個以及多個調(diào)度模塊216(l)-216(N)中相應的一個。復制模 塊214(1)-214(N)表示負責同步化由多個客戶機104(1)-104(N)共享的數(shù)據(jù)諸如文件 和目錄的功能。例如,客戶機104(1)-104(N)中的每一個都可以包括一個相應的聯(lián) 系人列表218(1)-218(N),它被用于指定如何通過定義一個或多個共享空間來共享 由客戶機104(1)-104(N)維護的數(shù)據(jù)220(1)-220(N)。例如,客戶機104(1)的聯(lián)系人 218(1)之一可以引用客戶機104(N)(例如,別名、昵稱、網(wǎng)絡地址等),同樣,客 戶機104(N)的聯(lián)系人218(N)之一可以引用客戶機104(1);利用以上的聯(lián)系人,客 戶機104(1)和104(N)可以建立共享空間。當復制模塊214(1)-214(N)被執(zhí)行時,它 們可以實現(xiàn)對等客戶機數(shù)據(jù)220(1)-220(N)復制,使得由聯(lián)系人218(1)-218(N)所引 用的客戶機104(1)-104(N)中的每一個都具有客戶機數(shù)據(jù)220(1)的同步化版本。
通過例如與共享管理器模塊118交互,復制模塊214(1)-214(N)可以使客戶機 數(shù)據(jù)220(1)-220(N)與客戶機數(shù)據(jù)114(d)同步化,使得客戶機104(1)-104(N)可以對 其客戶機數(shù)據(jù)220(1)-220(N)作出改變,并且使該改變變得與客戶機數(shù)據(jù)114(d)同步,并且使該改變對共享該數(shù)據(jù)的每一其它客戶機可見,而無需客戶機的明確動作。 換言之,同步化可以由模塊自動地并且在沒有用戶干預的情況下執(zhí)行。此外,通過
使用客戶機數(shù)據(jù)114(d)的存儲116,即使客戶機104(1)-104(N)中的每一個當前都不 可用,例如,登錄到消息通信服務102、登錄到由多個客戶機104(1)-104(N)執(zhí)行的
對等即時消息通信會話而無需使用消息通信服務102等,該改變也可以進行并且被 傳播。在一個實施方式中,盡管也構想了復制整個數(shù)據(jù)項(例如,文件和目錄), 但可復制改變的數(shù)據(jù)而不是整個數(shù)據(jù)項(例如,文件的修改子集)以保存硬件、軟 件以及網(wǎng)絡資源。例如,客戶機數(shù)據(jù)114(d)可以描述文件的修改子集,該子集利用 "存儲和轉發(fā)"技術來傳輸?shù)焦蚕砜蛻魴C數(shù)據(jù)114(d)的每一個客戶機。這允許回收 存儲116中的空間。例如,在部分復制的情況下,存儲116可以保存關于目錄結構 和文件元數(shù)據(jù)的信息,而不是所共享的每個文件的數(shù)據(jù);在這種情況下,在存儲 116中只保存尚未被復制到多個客戶機104(1)-104(N)的文件的數(shù)據(jù)。 一旦文件被復 制到多個客戶機104(1)-104(N),就可以自動回收存儲116中的空間。
復制模塊214(1)-214(N)和/或共享管理器模塊118也可以管理客戶機數(shù)據(jù) 220(1)-220(N)以及114(d)的同步,以便檢測和標記沖突的改變。然后,該模塊可以 通知沖突的客戶機104(1)-104(N)以便修正,諸如確定哪些改變應被保存、檢測等。 可以由復制模塊214(1)-214(N)提供多種其它功能,對其進一步的描述可在涉及關 圖6-7以及9-10的描述中找到。
調(diào)度模塊216(1)-216(N)表示被配置為調(diào)度由相應的復制模塊214(1)-214(N)所 執(zhí)行的同步化的功能。例如,調(diào)度模塊216(1)-216(N)可以控制復制活動,以便管 理被用于執(zhí)行同步化的資源,諸如處理資源(例如,CPU周期)、存儲器資源(例 如,所使用的存儲器的量、存儲器訪問的頻率等)、網(wǎng)絡資源(例如,所使用的帶 寬)等。此外,調(diào)度模塊216(1)-216(N)可以基于各種其它考慮來調(diào)度同步化,對 其進一步描述可在涉及圖8的描述中找到。
可以以多種方式配置為在多個客戶機104(1)-104(N)之間共享客戶機數(shù)據(jù) 220(1)-220(N)以及114(d)而提供的共享空間。例如,客戶機104(1)-104(N)中的每一 個都具有"客戶機"文件夾222、 一個或多個"與特定客戶機共享"文件夾224、 "組"共享文件夾226以及表示用于共享數(shù)據(jù)項的存儲的其它228。這些文件夾的 一個或多個副本也可以被維護為存儲116中的客戶機數(shù)據(jù)114(d)。例如,客戶機文 件夾222可以對應于客戶機104(1)-104(N)中的特定的一個,并且包含被復制到具 有該客戶機文件夾的副本的每一其它客戶機的數(shù)據(jù)。在一個實施方式中,其它客戶機將接收該客戶機放入那個文件夾中的任何客戶機數(shù)據(jù)(例如,文件、文件夾等), 但是將不能改變或修改那個數(shù)據(jù)。在一種不同的實施方式中,所有客戶機都能改變 或修改該數(shù)據(jù)。
可以為各個客戶機104(1)-104(N)的相應聯(lián)系人列表218(1)-218(N)中所包含的
每一聯(lián)系人提供"與特定客戶機共享"文件夾224。這個文件夾可以被用于與其他 聯(lián)系人協(xié)作,諸如通過允許由能夠訪問該文件夾的每個用戶對這個文件夾中的數(shù)據(jù) 項作出改變,例如與其它客戶機上的另一個本地存儲版本或者與存儲116中客戶機 數(shù)據(jù)114(d)同步的該文件夾的本地存儲版本。也可以提供"組共享"文件夾226用
于協(xié)作。
"與特定客戶機共享"文件夾224以及"組共享"文件夾226兩者都可以利 用已保存的組的概念。例如,可通過使用指定特定組中的成員資格的多個持久對象 216(a)(其中"a"可以是從1到"A"的任意整數(shù)),來提供組的持久性(例如, 在"與特定客戶機共享"文件夾224的例子中為兩個一組,在"組共享"文件夾 226中為兩個或多個一組)。例如,每個持久對象216(a)可以包含對被允許參與到 組中的客戶機的集合的引用。因此,該組中的每個參與者都可以具有包含由該組的 成員所共享的數(shù)據(jù)的對應文件夾(例如,"與特定客戶機共享"文件夾224以及"組 共享"文件夾226),諸如以便允許組協(xié)作。此外,"組共享"文件夾226的一個 或多個副本還可以被維護為存儲116中的客戶機數(shù)據(jù)114(d)。盡管可以以多種不同 的方式提供存儲218,但持久對象216(a)被示為存儲在被包含在存儲器208(s)中的 存儲218以及本地副本218(1)-218(N)中。
多個持久對象216(a)中的每一個都是持久的,使得它將在創(chuàng)建該持久對象的模 塊的執(zhí)行的終止以外繼續(xù)存在和/或在期間創(chuàng)建了該持久對象的會話之后繼續(xù)存 在。例如,消息通信模塊108(1)可以在客戶機104(1)上執(zhí)行,并且存儲持久對象 216(a)。因此,即使終止了消息通信模塊108(1)的執(zhí)行,也可以在下次客戶機 104(1)-104(N)"登錄"時調(diào)用該持久對象216(a)。因此,持久對象216(a)可以在用 于創(chuàng)建該持久對象216(a)的即時消息通信會話之后、在用于創(chuàng)建該持久對象的模塊 (例如,消息通信模塊108(1))的執(zhí)行之后等保存。
持久對象216(a)也可以用于提供多種其它功能。例如,通過提供持久對象216(a) 中對客戶機引用的持久性,持久對象216(a)可以被重用以邀請客戶機104(1)-104(N) 參與到在線活動(例如即時消息通信、共享、在線游戲等)中,而無需執(zhí)行多個手 動步驟,諸如選擇客戶機104(1)-104(N)中的哪些來參與到在線活動中、發(fā)送希望參與到在線活動中的通知等。另外,持久對象216(a)可被配置為可在所引用的客戶 機104(1)-104(N)中任意一個的聯(lián)系人218(1)-218(N)中調(diào)用或復制。例如,客戶機 104(N)可利用由客戶機104(1)創(chuàng)建的持久對象216(a)。此外,由持久對象216(a)所 引用的每個客戶機都可以被允許改變持久對象216(a)以包括對另一個客戶機的應 用,從而增加該持久對象所描述的組的成員。應當注意,該持久對象216(a)可以被 用于指定共享的關系而不要求此處所指定的客戶機中的每一個都同時在線。
圖3是將圖1中的多個客戶機示出為結合即時消息通信使用共享空間在客戶 機之間共享客戶機數(shù)據(jù)的示例性實施方式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共享被放入這些文件夾中的數(shù)據(jù)。例如,Adam 104(1) 的"我的共享"文件夾302分別對應于Bob 104(n)和Charlene 104(N)的"Adam" 文件夾314、 324。因此,放入文件夾302中的數(shù)據(jù)被自動地復制到文件夾314、 324, 如由從文件夾302到文件夾314、 324的虛線所示。以這種方式,Bob 104(n)和 Charlene 104(N)可以容易地確定該數(shù)據(jù)來源于Adam 104(1)。類似的功能也可以分 別由Bob 104(n)和Charlene 104(N)的"我的共享"文件夾312、 322使用,如由對 應的虛線所示出的。
因為它們屬于同一組,所以Adam 104(1)、 Bob 104(n)和Charlene 104(N)也可 以通過組文件夾308、 318、 328來共享數(shù)據(jù)。如之前所描述的,可以基于指定組成 員的持久對象216(a)來形成組。在這些文件夾308、 318、 328中修改的數(shù)據(jù)可以在 客戶機104(1)、 104(n)和104(N)之間自動同步化。
還可以提供文件夾用于兩個用戶之間的協(xié)作。例如,"Adam/Bob"文件夾310、 320可以表示Adam 104(1)和Bob 104(n)(例如,兩個一組)之間所共享的數(shù)據(jù)用于協(xié)作,使得其中任何一個客戶機都可以對被包含在這些文件夾中的數(shù)據(jù)進行添 加、修改、刪除以及其它改變。
盡管已經(jīng)描述了由多個文件夾提供的共享空間,但是也可以以利用多種表示 以多種其它方式來提供共享空間而不背離其精神和范圍,諸如結合存儲器116、在
消息通信服務102中實現(xiàn)。此外,還可以以多種方式配置由文件夾320-328表示的 共享空間,下面的示意圖示出了它的一個例子。
圖4是被配置為提供即時消息通信以及圖3的共享空間用于與至少一個其它 客戶機共享數(shù)據(jù)的的示例性實施方式400中的用戶界面的示意圖。通過執(zhí)行客戶機 104(1)上的消息通信模塊108(1)來顯示用戶界面402。用戶界面402包括即時消息 通信部分404,即時消息通信部分404被配置為顯示在與另一個客戶機(在這個例 子中,為圖3中的Bobl04(n))的即時消息通信會話期間所傳輸?shù)募磿r消息。為了 發(fā)送消息,可經(jīng)由包括"發(fā)送"按鈕408的表示的文本輸入部分406來輸入文本, 當選中該"發(fā)送"按鈕408時,使輸入的文本被傳輸?shù)絽⑴c該即時消息通信會話的 每個客戶機。
用戶界面402還包括共享部分410。用戶界面402的共享部分410包括之前關 于圖3描述的文件夾的表示,包括"我的共享"文件夾302、 "Bob"文件夾304、 "Charlene"文件夾306、"組"文件夾308以及"Adam/Bob"文件夾310。因此, 用戶界面402可以被配置為提供即時消息通信和數(shù)據(jù)共享。
如前所述,即使當其它客戶機中的一個或多個當前不在線時,諸如Charlene 104(N),也可以共享數(shù)據(jù)。例如,被拖到組文件夾308的數(shù)據(jù)可以立即與當前可用 的每個客戶機(例如,Bobl04(n))共享,并且被存儲以供此后當文件夾所指定的 其它客戶機例如Charlene 104(N)可用時,向其傳輸??梢栽谏婕皥D6-10的描述中 找到對文件夾的同步化的進一步討論。
圖5是被配置用于提供即時消息通信和圖3的共享空間以與至少一個其它客 戶機共享數(shù)據(jù)的示例性實施方式500中的另一種用戶界面的示意圖。如圖4,通過 執(zhí)行客戶機104(n)上的消息通信模塊108(n),來顯示用戶界面502。圖5的用戶界 面502包括共享部分504,它包括表示多個客戶機、相應客戶機的名字(例如, "Adam" 、 "Bob"和"Charlene")、相應客戶機是否支持數(shù)據(jù)共享的指示、以 及如果支持數(shù)據(jù)共享則對從那些客戶機是否有新的或更新的數(shù)據(jù)可用的指示(例 如,"閃光(gleam)")。
例如,Adam的表示包括被示為指示Adam支持數(shù)據(jù)共享的文件夾的指示。此外,"Adam"文件夾上的視覺表示被用于向Bob 104(n)通知已經(jīng)對包含在那個文 件夾中的數(shù)據(jù)作出了改變,在這個例子中,通過文件夾上的星(或"閃光")的覆 蓋來示出這一點。因此,Bob 104(n)可以選擇該文件夾,使該文件夾的內(nèi)容被顯示 在用戶界面502的另一共享部分506中。
其它共享部分506被示為包括在Adam 104(1)和Bob 104(n)之間共享的子文件 夾,在這個例子中,該子文件夾包括休假照片508、工作項目510、文檔512以及 小孩的家庭錄像514。因此,通知Bob 104(n)已經(jīng)對共享數(shù)據(jù)進行了修改,并且可 以在處于即時消息通信用戶界面中時通過導航經(jīng)過這些表示來調(diào)查這些改變。應當 注意,對Charlene 104(N)支持數(shù)據(jù)共享的指示(例如,文件夾)并不包括數(shù)據(jù)已經(jīng) 被修改的指示。因此,保持向Bob 104(n)告知關于由Charlene 104(N)與Bob 104(n) 共享的數(shù)據(jù)的狀態(tài)。還應當注意,"Dave"不包括共享指示,從而不支持數(shù)據(jù)共 享。盡管己經(jīng)討論了支持數(shù)據(jù)共享的示例性即時消息通信用戶界面,但是應當理解, 也可利用各種其它用戶界面來支持數(shù)據(jù)共享,而不背離其精神和范圍。
示例性過程
下面的討論描述了具有可以利用之前描述的系統(tǒng)和設備實現(xiàn)的數(shù)據(jù)共享特征 的即時消息通信。每一個過程的各個方面都可以采用硬件、固件或軟件或者其組合 來實現(xiàn)。過程被示為指定由一個或多個設備執(zhí)行的操作的一組塊,并且不是必然地 限定為由相應的塊(例如,圖6-8)和箭頭例如圖9-10執(zhí)行該操作而示出的順序。 在下面討論的各部分中,將對圖1的環(huán)境100和/或圖2的系統(tǒng)200進行參考。
圖6是描述了其中即使當要共享數(shù)據(jù)的共享客戶機中的一個不可用,也可以 使結合即時消息通信會話共享的數(shù)據(jù)被同步化的示例性實施方式中的過程600的 流程圖。當使用消息通信模塊108(1)時,客戶機104(1)指定要共享的新數(shù)據(jù)(塊 602)。例如,通過分別使用共享用戶界面400或500中的共享文件夾404或506 的表示,客戶機104(1)可以將文件從其桌面拖到共享文件夾,例如文件夾302、 308、 310。
然后,作出關于哪些其它客戶機將接收共享數(shù)據(jù)的判斷(塊604)。例如,共 享模塊112(1)可以通過檢查接收到照片的指示的文件夾來確定那個文件夾中所放 置的數(shù)據(jù)要與特定客戶機共享。然后,通過即時消息通信,使所指定的數(shù)據(jù)與可用 的其它客戶機同步(塊606)。例如,消息通信模塊108(1)可以確定特定客戶機中 的每一個的存在性,并且通過經(jīng)由網(wǎng)絡106或對等網(wǎng)絡212將其連接來使該數(shù)據(jù)與
15可用的那些客戶機同步??稍谏婕皥D7的描述中找到對存在性的進一步討論。
存儲所指定的數(shù)據(jù)以便傳輸給不可用的其它客戶機(塊60S)。例如,可通過
與消息通信服務102連接,來將該數(shù)據(jù)存儲為存儲116中的客戶機數(shù)據(jù)114(d)。從 而,當至少一個之前不可用的客戶機變?yōu)榭捎脮r(塊610),所指定的數(shù)據(jù)就與該 至少一個客戶機同步(塊612)。因此,數(shù)據(jù)可以被指定為由多個客戶機共享和同 步,而不考慮該客戶機中的每一個是否當前可用。
圖7是描述了其中與利用客戶機關于即時消息通信的可用性的存在性來在客 戶機之間共享數(shù)據(jù)的示例性實施方式中的過程700的流程圖。通過與即時消息通信 用戶界面交互,第一客戶機與共享的數(shù)據(jù)交互(塊702)。例如,第一客戶機可以 將該數(shù)據(jù)添加到共享文件夾、改變已經(jīng)被包含在該文件夾中的數(shù)據(jù)、從文件夾中刪 除數(shù)據(jù)等。
然后,作出關于該交互是否觸發(fā)了復制的判斷(判定塊704)。例如,共享模 塊112(1)可以監(jiān)控客戶機104(1)與客戶機數(shù)據(jù)220(1)的交互,以便確定是否對該客 戶機數(shù)據(jù)作出了需要被復制的改變。如果否(自判定塊704的"否"),則可以繼 續(xù)監(jiān)控該交互(塊702)。
當該交互觸發(fā)了復制(自判定塊704的"是"),則作出關于哪些客戶機被 指定來與之共享該數(shù)據(jù)(塊706)。例如,數(shù)據(jù)可以被包含在"我的共享"文件夾 302中,其副本可以被作為文件夾314包含在客戶機104(n)(即"Bob")上以及 作為文件夾324被包含在客戶機104(N)(即"Charlene")上。在其它例子中,該 數(shù)據(jù)可以被包含在由持久對象指定的組文件夾308中等。
然后,査明所確定的客戶機中的每一個的存在性(塊70S)。例如,消息通信 模塊108(1)可以確定每一個客戶機104(1)-104(N)關于可用于即時消息通信的存在 性,諸如客戶機是否"在線"、"離線"、"在線但不接收即時消息"等。因此, 數(shù)據(jù)的共享可以利用通過即時消息通信所提供的存在性的概念。
然后,當客戶機存在時,將該數(shù)據(jù)與客戶機中的每一個共享(塊710)。這可 以以多種方式來執(zhí)行。例如,可以通過共享模塊112(1)與消息通信模塊108(1)的交 互來監(jiān)控客戶機的存在性(塊712)。接著,作出關于該客戶機是否"登錄"到消 息通信服務的判斷(判定塊714)。例如,消息通信模塊108(1)可以與消息通信管 理器模塊110通信以便確定多個客戶機104(1)-104(N)中的哪些客戶機當前登錄。 如果客戶機登錄(自判定塊714的"是"),則同步化共享的數(shù)據(jù)項以便反映由第 一客戶機進行的交互(塊716)。當客戶機未登錄時(自判定塊714的"否"),則再次監(jiān)控客戶機的存在性。因此,在這個實施方式中, 一旦當客戶機變?yōu)榭捎脮r, 即同步化由該客戶機共享的數(shù)據(jù)。然而,在另一實施方式中,調(diào)度數(shù)據(jù)同步化,其 例子可以在涉及下面附圖的描述中找到。
圖8是描述了其中調(diào)度結合即時消息通信共享的數(shù)據(jù)的同步化的示例性實施 方式中的過程800的流程圖。作出關于哪些數(shù)據(jù)項要被同步以用于共享的判斷(塊
802)。例如,共享塊112(1)當被執(zhí)行時,可以監(jiān)控由客戶機與被指定要與至少一 個其它客戶機共享的數(shù)據(jù)項進行的交互。
然后,作出關于哪些客戶機要接收將被同步的數(shù)據(jù)項的判斷(塊804)。例如, 客戶機可以與多個不同數(shù)據(jù)項進行交互,并且共享模塊112(1)可以諸如通過用于與 不同客戶機共享而指定的不同文件夾,來確定哪些客戶機共享哪些數(shù)據(jù)項。
然后,為所確定的客戶機調(diào)度數(shù)據(jù)項的同步化(塊806)。該調(diào)度可以是基于 多個特性的。例如,所確定的客戶機的特性可以被用于調(diào)度數(shù)據(jù)項的同步化(塊 808)。例如,特性可包括所確定的客戶機當前是否登錄到消息通信服務、描述客 戶機的歷史存在性趨勢的數(shù)據(jù)(例如,客戶機"x"通常在"y"時間段可用)、客 戶機的硬件和/或軟件資源(例如,連接速度以及客戶機接收數(shù)據(jù)所需的時間量) 等。
在另一個例子中,可以使用要被同步化的數(shù)據(jù)項的特性(塊810),諸如大小、 關于其它數(shù)據(jù)項的優(yōu)先級等。在其它例子中,可以使用同步化客戶機的特性(塊 812),諸如存儲器周期、客戶機發(fā)送數(shù)據(jù)的網(wǎng)絡帶寬等。以這種方式,許多特性 都可以被用于調(diào)度同步化。盡管已經(jīng)討論了一些例子,但是顯然,在不背離其精神 和范圍的情況下,也構想了多種其它例子。
版本矢量(vector)
如之前在圖3-5中所示,共享空間可以在用戶界面中被表示為文件夾。這些文 件夾的內(nèi)容可以在客戶機之間同步,而不考慮客戶機是否同時在線。因此,在兩個 客戶機之間共享的空間的情況下,這可能意味著最終(即,當完成同步時)兩個客 戶機將在其共享文件夾中具有相同的一組數(shù)據(jù)(例如,文件夾和子文件夾)。在組 (例如,利用持久對象216(a)形成的組)所有成員之間共享的空間的情況下,這可 能意味著最終該組或循環(huán)中的每一個成員都將在其文件夾中具有同樣的一組數(shù)據(jù)。
可以以許多方式來實現(xiàn)數(shù)據(jù)同步。例如,可以由復制模塊利用基于多主控狀 態(tài)(multi-master state-based)的文件復制技術來同步化數(shù)據(jù)。這種技術涉及用于要 被同歩的文件夾的每個拷貝或者副本的全局狀態(tài)(被稱為"版本矢量")的計算。例如,通過比較兩個版本矢量,復制模塊可以確定兩個副本是否要被同步化。如果 版本矢量一樣,則認為將副本是同步化的。然而,如果版本矢量不同,則復制模塊 可以使用版本矢量上的差異來高效地確定什么數(shù)據(jù)項(例如,文件或文件夾)要被 同步化。
版本矢量可以包含多個條目,條目的數(shù)目等于要被同步化的不同副本的數(shù)目。 這可能是有利的,因為那個數(shù)目通常遠小于被保持同步的數(shù)據(jù)項的數(shù)目。例如,對 于兩個客戶機Adam 104(1)和Bob 104(n)之間共享的空間,副本的數(shù)量通常會是兩 個,每個客戶機一個,而共享空間中可能有數(shù)幾萬個文件。例如,以下示出了用于 兩個副本的可能的版本矢量的例子,客戶機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進行交互的情況。在這種情況下,存在數(shù)據(jù)的三個副本(分別在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個 聯(lián)系人218(l),并且維護與這些聯(lián)系人中的每一個的共享空間。因此,當Adam104(1) 上線時,蠻力方法可能要求Adam的消息模塊108(1)連接到所有100個聯(lián)系人,以 便交換版本矢量并確定是否需要同步化,這可能導致資源的低效使用。因此,可采 用多種技術來提供共享數(shù)據(jù)的髙效同步化,其例子可以在涉及下面附圖的描述中找 到。
因為這兩個實施方式都依賴于版本矢量是否相等的比較,所以可通過使用版 本矢量的緊湊表示而不是完整的矢量本身來進一步優(yōu)化版本矢量以存儲和傳輸較 少的數(shù)據(jù)。實現(xiàn)這種緊湊表示的一種方式是根據(jù)該矢量的標準表示來計算散列。盡 管可以使用任何散列算法,但是密碼安全散列(諸如MD5或SHA-1)降低了沖突的風險,即相等的散列用于不同的版本矢量。在下面的說明中,術語"版本矢量" 可用于互換地表示完整的矢量或者該矢量的緊湊表示。
圖9是其中在存在行文檔中發(fā)布版本矢量以指定要結合即時消息通信共享的
數(shù)據(jù)的示例性實施方式900中的示意圖。這種技術是基于每個客戶機104(1)、104(n) 各自發(fā)布其版本矢量作為相應的存在性文檔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)中。接著,執(zhí)行下面的過程以便 確定兩個文件夾是否要被同步化,并且如果是,則執(zhí)行同步化。
無論何時客戶機104(1)注冊消息通信服務102 (和/或無論何時其版本矢量中 的一個"VVA"改變),客戶機104(1)即通過發(fā)送改變(CHG)命令904 (箭頭906) 向消息通信服務102通知其存在行信息改變了。以其存在性文檔902(1)中獲得的關 于每一客戶機104(1)的版本矢量的信息來擴充作為CHG命令的一部分發(fā)送的信 息。客戶機104(1)所連接的連接服務器202(1)將這個信息路由到該客戶機的存在性 服務器202(p)上(箭頭908)。存在性服務器202(p)更新客戶機104(1)的存在性數(shù) 據(jù)910(在這個例子中,它被配置為存在性文檔902(m)),以便反映客戶機的昵稱、 狀態(tài)碼等。因此,存在服務器202(p)存儲關于每一客戶機104(1)的版本矢量的信息。
因為客戶機104(n)在其聯(lián)系人列表218(n)上具有客戶機104(1),所以無論何時 客戶機104(1)存在性改變,消息通信服務102即向客戶機104(n撥送具有新信息的 命令914 (通過如箭頭916所示的對應的連接服務器202(n))。命令914包括如客 戶機104(1)、 104(n)所共享的任何空間的存在性數(shù)據(jù)910獲取的來自客戶機104(1) 的版本矢量信息。在這個實施方式中,存在性服務器202(p)可以過濾掉關于客戶機 104(1)的其它版本矢量的信息,由此節(jié)省資源并保持客戶機104(1)的私密性。
一旦接收到命令914,客戶機104(n)即將接收到的版本矢量"VVA"與其自己 的版本矢量"VVB"進行比較。如果矢量匹配,即同步化共享文件夾904(1)、 904(n)。 然而,如果矢量不匹配,那么通過經(jīng)由網(wǎng)絡106或對等覆蓋212的連接來執(zhí)行共享 文件夾904(1)、 904(n)的同步化。例如,客戶機104(n)可以聯(lián)系客戶機104(1),并且執(zhí)行用于同步共享文件夾 904(1)、 904(n)的協(xié)議(箭頭918)。如果之前使用緊湊表示來確定是否需要同步 化,則這個協(xié)議包括完整版本矢量的交換。在那個協(xié)議完成之后,每個客戶機更新 其版本矢量,并且采用新的值更新相應的存在性文檔902(1)、 902(n)。
圖IO是其中利用同步協(xié)商消息(SNM)來觸發(fā)客戶機之間的共享數(shù)據(jù)的復制 的示例性實施方式1000中的示意圖。在這種技術中,客戶機104(1)、 104(n)使用 來自消息通信服務102的規(guī)范的存在性通知來確定何時向其它客戶機發(fā)送SNM。 SNM包括用于可以使用同步化的文件夾的版本矢量。這種技術不使用存在性服務 器上的額外存儲,并且使用最小量的帶寬。
這種技術是基于被稱為同步協(xié)商消息(SNM) 1002的可以被用于客戶機 104(1)、 104(n)之間可靠的、單向通信的新消息通信服務協(xié)議原語的。SNM消息包 含識別所預期接收方的目的地即時消息通信句柄,以及包含版本矢量和共享空間的 標識符的有效負載。
首先,客戶機104(1)通過執(zhí)行消息通信模塊108(1)及其對應的共享模塊112(1) 來確定向聯(lián)系人客戶機104(n)發(fā)送SNM消息1002 (箭頭1004)的至少一個條件 已經(jīng)被滿足??梢允褂酶鞣N條件。例如,客戶機104(1)的版本矢量中的一個已經(jīng)改 變(例如,作為對共享文件的本地改變、完成的同步化的結果等),并且其用于那 個共享關系的聯(lián)系人之一 (例如,客戶機104(n))在線。在另一個例子中,與其具 有共享關系的其聯(lián)系人之一 (例如,客戶機104(n))上線。應當注意,這可以通過 在每個機器的基礎上高速緩存那個特定聯(lián)系人(例如,客戶機104(n))的最近知道 的版本矢量以及如果客戶機104(1)的當前版本矢量不同于該聯(lián)系人例如客戶機 104(n)所緩存的版本矢量即發(fā)送SNM消息1002來進行優(yōu)化。
所發(fā)送的SNM消息1002由消息通信服務102(更具體的是連接服務器202(1), 202(n))路由給客戶機104(n)(箭頭1006)。 一旦接收SNM消息1002之后,客戶 機104(n)就將接收到的版本矢量"VVA"與其自己的版本矢量"VVB"進行比較。 如果版本矢量匹配,那么就知道共享文件夾904(1)、 904(n)是同步的。
如果版本矢量不同,則客戶機通過網(wǎng)絡106或對等覆蓋212來聯(lián)系客戶機 104(1),并且執(zhí)行用于同步化文件夾904(1)、 904(n)的協(xié)議(箭頭1008)。同上, 這種協(xié)議可以包括如果原先使用緊湊表示來確定是否需要同步化即交換完整的版 本矢量。在完成該協(xié)議之后,每個客戶機104(1)、 104(n)更新其相應的版本矢量。
20結論
雖然使用專用于結構特征和/或方法動作的語言描述了本發(fā)明,但是應當理 解,所附權利要求中定義的本發(fā)明并不必被限于所描述的特定特征或動作。相 反,特定的特征和動作是作為實現(xiàn)所要求保護的本發(fā)明的示例性形式而被公開 的。
權利要求
1.一種方法,包括在即時消息通信會話過程中,由客戶機指定要與一個或多個其它客戶機共享的數(shù)據(jù)(602),其中至少一個所述其它客戶機在所述即時消息通信會話過程中不可用;以及當每一個所述其它客戶機可用時,將所述數(shù)據(jù)與所述客戶機同步化(612)。
2. 如權利要求l所述的方法,其中所述同步化是在對等網(wǎng)絡上執(zhí)行的。
3. 如權利要求l所述的方法,其中所述指定是通過被配置為顯示在所述即時 消息通信會話過程中所傳輸?shù)募磿r消息的用戶界面來執(zhí)行的。
4. 如權利要求1所述的方法,其中所述指定是通過被配置為包括對應于與所 述一個或多個其它客戶機共享的數(shù)據(jù)的文件夾的表示的用戶界面來執(zhí)行的。
5. 如權利要求l所述的方法,還包括將所述數(shù)據(jù)存儲在不包含在所述客戶機 和所述其它客戶機中的存儲中,并且其中所述同步化包括當至少一個所述其它客戶 機可用時,將所述存儲中所存儲的數(shù)據(jù)提供給至少一個所述其它客戶機。
6. 如權利要求5所述的方法,其中所述存儲可以通過web接口訪問。
7. 如權利要求l所述的方法,其中所述指定是通過包括對應于由具有多個其它所述客戶機的組所共享的數(shù)據(jù)的 文件夾的表示的用戶界面執(zhí)行的;以及所述組中的成員由被配置為在所述即時消息通信會話終止之后繼續(xù)存在的持 久對象指定。
8. 如權利要求l所述的方法,其中所述數(shù)據(jù)是數(shù)據(jù)項中描述對所述數(shù)據(jù)項作 出的一個或多個改變的子集。
9. 如權利要求l所述的方法,還包括調(diào)度所述數(shù)據(jù)的同步化。
10. —種方法,包括確定要由多個客戶機共享的數(shù)據(jù)是否要被同步化(802);以及 基于所述判斷,調(diào)度所述數(shù)據(jù)的同步化,盡管至少一個所述客戶機不能通過 即時消息使用(806)。
11. 如權利要求IO所述的方法,其中所述判斷是至少部分基于監(jiān)控與被配置 為顯示即時消息的用戶界面的交互。
12. 如權利要求IO所述的方法,還包括確定一個或多個所述客戶機的存在性, 并且其中所述調(diào)度是至少部分基于所確定的存在性來執(zhí)行的。
13. 如權利要求IO所述的方法,其中所述判斷是至少部分基于具有對應于所 述數(shù)據(jù)的版本矢量的同步協(xié)商消息的。
14. 如權利要求IO所述的方法,其中所述判斷是至少部分基于通過利用被存 儲為描述所述多個客戶機中的一個或多個的存在性信息的一部分的版本矢量來執(zhí) 行的。
15. 如權利要求IO所述的方法,其中所述調(diào)度是至少部分基于要接收所述數(shù) 據(jù)的對應的所述客戶機的一個或多個當前特性的。
16. 如權利要求IO所述的方法,其中所述調(diào)度是至少部分基于發(fā)起所述數(shù)據(jù) 的至少一個所述客戶機的一個或多個特性的。
17. 如權利要求IO所述的方法,其中所述調(diào)度是至少部分基于要被同步化的 數(shù)據(jù)的一個或多個特性的。
18. —種或多種包括計算機可執(zhí)行指令的計算機可讀介質(zhì),當所述計算機可 執(zhí)行指令被執(zhí)行時,引導計算機來確定是否要同步化在即時消息通信過程中被指定來與至少一個其它客戶機共 享的數(shù)據(jù)(802);以及基于所述判斷,調(diào)度何時將所述數(shù)據(jù)與所述至少一個其它客戶機同步化 (806)。
19. 如權利要求18所述的一種或多種計算機可讀介質(zhì),其中所述計算機可執(zhí) 行指令引導計算機輸出被配置為在即時消息通信會話過程中顯示即時消息并且接 受將作為即時消息傳輸?shù)妮斎氲挠脩艚缑妗?br>
20. 如權利要求18所述的一種或多種計算機可讀介質(zhì),其中該計算機可執(zhí)行 指令引導所述計算機來利用基于所述至少一個其它客戶機、所述數(shù)據(jù)以及所述計算 機的特性進行調(diào)度。
全文摘要
描述了一種具有數(shù)據(jù)共享特征的即時消息通信。可使用一個或多個所述的技術來結合即時消息通信會話共享數(shù)據(jù),即使要共享數(shù)據(jù)的一個或多個客戶機當前不可用。
文檔編號G06F15/16GK101495985SQ200680021218
公開日2009年7月29日 申請日期2006年5月5日 優(yōu)先權日2005年6月20日
發(fā)明者D·特多西, P·S·福德 申請人:微軟公司