專利名稱:在線繪畫的協(xié)作編輯的制作方法
技術領域:
本申請涉及在線繪畫的編輯,更具體地,本申請涉及網(wǎng)頁的畫布中的在線繪畫的協(xié)作編輯。
背景技術:
社交網(wǎng)絡服務提供了幫助人們與他們的社交網(wǎng)絡中的其它人進行通信的站點。人們趨向于在社交網(wǎng)絡服務中主要使用文本來通信。然而,當使用繪畫進行通信時經(jīng)常會更加方便和愉快。不幸地是,在社交網(wǎng)絡服務中使用繪畫進行通信并不是很方便。例如,一些社交網(wǎng)絡服務允許人們更新會話并將繪畫發(fā)送給其他人。然而,這些繪畫并不能由繪畫的接收者進行編輯。而且,這些繪畫典型地是靜態(tài)圖像,例如JPG或GIF文件。在另一實例中, 一些社交網(wǎng)絡服務允許用戶在聊天或即時消息會話期間合作繪畫,但這樣的繪畫并不存留在該通信會話以外的范圍。
發(fā)明內(nèi)容
網(wǎng)頁包含畫布。該畫布包含了繪畫,該繪畫可以由客戶機設備的用戶和使用其它客戶機設備打開包括畫布的網(wǎng)頁的其它用戶在網(wǎng)頁中進行編輯。當網(wǎng)頁在客戶機設備上打開時,在用戶和其他用戶對繪畫做出編輯的近似時間,動態(tài)更新繪畫以反映由用戶和其他用戶對繪畫做出的編輯。所述繪畫被存儲在服務器系統(tǒng)上,這樣當用戶關閉網(wǎng)頁時,其他用戶可以繼續(xù)編輯該繪畫。當用戶重新打開該網(wǎng)頁時,畫布包含了當其他用戶編輯時的繪畫。提供本概述以介紹概念的選擇。這些概念在以下詳細描述中進一步描述。本概述并不旨在標識所要求保護的主題的關鍵特征或必要特征,也不旨在用于幫助確定所要求保護的主題的范圍。
圖1是示出示例系統(tǒng)的框圖。圖2是說明客戶機設備的示例細節(jié)的框圖。圖3示出了示例瀏覽器窗口。圖4是說明服務器系統(tǒng)的示例細節(jié)的框圖。圖5是說明由客戶機設備執(zhí)行的示例操作的第一部分的流程圖。圖6是說明由客戶機設備執(zhí)行的示例操作的第二部分的流程圖。圖7是說明由客戶機設備執(zhí)行的示例操作的第三部分的流程圖。圖8是說明由服務器系統(tǒng)執(zhí)行的示例操作的第一部分的流程圖。圖9是說明由服務器系統(tǒng)執(zhí)行的示例操作的第二部分的流程圖。圖10是示出示例的瀏覽器窗口的示例屏幕。圖11是示出當在狀態(tài)更新區(qū)域中顯示畫布時的網(wǎng)頁的示例屏幕。圖12是示出在已經(jīng)將畫布加入到網(wǎng)頁之后的示例網(wǎng)頁的示例屏幕。
圖13是示出示例計算設備的框圖。
具體實施例方式圖1是示出示例系統(tǒng)100的框圖。系統(tǒng)100包括客戶機設備102A到102N(統(tǒng)稱為“客戶機設備102”)。客戶機設備102是計算設備,例如個人計算機和手持設備。用戶 104A到104N(統(tǒng)稱為“用戶104”)是使用這些客戶機設備102的人。系統(tǒng)100還包括服務器系統(tǒng)106。服務器系統(tǒng)106是包括了一個或多個計算設備的系統(tǒng)??蛻魴C設備102能夠通過網(wǎng)絡108與服務器系統(tǒng)106通信。網(wǎng)絡108是通信網(wǎng)絡, 例如因特網(wǎng)或局域網(wǎng)。網(wǎng)絡108可包括有線和/或無線電信鏈路。服務器系統(tǒng)106主存社交網(wǎng)絡服務。社交網(wǎng)絡服務包括聚焦于建立并反映人們之間的社交網(wǎng)絡的社交網(wǎng)絡站點??蛻魴C設備102通過網(wǎng)絡108與服務器系統(tǒng)106通信以允許用戶104訪問社交網(wǎng)絡服務。如在此文檔中所述,用戶104使用客戶機設備102來打開社交網(wǎng)絡站點中的網(wǎng)頁。 網(wǎng)頁包含畫布。畫布包括在網(wǎng)頁中的一個區(qū)域,在該區(qū)域中用戶104可以合作創(chuàng)建繪畫。繪畫可以包括各種元素,例如直線、曲線、矩形、圓、文本、箭頭、圖像等等。而且,在一些實施例中,繪畫可以包括圖片元素。圖片元素是在該繪畫中的位像。畫布還可以包括使得用戶104能將元素加入繪畫中的屏幕上的工具。例如,畫布可以包括使得用戶104能將圓、矩形、線、文本和其他類型的元素加入繪畫中的屏幕上的工具。當在客戶機設備102上打開網(wǎng)頁時,客戶機設備102在用戶104對繪畫進行改變的近似相同的時間、動態(tài)更新所述繪畫以反映由用戶104對繪畫做出的改變。這樣,如果在兩個或更多的客戶機設備102上打開網(wǎng)頁時,這些客戶機設備的用戶可以在他們做出改變時就看到對繪畫的這些改變。例如,如果在客戶機設備102A和客戶機設備102B上打開網(wǎng)頁且用戶104B對繪畫做出改變,則用戶104A能夠在用戶104B正在進行改變的近似相同的時間看到所述改變。隨后,一些或所有的用戶104能夠關閉該網(wǎng)頁。當用戶104關閉網(wǎng)頁時,繪畫的內(nèi)容并不會丟失。而是將繪畫的狀態(tài)保留,這樣當用戶104重新打開該網(wǎng)頁時,用戶104能夠繼續(xù)編輯該繪畫,而不需要從頭開始。用戶104中的各個用戶可以編輯繪畫而不需要在用戶104的其他用戶的客戶機設備102上打開網(wǎng)頁。例如,用戶104的第一用戶可以是僅有的打開網(wǎng)頁的用戶。在這個示例中,第一用戶可以編輯繪畫并隨后將網(wǎng)頁關閉。當?shù)谝挥脩絷P閉網(wǎng)頁時,繪畫的內(nèi)容(即繪畫中的元素和這些元素的屬性)處于第一狀態(tài)。在本示例中,用戶104的第二用戶在第一用戶已經(jīng)關閉繪畫后打開網(wǎng)頁。當?shù)诙脩舸蜷_網(wǎng)頁時,該繪畫反映了第一用戶所做出的改變。在這個示例中,第二用戶可以隨后對繪畫做出進一步的改變。隨后,第一用戶重新打開該網(wǎng)頁。當?shù)谝挥脩糁匦麓蜷_該網(wǎng)頁時,繪畫的內(nèi)容處于第二狀態(tài)。該第二狀態(tài)是由第二用戶對繪畫的改變而產(chǎn)生的,而這時所述網(wǎng)頁在第一用戶的客戶機設備上已關閉。圖2是說明客戶機設備102A的示例細節(jié)的框圖。應該理解客戶機設備102的其他客戶機設備可以具有與圖2的示例中的客戶機設備102A所說明的細節(jié)相類似的細節(jié)。在一些實施例中,客戶機設備102A和用戶104A的下述描述同樣可應用于客戶機設備102和用戶104中的其他客戶機設備和用戶。
客戶機設備102A是計算設備。在各個實施例中,客戶機設備102A可以是各種類型的計算設備。例如,客戶機設備102A可以是個人計算機、膝上計算機、手持計算機、上網(wǎng)本計算機、智能電話、平板計算機、車載計算機、電視機頂盒、視頻游戲控制臺、手持視頻游戲設備或另一類型的計算設備。如在圖2的示例中所述,客戶機設備102A包括網(wǎng)絡接口 200。網(wǎng)絡接口 200使得客戶機設備102A能夠通過網(wǎng)絡108與其他計算設備通信??蛻魴C設備102A還提供了瀏覽器202。瀏覽器202是使得用戶104A通過通信網(wǎng)絡打開諸如網(wǎng)頁的文檔的軟件應用程序。 在一些實施例中,當客戶機設備102A的處理單元執(zhí)行存儲在一個或多個計算機存儲介質(zhì)上的某些計算機可執(zhí)行指令時,客戶機設備102A提供所述瀏覽器202。示例類型的瀏覽器包括微軟⑧的 INTERNET EXPLORER web瀏覽器、MozillaFirefox web 瀏覽器、Google 的 Chrome web瀏覽器、蘋果的&ifari web瀏覽器、RIM的BlackBerry web瀏覽器以及Opera web瀏覽器等等。瀏覽器202從用戶104A接收輸入以打開由服務器系統(tǒng)106主存的網(wǎng)站。作為響應,瀏覽器202使得網(wǎng)絡接口 200將網(wǎng)頁請求204發(fā)送給服務器系統(tǒng)106。網(wǎng)頁請求204是瀏覽器202對表示所請求的網(wǎng)頁的數(shù)據(jù)的一種請求。在各種實施例中,網(wǎng)頁請求204以各種方式被格式化。例如,在一些實施例中,網(wǎng)頁請求204被格式化為超文本傳輸協(xié)議(HTTP) 請求。隨后,瀏覽器202通過網(wǎng)絡接口 200接收網(wǎng)頁響應206。網(wǎng)頁響應206包含表示所請求的網(wǎng)頁的數(shù)據(jù)。當瀏覽器202接收網(wǎng)頁響應206時,瀏覽器202處理表示網(wǎng)頁的數(shù)據(jù)以準備網(wǎng)頁供顯示。當瀏覽器202處理表示網(wǎng)頁的數(shù)據(jù)時,瀏覽器202確定該網(wǎng)頁是否包括畫布。如果瀏覽器202確定該網(wǎng)頁包括畫布,瀏覽器202啟動客戶機畫布模塊208??蛻魴C畫布模塊 208管理所述畫布。為了管理畫布,客戶機畫布模塊208維持客戶機模型210??蛻魴C模型210包括表示畫布中繪畫的數(shù)據(jù)。在各種實施例中,客戶機模型210以各種方式表示繪畫。例如,客戶機模型210可以包括表示繪畫的XML元素的層次。在該示例中,XML元素的層次符合開放辦公室(Open Off ice) XML (ECMA-376)標準或另一標準中規(guī)定的DrawingML格式。在本示例中,XML元素的層次可以包括整體表示繪畫的XML元素。在該XML元素中是其它表示繪畫中各個元素的XML元素。繪畫中各個元素包括線、矩形、文本、圓等。每個XML元素包括規(guī)定了元素的屬性的各屬性。在瀏覽器202打開網(wǎng)頁之后,客戶機畫布模塊208從用戶104A接收輸入以編輯繪畫。例如,客戶機畫布模塊208可以接收將元素加入到繪畫中、修改繪畫中現(xiàn)有元素的屬性、從繪畫中刪除現(xiàn)有元素的輸入。響應于這種輸入,客戶機畫布模塊208更新客戶機模型 210以反映由所述輸入指示的改變。而且,客戶機畫布模塊208更新所述網(wǎng)頁中的畫布,這樣,繪畫反映了由所述輸入指示的改變。另外,當客戶機畫布模塊208從用戶104A接收對繪畫做出改變的輸入時,客戶機畫布模塊208使得網(wǎng)絡接口 200將客戶機消息212發(fā)送給服務器系統(tǒng)106。客戶機消息212 指定了對繪畫的改變。例如,如果輸入是從繪畫中刪除元素,客戶機消息指示已經(jīng)從該繪畫中刪除了該元素。通過這種方式,服務器系統(tǒng)106能跟得上客戶機設備102處的繪畫的狀態(tài)。
在各種實施例中,網(wǎng)頁請求212以各種方式被格式化。例如,在客戶機模型210包括表示繪畫的XML元素層次的實施例中,客戶機消息212通過指定對客戶機模型210中的一個或多個XML元素的改變來指定對繪畫的改變??蛻魴C畫布模塊208還從服務器系統(tǒng)106接收服務器消息214。服務器消息214 指定了由其他用戶對繪畫做出的改變。客戶機畫布模塊208更新客戶機模型210以反映在服務器消息214中指定的改變。通過這種方式,客戶機畫布模塊208能跟得上服務器系統(tǒng) 106處的繪畫的狀態(tài)。另外,客戶機畫布模塊208動態(tài)地更新顯示給用戶104A的繪畫以反映在服務器消息214中指定的改變。在各種實施例中,服務器消息214以各種方式被格式化。例如,在客戶機模型210 包括表示繪畫的XML元素層次的實施例中,服務器消息214通過指定對客戶機模型210中的一個或多個XML元素的改變來指定對繪畫的改變。因為多個用戶可以同時編輯繪畫,就會產(chǎn)生沖突的改變。例如,用戶104中的一個用戶(例如用戶104A)可能嘗試刪除一個特定的元素,而用戶104中的另一個用戶(例如用戶104B)則嘗試修改該特定元素的一個或多個屬性。因此,在用戶104A做出的改變和用戶 104B做出的改變之間存在沖突。為了避免這樣的沖突,繪畫中的元素典型地是不能被修改或刪除的,除非用戶104首先選擇這些元素。無論何時用戶104選擇繪畫中的元素,客戶機設備102都將鎖定請求發(fā)送給服務器系統(tǒng)106。鎖定請求指定了所選擇的元素。當服務器系統(tǒng)106接收了指定繪畫中特定元素的鎖定請求,服務器系統(tǒng)106鎖定該特定元素,這樣, 在該特定元素被選擇時沒有其他的用戶可以修改或刪除該元素。通過這種方式,當?shù)诙脩粢呀?jīng)選擇了給定元素時,服務器系統(tǒng)106防止了第一用戶對該給定元素的修改或刪除, 反之亦然。如在圖2中的示例中所述,客戶機設備102A還提供了剪貼板216和應用程序218。 在一些實施例中,客戶機設備102A通過執(zhí)行計算機可執(zhí)行指令提供了剪貼板216和應用程序218。應用程序218使得用戶104A能夠編輯文檔。在各種實施例中,應用程序218能夠是多個不同類型的應用程序。例如,應用程序218可以是字處理應用程序(例如微軟 的 Word)、幻燈片演示應用程序(例如微軟 &PowerPoint )、記事本應用程序(例如微軟 &OneNote )、電子郵件應用程序(例如微軟 &Outlook )、圖表編輯應用程序 (例如微軟 )或使用戶104A能夠編輯文檔的另一類型的應用程序。用戶104A能夠在網(wǎng)頁在瀏覽器202中打開時,將副本輸入提供給瀏覽器202。在各種實施例中,用戶104A可以以各種方式將副本輸入提供給瀏覽器202。例如,用戶104A 可以選擇繪畫并隨后按下鍵盤上的鍵組合(例如control-c)。在另一示例中,當用戶104A 在畫布上右鍵點擊時,瀏覽器202顯示彈出菜單。在該示例中,通過從彈出菜單中選擇副本命令,用戶104A將副本輸入提供給瀏覽器202。響應于接收到所述副本輸入,瀏覽器202將客戶機模型210復制到剪貼板216。隨后,用戶104A將繪畫粘貼入在應用程序218中打開的文檔中。當用戶104A將繪畫粘貼入文檔中時,應用程序218將客戶機模型210合并入文檔模型。文檔模型包括表示該文檔的數(shù)據(jù)。例如,客戶機模型210和文檔模型可以包括XML元素的層次。在該示例中,應用程序 218將客戶機模型210中的XML元素的層次合并入文檔模型中的XML元素的層次中。在用戶104A將繪畫粘貼入文檔之后,用戶104A可以繼續(xù)編輯繪畫,而繪畫在文檔中。
在一些實施例中,用戶104A可以將副本輸入提供給應用程序218。副本輸入指令應用程序218復制應用程序218中打開的文檔中的繪畫。作為響應,應用程序218將繪畫的模型復制到剪貼板216。例如,在文檔模型包括XML元素的層次時,應用程序218將表示繪畫的XML元素復制入剪貼板216。隨后,用戶104A可以指令瀏覽器202將繪畫從剪貼板 216粘貼入瀏覽器202中打開的網(wǎng)頁中的畫布。例如,當XML元素的層次表示繪畫時,瀏覽器202可以將XML元素的該層次提供給客戶機畫布模塊208作為用于繪畫的客戶機模型。在一些實施例中,用戶104A能夠復制并粘貼繪畫中的一些元素。為了這樣做,用戶104A選擇在網(wǎng)頁中顯示的繪畫內(nèi)的一個或多個單獨的元素。隨后,用戶104A將副本輸入提供給瀏覽器202。作為響應,瀏覽器202在剪貼板216中生成新的模型。該新的模型表示了繪畫中的所選擇的元素,而不是繪畫中未被選擇的元素。用戶104A可以隨后將粘貼輸入提供給應用程序218。作為響應,應用程序218將該新的模型合并入應用程序218中打開的文檔的文檔模型中。通過這種方式,文檔包括了由新的模型(即所選擇的元素)所表示的繪畫。在將應用程序218打開的文檔的繪畫中的單獨的元素復制并粘貼到瀏覽器202打開的網(wǎng)頁中的繪畫中時,會出現(xiàn)類似的處理。圖3示出了示例瀏覽器窗口 300。瀏覽器窗口 300是由瀏覽器202顯示的窗口。 瀏覽器窗口 300包括導航控件302。導航控件302使用戶104A能夠控制導航。瀏覽器窗口 300還包括網(wǎng)頁304。在圖3的示例中,網(wǎng)頁304包括文本塊306。除了文本塊306之外,網(wǎng)頁包括畫布308。畫布308包括繪畫310。系統(tǒng)310包括一組元素 312。畫布308還包括繪畫控件314A到314F(統(tǒng)稱為“繪畫控件314”)。為了將元素加入到繪畫310,用戶104A選擇繪畫控件314中的一個。隨后,用戶104A使用輸入設備來做出為元素建議位置和/或形狀的手勢。例如,為了畫一條線,用戶104A選擇繪畫控件314A。 在該示例中,隨后,當光標322位于繪畫310內(nèi)的線應該開始的點時,用戶104A按下按鍵, 并且當光標322位于繪畫310內(nèi)的線應該結(jié)束的點時松開按鍵。在另一示例中,為了將文本加入到繪畫310,用戶104A選擇繪畫控件314D。在本示例中,當光標322位于繪畫310 內(nèi)的出現(xiàn)文本框的一個角的點時,用戶104A按下按鍵,并且當光標322位于繪畫310內(nèi)的出現(xiàn)文本框的對角上的一個相對角的點時,松開按鍵。在該示例中,用戶104A可以使用鍵盤或其他輸入設備來將文本輸入文本框中。在各種實施例中,用戶104A以各種方式選擇繪畫310中的元素。例如,用戶104A 可以通過將光標322定位在元素之上并按下按鍵來選擇繪畫310中的元素。在另一個示例中,用戶104A可以通過重復地按特定的鍵盤按鍵(例如“tab”)來選擇繪畫310中的元素。 在該示例中,每次用戶104A按下特定鍵盤按鍵時就會選擇繪畫310中的不同的元素。在另一個示例中,在觸敏顯示器上顯示瀏覽器窗口 300。在該示例中,用戶可以通過觸摸觸敏顯示器上的元素來選擇繪畫310中的元素。當元素處于選中狀態(tài)時,用戶104可以刪除該元素。在各種實施例中,用戶104A執(zhí)行各種動作來刪除元素。例如,用戶104A可以通過按下鍵盤按鍵(例如“刪除”或“退格”) 來刪除元素。在另一示例中,用戶104A可以通過選擇屏幕上控件(未示出)來刪除元素。當元素處于選中狀態(tài)時,用戶104A可以修改該元素的一個或多個屬性。用戶104A 可以通過執(zhí)行不同的動作來修改該元素的不同的屬性。例如,用戶104A可以通過使用光標322來將元素拖到期望的位置來修改元素的位置。在另一個示例中,用戶104A可以通過打開畫布308中的色彩選擇面板并選擇期望的顏色來修改元素的線顏色。在一些實施例中,網(wǎng)頁304是社交網(wǎng)絡站點的一部分。例如,網(wǎng)頁304可以是用戶 104A的社交網(wǎng)絡檔案頁面。社交網(wǎng)絡檔案頁面是包含有關用戶的個人信息的網(wǎng)頁。該用戶的社交網(wǎng)絡檔案頁面可以作為該用戶身份的電子代表。在另一示例中,網(wǎng)頁304可以是社交網(wǎng)絡站點中的一組用戶的網(wǎng)頁。在又另一個示例中,網(wǎng)頁304可以是在社交網(wǎng)絡站點中的鏈接到群組網(wǎng)頁或用戶檔案頁面的網(wǎng)頁。畫布308還包括共享控件316。當用戶104選擇共享控件316時,瀏覽器202顯示聯(lián)系人列表。聯(lián)系人列表是由用戶104A指定的具有與用戶104A直接社交連接的人的列表。用戶104A從聯(lián)系人列表中選擇人員。服務器系統(tǒng)106邀請選中的人來查看和/或編輯繪畫310。例如,服務器系統(tǒng)106可以將電子郵件消息或文本消息發(fā)送給選中的人以邀請該選中的人來查看和/或編輯繪畫310。在圖3的示例中,畫布308還包括許可控件318。當用戶104A選擇許可控件318 時,瀏覽器202顯示許可界面。許可界面使用戶104A能夠選擇哪些其他人員能夠查看和 /或編輯繪畫310。在各種實施例中,許可界面可以包括各種信息并以各種方式被格式化。 例如,服務器系統(tǒng)106可以將用戶104A的社交網(wǎng)絡聯(lián)系人的列表發(fā)送給客戶機設備102A。 用戶104A的社交網(wǎng)絡聯(lián)系人是由用戶104A指定的具有與用戶104A直接社交連接的人員。 在該示例中,用戶104A可以使用復選框或其他類型的控件來指定這些人中的哪些人被授權(quán)查看和/或編輯繪畫310。在另一示例中,許可界面可以列出是用戶104A的工作同事的人員。在用戶104A選擇一個或多個人員來查看和/或編輯繪畫之后,瀏覽器202將許可消息發(fā)送給服務器系統(tǒng)106。許可消息指示哪些用戶被授權(quán)查看和/或編輯繪畫。另外,畫布包括復制控件320。當用戶104A選擇復制控件320時,瀏覽器202將繪畫310的客戶機模型210 (或表示繪畫310中的選中元素的模型)復制到剪貼板216。圖4是說明服務器系統(tǒng)106的示例細節(jié)的框圖。如上所述,服務器系統(tǒng)106包括一個或多個計算設備。在各個實施例中,服務器系統(tǒng)106可以是各種類型的計算設備。例如,服務器系統(tǒng)106可以包括獨立服務器設備、刀片服務器設備、個人計算機、路由器、交換機、橋接、集線器、防火墻設備、負載平衡器、存儲設備和其他類型的計算設備。如在圖4的示例中所述,服務器系統(tǒng)106提供web服務器400和服務器畫布模塊 402。在一些實施例中,當服務器系統(tǒng)106上的一個或多個計算設備執(zhí)行計算機可執(zhí)行指令時,服務器系統(tǒng)106提供web服務器400和服務器畫布模塊402。服務器系統(tǒng)106還存儲了數(shù)據(jù)庫404。在各種實施例中,服務器系統(tǒng)106中的一個或多個計算設備存儲數(shù)據(jù)庫404。web服務器400從客戶機設備102處接收網(wǎng)頁請求406。網(wǎng)頁請求406是打開由服務器系統(tǒng)106主存的網(wǎng)頁的請求。在各種實施例中,網(wǎng)頁請求406以各種方式被格式化。 例如,在一些實施例中,網(wǎng)頁請求406被格式化為超文本傳輸協(xié)議(HTTP)請求。web服務器400發(fā)送網(wǎng)頁響應408作為對網(wǎng)頁請求406的響應。網(wǎng)頁響應408包含表示該網(wǎng)頁的數(shù)據(jù)。而且,當web服務器400從客戶機設備102A接收網(wǎng)頁請求且所請求的網(wǎng)頁包括畫布時,服務器畫布模塊402將客戶機設備102A加入到訂閱列表410。訂閱列表410列出已經(jīng)打開包括該畫布的網(wǎng)頁的一些客戶機設備102。
隨后,web服務器400從客戶機設備102接收客戶機消息412??蛻魴C消息412指明了由客戶機設備102的用戶對畫布中的繪畫做出的改變。例如,客戶機消息412可以指明將元素加入到繪畫、選擇繪畫中的元素等等。當web服務器400接收客戶機消息412時, 服務器畫布模塊402更新數(shù)據(jù)庫404中的服務器模型414。服務器模型414包含了表示繪畫的數(shù)據(jù)。服務器畫布模塊402更新服務器模型414以反映由客戶機消息412指示的對繪畫的改變。例如,服務器模型414可以包括表示繪畫的XML元素層次。在該示例中,客戶機消息412中的一個可以指示用戶104A已經(jīng)從繪畫中刪除了給定的元素。在本示例中,服務器畫布模塊402更新服務器模型414中的XML元素層次以移除表示給定元素的XML元素。當服務器畫布模塊402更新服務器模型414以反映對繪畫的改變時,服務器畫布模塊402將服務器消息416發(fā)送給訂閱列表410中列出的每個客戶機設備。服務器消息 416指明了對繪畫的改變。在各個實施例中,服務器消息416可以以各種方式指明對繪畫的狀態(tài)的改變。例如,如果服務器畫布模塊402刪除了表示繪畫中給定元素的XML元素,則服務器消息416指明了已經(jīng)從服務器模型414刪除了該XML元素。通過處理服務器消息416, 客戶機設備102可以跟得上由其他客戶機設備102做出的對繪畫的改變。圖5是說明由客戶機設備102A執(zhí)行的示例操作500的流程圖。雖然,本文檔描述了操作500可由客戶機設備102A來執(zhí)行,但客戶機設備102中任意一個都能執(zhí)行所述操作 500。如圖5的示例中所述,當瀏覽器202確定從用戶104A接收到輸入時(502),操作 500開始。如果沒有從用戶接收到輸入(502處為“否”),操作500前進到圖7中標記為“C” 的圓。如果從用戶104A接收到輸入(502處為“是”),瀏覽器202確定該輸入是否是導航輸入(504)。導航輸入是指令瀏覽器202打開網(wǎng)頁的輸入。在各個實施例中,瀏覽器202可以接收各種類型的導航輸入。例如,當用戶104A選擇后退按鍵、前進按鍵、重載按鍵、在導航欄中輸入新地址、點擊超鏈接或提供指令瀏覽器202打開網(wǎng)頁的另一類輸入時,瀏覽器202 可以接收導航輸入。如果輸入是導航輸入(504處為“是”),瀏覽器202將網(wǎng)頁請求發(fā)送給服務器系統(tǒng)106 (506)。網(wǎng)頁請求是打開網(wǎng)頁的請求。隨后,瀏覽器202從服務器系統(tǒng)106 接收網(wǎng)頁響應(508)。網(wǎng)頁響應包括表示該網(wǎng)頁的數(shù)據(jù)。隨后,瀏覽器202呈現(xiàn)該網(wǎng)頁,以便將網(wǎng)頁顯示給用戶104A(510)。在呈現(xiàn)所述網(wǎng)頁之后,操作500重啟。另一方面,如果輸入不是導航輸入(504處為“否”),客戶機畫布模塊208確定輸入是否是畫布創(chuàng)建輸入(512)。畫布創(chuàng)建輸入指示用戶104A想要在網(wǎng)頁中包括畫布。在各種實施例中,用戶104A可以以各種方式將畫布創(chuàng)建輸入提供給瀏覽器202。例如,在一些實施例中,頁面可以包括控件,當選擇控件時,向瀏覽器202提供畫布創(chuàng)建輸入。如果輸入是畫布創(chuàng)建輸入(512處是“是”),客戶機畫布模塊208將包含畫布創(chuàng)建請求的客戶機消息發(fā)送給服務器系統(tǒng)106(514)。畫布創(chuàng)建請求指令服務器系統(tǒng)106在網(wǎng)頁中創(chuàng)建新的畫布。 在一些實施例中,客戶機畫布模塊208可以將畫布創(chuàng)建請求自動發(fā)送給服務器系統(tǒng)106,而不需要來自用戶的輸入。例如,當加載網(wǎng)頁時,客戶機畫布模塊208可以將畫布創(chuàng)建請求發(fā)送給服務器系統(tǒng)106。在將畫布創(chuàng)建請求發(fā)送給服務器系統(tǒng)106之后,操作500重啟。如果輸入不是畫布創(chuàng)建輸入(512處是“否”),客戶機畫布模塊208確定該輸入是否是許可輸入(516)。許可輸入是來自用戶104A的為畫布設定許可的輸入。為畫布設定許可的輸入支配了哪些其他用戶被授權(quán)查看和/或編輯畫布。在各個實施例中,用戶104A以各種方式提供許可輸入。例如,客戶機設備102A可以將社交網(wǎng)絡服務的用戶列表顯示給用戶104A。用戶104A可以通過從社交網(wǎng)絡服務的用戶之中選擇用戶來提供所述許可輸入。 在該示例中,沒有被選中的用戶就沒有被授權(quán)來編輯繪畫。如果輸入是許可輸入(516處是“是”),客戶機畫布模塊208將包括許可消息的客戶機消息發(fā)送給服務器系統(tǒng)106 (518)。許可消息指令服務器系統(tǒng)106設定或更新畫布的許可。在發(fā)送所述客戶機消息之后,操作500重啟。如果輸入不是許可輸入(516處是“否”), 客戶機畫布模塊208執(zhí)行圖6中從標記為“B”的圓處開始的操作500的一部分。圖6是說明操作500的第二部分的流程圖。在標記為“B”的圓之后,客戶機畫布模塊208確定所述輸入是否是元素選擇輸入(600)。元素選擇輸入是來自用戶104A的選擇繪畫中現(xiàn)有元素的輸入。如果客戶機畫布模塊208確定輸入是元素選擇輸入(600處是 “是”),則客戶機畫布模塊208將包括鎖定請求的客戶機消息發(fā)送給服務器系統(tǒng)106 (602)。 隨后,客戶機畫布模塊208從服務器系統(tǒng)106接收包括鎖定響應的服務器消息(604)。鎖定響應消息指示服務器系統(tǒng)106是否給予客戶機畫布模塊208對現(xiàn)有元素的鎖定。因此,當客戶機畫布模塊208從服務器系統(tǒng)106處接收鎖定響應消息時,客戶機畫布模塊208使用鎖定響應消息來確定服務器系統(tǒng)106是否給予客戶機畫布模塊208對現(xiàn)有元素的鎖定(606)。 如果服務器系統(tǒng)106已經(jīng)給予客戶機畫布模塊208對現(xiàn)有元素的鎖定(606處是“是”),客戶機畫布模塊208更新客戶機模型210以指示客戶機畫布模塊208具有對現(xiàn)有元素的鎖定 (608)。在客戶機畫布模塊208在步驟608處更新客戶機模型之后或在客戶機畫布模塊208 確定服務器系統(tǒng)106沒有給予客戶機畫布模塊208對現(xiàn)有元素的鎖定(606處是“否”)之后,操作500在圖7中標記為“C”的圓繼續(xù)。如果輸入不是元素選擇輸入(600處是“否”),客戶機畫布模塊208確定該輸入是否是元素解除選擇輸入(610)。元素解除選擇輸入是解除選擇的繪畫中給定元素的輸入。在各個實施例中,用戶104A可以以各種方式提供元素解除選擇輸入。例如,用戶104A可以通過選擇畫布的不含有元素的部分或通過選擇繪畫中的另一元素來提供元素解除選擇輸入。 如果輸入是元素解除選擇輸入(610處是“是”),客戶機畫布模塊208更新客戶機模型210 以指示由元素解除選擇輸入所指定的給定元素不再被選擇(612)。另外,客戶機畫布模塊 208將包括有解鎖請求的客戶機消息發(fā)送給服務器系統(tǒng)106 (614)。解鎖請求向服務器系統(tǒng) 106指示客戶機畫布模塊208不再需要對給定元素的鎖定。在客戶機畫布模塊208在步驟 614中發(fā)送客戶機消息之后,操作在圖7中標記為“C”的圓繼續(xù)。如果輸入不是元素解除選擇輸入(610處是“否”),客戶機畫布模塊208確定該輸入是否是元素添加輸入(616)。元素添加輸入是將新元素加入到繪畫中的輸入。如果輸入是元素添加輸入(616處是“是”),客戶機畫布模塊208更新客戶機模型210以包括由元素添加輸入所指定的新元素(618)。隨后,客戶機畫布模塊208將包括添加元素請求的客戶機消息發(fā)送給服務器系統(tǒng)106 (620)。添加元素請求指明了新元素。在客戶機畫布模塊208 在步驟620中發(fā)送客戶機消息之后,操作500在圖7中標記為“C”的圓繼續(xù)。如果輸入不是元素添加輸入(616處是“否”),客戶機畫布模塊208確定該輸入是否是元素修改輸入(622)。元素修改輸入是對繪畫中已經(jīng)存在的給定元素的一個或多個屬性進行修改的輸入。如果輸入是元素修改輸入(622處是“是”),客戶機畫布模塊208更新客戶機模型210以修改給定元素的一個或多個屬性(6M)。隨后,客戶機畫布模塊208將包括修改元素請求的客戶機消息發(fā)送給服務器系統(tǒng)106 (626)。修改元素請求指示對給定元素的屬性的改變。在客戶機畫布模塊208在步驟626中發(fā)送客戶機消息之后,操作500在圖 7中標記為“C”的圓繼續(xù)。如果輸入不是元素修改輸入(622處是“否”),客戶機畫布模塊208確定該輸入是否是元素刪除輸入(6 )。元素刪除輸入是刪除繪畫中一個或多個元素的輸入。如果輸入是元素刪除輸入(6 處是“是”),客戶機畫布模塊208更新客戶機模型210以刪除所述一個或多個元素(630)。隨后,客戶機畫布模塊208將包括刪除元素請求的客戶機消息發(fā)送給服務器系統(tǒng)106(63 。刪除元素請求指示已經(jīng)從繪畫中刪除了所述一個或多個元素。在客戶機畫布模塊208在步驟632中發(fā)送客戶機消息之后,操作500在圖7中標記為“C”的圓繼續(xù)。圖7是說明操作500的第三部分的流程圖。如在圖7中所示,操作500在標記為 “C”的圓繼續(xù)。最初,客戶機畫布模塊208確定客戶機設備102A是否已經(jīng)接收到服務器消息(700)。服務器消息是由服務器系統(tǒng)106發(fā)送給客戶機設備102A的消息。如果客戶機畫布模塊208確定客戶機設備102A已經(jīng)接收到服務器消息(在700處是“是”),客戶機畫布模塊208確定服務器消息是否包括鎖定消息(702)。鎖定消息指示服務器系統(tǒng)106已經(jīng)鎖定了服務器模型414中的給定元素。如果服務器消息包括鎖定消息(在702處是“是”), 客戶機畫布模塊208更新客戶機模型210以指示鎖定了給定元素(704)。如果服務器消息沒有包括鎖定消息(在702處是“否”),客戶機畫布模塊208確定該服務器消息是否包括解鎖消息(706)。解鎖消息指示服務器系統(tǒng)已經(jīng)解鎖了給定元素。 如果服務器消息包括解鎖消息(在706處是“是”),客戶機畫布模塊208更新客戶機模型 210以指示給定元素被解鎖(708)。如果服務器消息沒有包括解鎖消息(在706處是“否”),客戶機畫布模塊208確定該服務器消息是否包括元素添加消息(710)。元素添加消息指示服務器系統(tǒng)106已經(jīng)向繪畫添加了新元素。如果服務器消息包括元素添加消息(在710處是“是”),客戶機畫布模塊208更新客戶機模型210以包括所述新元素(712)。如果服務器消息沒有包括元素添加消息(在710處是“否”),客戶機畫布模塊208 確定該服務器消息是否包括元素修改消息(714)。元素修改消息指示已經(jīng)修改了繪畫中的元素的一個或多個屬性。例如,元素修改消息可以指示已經(jīng)修改了繪畫中現(xiàn)有的元素的線顏色、位置、大小、線寬度、填充顏色、字體或其他屬性。如果服務器消息包括元素修改消息 (在714處是“是”),客戶機畫布模塊208就更新客戶機模型210以如在元素修改消息中指定的那樣修改現(xiàn)有元素的屬性(716)。如果服務器消息沒有包括元素修改消息(在714處是“否”),則客戶機畫布模塊 208確定該服務器消息是否包括元素刪除消息(718)。元素刪除消息指示了已經(jīng)從繪畫中刪除了元素。如果服務器消息包括元素刪除消息(在718處是“是”),客戶機畫布模塊208 就更新客戶機模型210以刪除元素刪除消息所指定的元素(720)。如果客戶機畫布模塊208確定沒有接收到服務器消息(在700處是“否”)或在執(zhí)行了步驟704、708、712、716或720中的一個步驟之后,客戶機繪畫模塊208呈現(xiàn)來自客戶機模型210的繪畫(722)。通過這種方式,顯示給用戶104A的繪畫反映了客戶機模型210。在呈現(xiàn)了來自客戶機模型210的繪畫之后,客戶機畫布模塊208確定是否已經(jīng)發(fā)生了網(wǎng)頁關閉事件(7M)。網(wǎng)頁關閉事件在當用戶104A導航離開瀏覽器202中的該網(wǎng)頁時、在用戶104A關閉了包含該網(wǎng)頁的瀏覽器窗口時、或在用戶104A使得該網(wǎng)頁不再在瀏覽器窗口中打開時發(fā)生。響應于確定已經(jīng)發(fā)生了網(wǎng)頁關閉事件(在7M處是“是”),客戶機畫布模塊208向服務器系統(tǒng)106發(fā)送包含網(wǎng)頁關閉指示符的客戶機消息(726)。網(wǎng)頁關閉指示符向服務器系統(tǒng)106指示了網(wǎng)頁不再在客戶機設備102A上打開。在步驟726中將客戶機消息發(fā)送給服務器系統(tǒng)106之后或在確定沒有發(fā)生網(wǎng)頁關閉事件(在7M處是“否”) 之后,操作500重啟。圖8是說明由服務器系統(tǒng)106執(zhí)行的示例操作800的第一部分的流程圖。如在圖 8的示例中所示,當web服務器400確定服務器系統(tǒng)106已經(jīng)從客戶機設備102之一中接收了消息(802)時開始操作800。出于簡單解釋說明的目的,圖8和9的討論假設了服務器系統(tǒng)106從客戶機設備102接收了消息。如果服務器系統(tǒng)106沒有從客戶機設備102中的任意一個處接收到消息(在802處是“否”),則服務器畫布模塊402等待從客戶機設備102 中的一個處接收到消息(804)。另一方面,如果服務器系統(tǒng)106已經(jīng)從客戶機設備102A處接收到消息(在802處是“是”),服務器系統(tǒng)106確定該消息是否包括網(wǎng)頁請求(806)。網(wǎng)頁請求包括打開網(wǎng)頁的請求。如果消息包括網(wǎng)頁請求(在806處是“是”),web服務器400確定該網(wǎng)頁是否包括畫布(808)。如果該網(wǎng)頁包括畫布(在808處是“是”),則服務器畫布模塊402將客戶機設備102A加入到訂閱列表410中(810)。在服務器畫布模塊402將客戶機設備102A加入到訂閱列表410中之后或在確定該網(wǎng)頁不包括畫布(在808處是“否”)之后,web服務器400 將網(wǎng)頁響應發(fā)送給客戶機設備102A(812)。網(wǎng)頁響應包括表示該網(wǎng)頁的數(shù)據(jù)。在將網(wǎng)頁響應發(fā)送給客戶機設備102A之后,操作800重啟。如果該消息不包括網(wǎng)頁請求(在806處是“否”),服務器畫布模塊402確定該消息是否是包括有畫布創(chuàng)建請求的客戶機消息(814)。畫布創(chuàng)建請求指令服務器畫布系統(tǒng)402 在網(wǎng)頁中創(chuàng)建新的畫布。如果該客戶機消息包括畫布創(chuàng)建請求(在814處是“是”),服務器畫布模塊402在數(shù)據(jù)庫404中創(chuàng)建新模型(816)。所述新模型包括表示在新的畫布中的繪畫的數(shù)據(jù)。服務器畫布模塊402隨后將客戶機設備102A加入到訂閱列表410中(818)。 接著,服務器畫布模塊402將表示新畫布的數(shù)據(jù)發(fā)送給客戶機設備102A(819)。在各種實施例中,表示新畫布的數(shù)據(jù)以各種方式被格式化。例如,在一些實施例中,表示新畫布的數(shù)據(jù)被格式化為一組XML元素并使用AJAX技術被發(fā)送給客戶機設備102A。在將表示新畫布的數(shù)據(jù)發(fā)送給客戶機設備102A之后,操作800重啟。如果該客戶機消息不包括畫布創(chuàng)建請求(在814處是“否”),服務器畫布模塊402 確定該客戶機消息是否是包括有許可請求(820)。許可請求指令服務器畫布模塊402設定或更新對畫布的許可。對畫布的許可支配了哪些用戶被授權(quán)查看和/或編輯畫布。如果客戶機消息包括許可消息(在820處是“是”),服務器畫布模塊402確定用戶104A是否被授權(quán)設定畫布的許可(822)。如果授權(quán)用戶104A設定畫布的許可(在822處是“是”),服務器畫布模塊402如在許可消息中指示的那樣更新畫布的許可(擬4)。在更新了畫布的許可之后或在確定定用戶沒有被授權(quán)設定畫布的許可(在822處是“否”)之后,操作800重啟。如果客戶機消息沒有包括許可消息(在820處是“否”),服務器畫布模塊402確定該客戶機消息是否包括邀請消息(擬6)。邀請消息指令服務器畫布模塊402將邀請發(fā)送給指定的用戶。該邀請邀請了指定的用戶查看和/或編輯繪畫。如果客戶機消息包括邀請消息(在擬6處是“是”),服務器畫布模塊402將邀請發(fā)送給指定用戶(擬8)。在發(fā)送所述邀請之后,操作800重啟。如果客戶機消息沒有包括邀請消息(在擬6處是“否”),服務器畫布模塊402確定該客戶機消息是否包括網(wǎng)頁關閉指示符(830)。如果該客戶機消息包括網(wǎng)頁關閉指示符 (在830處是“是”),服務器畫布模型402將客戶機設備102A從訂閱列表410中移除(832)。 通過這種方式,當包含畫布的網(wǎng)頁沒有打開時,客戶機設備102A不接收有關畫布的服務器消息。在從訂閱列表410移除客戶機設備102A之后,操作800重啟。另一方面,如果客戶機消息不包括網(wǎng)頁關閉指示符(在830是“否”),服務器畫布模塊402執(zhí)行圖9中的操作 800的該部分。圖9是說明操作800的第二部分的流程圖。如果該客戶機消息不包括網(wǎng)頁關閉指示符(在830處是“否”),服務器畫布模塊402確定該客戶機消息是否是包括鎖定請求 (900)。鎖定請求指令了服務器畫布模塊402鎖定服務器模型414中的元素。如果該客戶機消息包括鎖定請求(在900處是“是”),服務器畫布模塊402確定服務器模型414是否指示了已經(jīng)對鎖定請求所指定的元素進行鎖定(90 如果對指定的元素已經(jīng)存在鎖定,另一用戶已經(jīng)選擇了該元素并且還沒有解除選擇該元素。因此,如果對指定的元素存在鎖定 (在902處是“是”),服務器畫布模塊402將鎖定拒絕響應發(fā)送給客戶機設備102A(904)。 該鎖定拒絕響應指示服務器系統(tǒng)不能將鎖定提供給客戶機設備102A。另一方面,如果對指定的元素已經(jīng)有鎖定(在902處是“否”),服務器畫布模塊402更新服務器模型414以指示客戶機設備102A具有對指定元素的鎖定(906)。服務器畫布模塊402隨后將服務器消息發(fā)送給訂閱列表410中列出的其他客戶機設備(908)。服務器消息包括鎖定消息。鎖定消息指示了服務器系統(tǒng)106已經(jīng)鎖定了指定的元素。服務器畫布模塊402隨后將鎖定授予響應發(fā)送給客戶機設備102A(909)。該鎖定授予響應指示服務器系統(tǒng)106將對指定元素的鎖定提供給客戶機設備102A。如果客戶機消息不包括鎖定請求(在900處是“否”),服務器畫布模塊402確定該客戶機消息是否包括解鎖請求(910)。解鎖請求指示了客戶機設備102A不再需要對指定元素的鎖定。如果客戶機消息包括解鎖請求(在910處是“是”),服務器畫布模塊402確定客戶機設備102A是否具有對指定元素的鎖定。如果客戶機設備102A具有對指定元素的鎖定(在912處是“是”),服務器畫布模塊402更新該服務器模型414以移除對指定元素的鎖定(914)。服務器畫布模塊402隨后將服務器消息發(fā)送給訂閱列表410中列出的其他客戶機設備(915)。每個服務器消息包括解鎖消息。解鎖消息指示了服務器系統(tǒng)106已經(jīng)解鎖了指定的元素。在更新了服務器模型414之后或在確定客戶機設備102A不具有對指定元素的鎖定(在912處是“否”)之后,操作800重啟。如果客戶機消息沒有包括解鎖消息(在910處是“否”),服務器畫布模塊402確定該客戶機消息是否包括添加元素請求(916)。添加元素請求指定了要添加給服務器畫布模塊402的元素。如果客戶機消息包括添加元素請求(在916處是“是”),客戶機畫布模塊402更新服務器模型414以將指定的元素加入到服務器模型414 (918)。服務器畫布模塊 402隨后將服務器消息發(fā)送給訂閱列表410中列出的其他客戶機設備(920)。每個服務器消息包括元素添加消息。元素添加消息指示指定的元素已經(jīng)被加入到繪畫。操作800隨后重啟。如果該客戶機消息不包括添加元素請求(在916處是“否”),服務器畫布模塊402 確定該客戶機消息是否包括修改元素請求(922)。修改元素請求指示對繪畫中元素的一個或多個屬性的改變.如果客戶機消息包括修改元素請求(在922處是“是”),服務器畫布模塊402確定客戶機設備102A是否具有對指定元素的鎖定(924)。如果客戶機設備102A 具有對指定元素的鎖定(在擬4處是“是”),服務器畫布模塊402更新該服務器模型414 以如修改元素請求所指示的那樣修改指定元素的屬性(擬6)。服務器畫布模塊402隨后將服務器消息發(fā)送給訂閱列表410中列出的其他客戶機設備(擬8)。每個服務器消息包括元素修改消息。元素修改消息指示已經(jīng)修改了元素的一個或多個屬性。在步驟擬8發(fā)送了服務器消息之后或在確定客戶機設備102A不具有對指定元素的鎖定(在擬4處是“否”)之后,操作800重啟。如果該客戶機消息不包括修改元素請求(在922處是“否”),服務器畫布模塊402 確定該客戶機消息是否包括刪除元素請求(930)。刪除元素請求指示已經(jīng)從繪畫中刪除了所述一個或多個元素。如果客戶機消息包括刪除元素請求(在930處是“是”),服務器畫布模塊402確定客戶機設備102A是否具有對指定元素的鎖定(93 。如果客戶機設備102A 具有對指定元素的鎖定(在932處是“是”),服務器畫布模塊402更新該服務器模型414以刪除指定元素(934)。服務器畫布模塊402隨后將服務器消息發(fā)送給訂閱列表410中列出的其他客戶機設備(936)。每個服務器消息包括元素刪除消息。元素刪除消息指示指定的元素已經(jīng)被刪除.在發(fā)送了服務器消息之后或在確定客戶機設備102A不具有對指定元素的鎖定(在932處是“否”)之后,操作800重啟。圖10是示出示例的瀏覽器窗口 1000的示例屏幕說明.瀏覽器窗口 1000是由瀏覽器202顯示的窗口。瀏覽器窗口 1000包括導航控件1002。導航控件1002使用戶104A 能夠控制導航。瀏覽器窗口 1000還包括網(wǎng)頁1004。在圖10的示例中,網(wǎng)頁1004是名為 "John Smith”的用戶的社交網(wǎng)絡檔案頁。網(wǎng)頁1004包含有關用戶的個人信息,例如用戶的圖片、用戶喜歡的音樂和用戶的家鄉(xiāng)。網(wǎng)頁1004還包括來自其他用戶的有關該用戶的評論。另外,網(wǎng)頁1004包括狀態(tài)更新區(qū)域1006。狀態(tài)更新區(qū)域1006包括文本區(qū)域1008。 用戶可以將文本輸入文本區(qū)域1008。將輸入文本區(qū)域1008的文本張貼到網(wǎng)頁1004上。另外,可以將輸入文本區(qū)域1008的文本復制到在社交方面與該用戶相連的人們的頁面。而且,狀態(tài)更新區(qū)域1006包括圖片控件1010。當用戶選擇圖片控件1010時,用戶可以選擇一個圖像文件以附加到輸入文本區(qū)域1008的文本。而且,狀態(tài)更新區(qū)域1006包括視頻控件1012。當用戶選擇視頻控件1012時,用戶可以選擇一個視頻文件以附加到輸入文本區(qū)域1008的文本。狀態(tài)更新區(qū)域1006還包括繪畫控件1014。<當用戶選擇繪畫控件1014時,畫布出現(xiàn)在狀態(tài)更新區(qū)域1006中。圖11是示出當在狀態(tài)更新區(qū)域1006中顯示畫布1016時的網(wǎng)頁1004的示例屏幕說明。當畫布1016處于狀態(tài)更新區(qū)域1006中時,用戶可以編輯畫布 1016中的繪畫。用戶隨后選擇提交控件1018來將畫布1016加入到網(wǎng)頁1004上。圖12是示出在已經(jīng)將畫布1016加入到網(wǎng)頁914之后的網(wǎng)頁1004的示例屏幕說明。用戶“John Smith”可以編輯畫布1016中的繪畫。另外,打開該網(wǎng)頁1004的其他用戶可以編輯畫布1016中的繪畫。圖13是示出示例計算設備1300的框圖。在一些實施例中,客戶機設備102和/或服務器系統(tǒng)106是使用一個或多個計算設備(例如計算設備1300)來實現(xiàn)的。應該理解, 在其他實施例中,客戶機設備102和/或服務器系統(tǒng)106是使用具有硬件組件的計算設備來實現(xiàn)的,所述硬件組件與圖13的示例中所說明的那些硬件組件并不相同。在不同的實施例中,計算設備可以以不同的方式來實現(xiàn)。例如,在圖13中的示例中,計算設備1300包括存儲器1302、處理系統(tǒng)1304、輔助存儲設備1306、網(wǎng)絡接口卡1308、 視頻接口 1310、顯示單元1312、外部組件接口 1314以及通信媒介1316。在其他實施例中, 計算設備是使用更多或更少的硬件組件來實現(xiàn)的。例如,在另一示范實施例中,計算設備不包括視頻接口、顯示單元、外部存儲設備或輸入設備。此處所使用的術語計算機可讀介質(zhì)可包括計算機存儲介質(zhì)。計算機存儲介質(zhì)可包括以用于存儲諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、或其他數(shù)據(jù)的信息的任何方法或技術實現(xiàn)的易失性和非易失性、可移動和不可移動介質(zhì)。存儲器1302包括一個或多個能夠存儲數(shù)據(jù)和/或指令的計算機存儲介質(zhì)。如在本文檔中所使用,計算機存儲介質(zhì)是一種存儲計算設備可讀的數(shù)據(jù)和/或軟件指令的設備或工廠制品。在不同的實施例中,存儲器1302以不同的方式實現(xiàn)。例如,在各種實施例中,存儲器1302是使用各種類型的計算機存儲介質(zhì)來實現(xiàn)的。示例類型的計算機存儲介質(zhì)包括,但不局限于,動態(tài)隨機存取存儲器(DRAM)、雙重數(shù)據(jù)率同步動態(tài)隨機存取存儲器(DDR SDRAM)、減少等待時間的DRAM、DDR2 SDRAM,DDR3 SDRAM,Rambus RAM、固態(tài)存儲器、閃存、只讀存儲器(ROM)、電可擦除可編程ROM 和存儲數(shù)據(jù)的其他類型的設備和/或工廠制品。此處所使用的術語計算機可讀介質(zhì)還可包括通信媒介。通信媒介可由諸如載波或其他傳輸機制的已調(diào)制數(shù)據(jù)信號中的計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、或其他數(shù)據(jù)來體現(xiàn),并且包括任何信息傳遞介質(zhì)。術語“已調(diào)制數(shù)據(jù)信號”可描述具有以對該信號中的信息編碼的方式設定或者改變的一個或多個特征的信號。作為示例而非限制,通信媒介可包括諸如有線網(wǎng)絡或直接線連接的有線介質(zhì),以及諸如聲學、射頻(RF)、紅外線和其他無線介質(zhì)的無線介質(zhì)。處理系統(tǒng)1304包括選擇性地執(zhí)行軟件指令的一個或多個物理集成電路。在各種實施例中,處理系統(tǒng)1304以各種方式實現(xiàn)。例如,處理系統(tǒng)1304可以以一個或多個處理核的形式來實現(xiàn)。在本示例中,處理系統(tǒng)1304可以包括一個或多個^itel Core 2微處理器。 在另一示例中,處理系統(tǒng)1304可以包括一個或多個單獨的微處理器。在還有一個示例實施例中,處理系統(tǒng)1304可以包括提供專用功能的ASIC。在又另一個示例中,處理系統(tǒng)1304可通過使用ASIC和通過執(zhí)行軟件指令來提供專用功能。在另一個示例中,處理系統(tǒng)1304是 ARM7處理器。在不同的實施例中,處理系統(tǒng)1304以不同的指令集來執(zhí)行軟件指令。例如, 處理單元1304執(zhí)行指令集中的軟件指令,所述指令集諸如x86指令集、POWER指令集、RISC 指令集、SPARC指令集、IA-64指令集、MIPS指令集,和/或其他指令集。輔助存儲設備1306包括一個或多個計算機存儲介質(zhì)。輔助存儲設備1306存儲了所述處理系統(tǒng)1304不能直接訪問的數(shù)據(jù)和軟件指令。換句話說,處理系統(tǒng)1304執(zhí)行I/O 操作以從輔助存儲設備1306處檢索數(shù)據(jù)和/或軟件指令。在各種實施例中,輔助存儲設備 1306由各種類型的計算機可讀數(shù)據(jù)存儲介質(zhì)來實現(xiàn)。例如,輔助存儲設備1306可以由一
17個或多個磁盤、磁帶驅(qū)動器、CD-ROM盤、DVD-ROM盤、藍光盤、固態(tài)存儲設備、柏努利錄音帶 (Bernoulli cartridges)和/或其他類型的計算機可讀數(shù)據(jù)存儲介質(zhì)來實現(xiàn)。網(wǎng)絡接口卡1308使得計算設備1300將數(shù)據(jù)發(fā)送給通信網(wǎng)絡,和從通信網(wǎng)絡接收數(shù)據(jù)。在不同的實施例中,網(wǎng)絡接口卡1308以不同的方式實現(xiàn)。例如,在各種實施例中, 網(wǎng)絡接口 1308可以是以太網(wǎng)接口、令牌環(huán)網(wǎng)絡接口、光纖網(wǎng)絡接口、無線網(wǎng)絡接口(例如, WiFi、WiMax等)、或另一類型的網(wǎng)絡接口來實現(xiàn)的。視頻接口 1310使計算設備1300將視頻信息輸出給顯示單元1312。在不同的實施例中,視頻接口 1310以不同的方式實現(xiàn)。例如,在一個示范實施例中,視頻接口 1310被集成到計算設備1300的主板上。在另一個示范實施例中,視頻接口 1310是視頻擴展卡。在各種實施例中,顯示設備1312可以是陰極射線管顯示器、IXD顯示面板、等離子屏幕顯示面板、觸敏顯示面板、LED屏幕、投影儀或另一類型的顯示單元。在各種實施例中,視頻接口以各種方式與顯示單元1312通信。例如,視頻接口 1310可以通過通用串行總線(USB)連接器、VGA連接器、數(shù)字可視接口(DVI)連接器、S視頻連接器、高清多媒體接口(HDMI)接口、 顯示端口連接器或另一類型的連接來與顯示單元1312通信。外部組件接口 1314使計算設備1300能夠與外部設備通信。在不同的實施例中, 外部組件接口 1314以不同的方式實現(xiàn)。例如,外部組件接口 1314可以是USB接口、火線接口、串行端口接口、并行端口接口、PS/2接口和/或允許計算設備1300與外部設備通信的另一類型的接口。在不同的實施例中,外部組件接口 1314使計算設備1300能夠與不同的外部組件通信。例如,外部組件接口 1314可以使得計算設備1300與外部存儲設備、輸入設備、揚聲器、電話充電插座、調(diào)制解調(diào)器、媒體播放對接底座、其他計算設備、掃描儀、數(shù)碼相機、指紋讀取器和可以連接到計算設備1300的其他設備進行通信。示例類型的外部存儲設備包括,但不局限于,磁帶設備、閃存模塊、磁盤驅(qū)動器、光盤驅(qū)動器、閃存單元、zip盤驅(qū)動器、自動換碟機以及包括一個或多個計算機存儲介質(zhì)的其他類型的設備。示例類型的輸入設備包括,但不局限于,鍵盤、軌跡球、筆輸入設備、按鍵式撥號盤、麥克風、操縱桿、觸敏顯示屏以及將用戶輸入提供給計算設備1300的其他類型的設備。通信媒介1316方便了在計算設備1300的硬件組件之間的通信。在不同的實施例中,通信媒介1316方便了在計算設備1300的不同組件之間的通信。例如,在圖13的示例中,通信媒介1316方便了在存儲器1302、處理系統(tǒng)1304、輔助存儲設備1306、網(wǎng)絡接口卡 1308、視頻接口 1310以及外部組件接口 1314之間的通信。在計算設備1300的不同的實現(xiàn)中,通信媒介1316可以以不同的方式來實現(xiàn).例如,在計算設備1300的不同的實現(xiàn)中,通信媒介1316可作為PCI總線、PCI Express總線、加速圖形端口 (AGP)總線、Infiniband互連、串行高級技術附件(ATA)互連、并行ATA互連、光纖通道互連、USB總線、小型計算系統(tǒng)接口(SCSI)接口,或其他類型的通信媒介來實現(xiàn)。存儲器1302存儲了各種類型的數(shù)據(jù)和/或軟件指令。例如,在圖13的示例中,存儲器1302存儲了基本輸入/輸出系統(tǒng)(BIOS) 1324以及操作系統(tǒng)13沈。BIOS 1324包括當由處理系統(tǒng)1304執(zhí)行時使得計算設備1300啟動的一組軟件指令。計算系統(tǒng)13 包括當由處理系統(tǒng)1304執(zhí)行時使得計算設備1300提供操作系統(tǒng)的一組軟件指令,所述操作系統(tǒng)協(xié)調(diào)計算設備1300的活動和資源的共享。上述各實施例僅作為說明提供,并且不應被解釋為限制。本領域的技術人員將容易地識別出可能不遵循在此說明并描述的示例實施例和應用而做出的各種修改和變化。例如,在圖中示出的操作僅僅是示例。在各種實施例中,類似的操作可以包括比在圖中所示出的那些步驟更多或更少的步驟。而且,在其他實施例中,類似的操作可以包括與在圖中所示出的那些操作步驟不相同的順序的步驟。
權(quán)利要求
1.一種用于與繪畫進行通信的方法(500),所述方法包括由客戶機第一次打開網(wǎng)頁,所述網(wǎng)頁包含了畫布,所述畫布包含了可由所述客戶機設備的用戶或使用其他客戶機設備打開包括所述畫布的網(wǎng)頁的其他用戶在所述網(wǎng)頁中進行編輯的繪畫(510);當所述網(wǎng)頁在所述客戶機設備上打開并沒有重新加載該網(wǎng)頁時,在所述用戶和所述其他用戶對繪畫做出的編輯的近似時間,由所述客戶機設備動態(tài)更新所述繪畫以反映由所述用戶和所述其他用戶對繪畫做出的編輯(618,6 ,630,722);關閉所述網(wǎng)頁,其中當所述客戶機設備關閉該網(wǎng)頁時,所述繪畫的內(nèi)容處于第一狀態(tài) (726);以及由所述客戶機設備第二次打開所述網(wǎng)頁,其中當所述客戶機設備第二次打開所述網(wǎng)頁時,所述繪畫保持可由用戶編輯,并且所述繪畫的內(nèi)容處于第二狀態(tài),其中,所述第二狀態(tài)是通過在所述網(wǎng)頁在客戶機設備上關閉時由其他用戶對所述第一狀態(tài)的編輯產(chǎn)生的 (510)。
2.如權(quán)利要求1所述的方法,其特征在于,還包括響應于所述用戶對所述繪畫做出第一改變,由所述客戶機設備將客戶機消息發(fā)送給服務器系統(tǒng),所述客戶機消息指定了對所述繪畫做出的第一改變(620,6 ,632);以及由所述客戶機設備從所述服務器系統(tǒng)接收服務器消息,所述服務器消息指定了第二改變,所述第二改變是由所述其他用戶之一做出的(710,714,718)。
3.如權(quán)利要求2所述的方法,其特征在于, 其中所述方法還包括由所述客戶機設備存儲客戶機模型,所述客戶機模型包括表示所述繪畫的XML元素; 響應于所述用戶對所述繪畫做出的第一改變(616,622,628)更新所述客戶機模型 (618,624,630);以及響應于接收到所述服務器消息(710,714,718)更新所述客戶機模型(712,716,718); 其中,所述客戶機消息通過指定對所述客戶機模型中的一個或多個XML元素的改變而指定了對所述繪畫的所述第一改變;以及其中,所述服務器消息通過指定對所述客戶機模型中的一個或多個XML元素的改變而指定了所述第二改變。
4.如權(quán)利要求1所述的方法,其特征在于, 其中,所述網(wǎng)頁是社交網(wǎng)絡站點的一部分;其中所述方法還包括由所述客戶機設備接收從所述社交網(wǎng)絡站點的用戶中選擇所述其他用戶的輸入(516);以及其中,所述社交網(wǎng)絡站點的那些沒有被選擇的用戶沒有被授權(quán)編輯所述繪畫。
5.如權(quán)利要求1所述的方法,其特征在于,還包括 將所述繪畫從所述網(wǎng)頁中復制到剪貼板;以及將所述繪畫從所述剪貼板粘貼到文檔,其中,在將所述繪畫粘貼到所述文檔中之后,所述繪畫保持可編輯的,其中,所述文檔是下述類型之一字處理文檔、幻燈片文檔、記事本文檔、電子郵件消息以及圖表編輯文檔。
6.如權(quán)利要求1所述的方法,其特征在于,還包括由所述客戶機設備接收選擇所述繪畫中的一個元素的輸入(600);以及由所述客戶機設備使所述用戶在僅當沒有其他用戶已經(jīng)選擇該元素的情況下能夠修改或刪除所述元素。
7.如權(quán)利要求6所述的方法,其特征在于, 其中所述方法還包括響應于接收到選擇所述元素的輸入(600),將鎖定請求發(fā)送到服務器系統(tǒng)(602); 由所述客戶機設備從所述服務器系統(tǒng)接收鎖定響應(604); 由所述客戶機設備接收解除選擇所述元素的輸入(610);以及響應于接收解除選擇所述元素的輸入,由所述客戶機設備將解鎖請求發(fā)送給所述服務器系統(tǒng)(614);其中,所述客戶機設備允許所述用戶在鎖定響應指示服務器系統(tǒng)給予所述客戶機設備對所述元素的鎖定時能夠修改或刪除所述元素(608),所述服務器系統(tǒng)在當沒有其他用戶已經(jīng)選擇所述元素時,給予所述客戶機設備對所述元素的鎖定;以及其中,所述客戶機設備不允許所述用戶在鎖定響應指示服務器系統(tǒng)沒有給予所述客戶機設備對所述元素的鎖定時修改所述元素,所述客戶機設備不允許所述用戶在鎖定響應指示服務器系統(tǒng)沒有給予所述客戶機設備對所述元素的鎖定時刪除所述元素,所述服務器系統(tǒng)在當有其他用戶已經(jīng)選擇所述元素時,不給予所述客戶機設備對所述元素的鎖定。
8.一種方法(800),包括存儲包括表示繪畫的數(shù)據(jù)的服務器模型; 由服務器系統(tǒng)從第一客戶機設備接收第一網(wǎng)頁請求(806);響應于所述第一網(wǎng)頁請求,由所述服務器系統(tǒng)將第一網(wǎng)頁響應發(fā)送給所述第一客戶機設備,所述第一網(wǎng)頁響應包括表示包含畫布的網(wǎng)頁的數(shù)據(jù),所述畫布包含所述繪畫,其中, 所述繪畫在所述網(wǎng)頁中是可由第一用戶進行編輯的,所述第一用戶使用所述第一客戶機設備(81 ;由服務器系統(tǒng)從第二客戶機設備接收第二網(wǎng)頁請求(806);由所述服務器系統(tǒng)將第二網(wǎng)頁響應發(fā)送給所述第二客戶機設備,所述第二網(wǎng)頁響應包括表示所述網(wǎng)頁的數(shù)據(jù),其中,所述繪畫在所述網(wǎng)頁中是可由第二用戶進行編輯的,所述第二用戶使用所述第二客戶機設備(812);從所述第一客戶機設備和第二客戶機設備接收客戶機消息,所述客戶機消息指定了由所述第一用戶和第二用戶對所述繪畫做出的改變(916、922、930); 響應于所述客戶機消息更新所述服務器模型以反映對所述繪畫的改變(918,擬6,934); 由所述服務器系統(tǒng)向所述第一客戶機設備發(fā)送指定對所述繪畫的所述改變的服務器消息(920,928,936);由所述服務器系統(tǒng)向所述第二客戶機設備發(fā)送指定對所述繪畫的改變的另外的服務器消息(920,928,936);當所述第一客戶機設備和第二客戶機設備之一或兩者都關閉所述網(wǎng)頁時,繼續(xù)存儲所述服務器模型;由服務器系統(tǒng)從第一客戶機設備接收第三網(wǎng)頁請求(806);以及響應于所述第三網(wǎng)頁請求,通過所述服務器系統(tǒng)將第三網(wǎng)頁響應發(fā)送給所述第一客戶機設備,所述第三網(wǎng)頁響應包括表示所述網(wǎng)頁的數(shù)據(jù),其中,所述繪畫反映了所述服務器模型(8⑵。
9.如權(quán)利要求8所述的方法,其特征在于,所述網(wǎng)頁是社交網(wǎng)絡站點的一部分,所述網(wǎng)頁是所述第一用戶的社交網(wǎng)絡檔案頁面。
10.一種計算設備(102A),包括 處理單元(1304);以及一組存儲有計算機可執(zhí)行指令的計算機存儲介質(zhì),當由所述處理單元執(zhí)行所述計算機可執(zhí)行指令時,使得所述計算設備第一次打開網(wǎng)頁(304),所述網(wǎng)頁是所述計算設備(102A)的用戶(104A)的社交網(wǎng)絡檔案頁面,所述網(wǎng)頁包含畫布(308),所述畫布包含了可由所述用戶或使用其他客戶機設備 (102N)打開包括所述畫布的網(wǎng)頁的其他用戶在所述網(wǎng)頁中進行編輯的繪畫(310); 存儲包括了表示所述繪畫的XML元素的客戶機模型O10); 當所述網(wǎng)頁在所述客戶機設備上打開并且不重新加載所述網(wǎng)頁時 接收選擇所述繪畫中元素的輸入;僅當沒有所述其他用戶已經(jīng)選擇該元素的情況下,允許所述用戶修改或刪除所述元ο響應于所述用戶對所述繪畫做出第一改變,更新所述客戶機模型; 響應于所述用戶對所述繪畫做出第一改變,將客戶機消息(212)發(fā)送給服務器系統(tǒng) (106),所述客戶機消息通過指定對所述客戶機模型中的一個或多個XML元素的改變指定了對所述繪畫的第一改變;從所述服務器系統(tǒng)接收服務器消息014),所述服務器消息通過指定對所述客戶機模型中的一個或多個XML元素的改變指定了對所述繪畫的第二改變,所述第二改變由其他用戶之一做出;響應于接收所述服務器消息,更新所述客戶機模型;關閉所述網(wǎng)頁,其中當所述客戶機設備關閉該網(wǎng)頁時,所述繪畫的內(nèi)容處于的第一狀態(tài)中;以及第二次打開所述網(wǎng)頁,其中當所述計算設備第二次打開所述網(wǎng)頁時,所述繪畫保持可由用戶編輯,并且所述繪畫的內(nèi)容處于第二狀態(tài),其中,所述第二狀態(tài)是通過在所述網(wǎng)頁在所述計算設備上關閉時由其他用戶對所述第一狀態(tài)的編輯產(chǎn)生的。
全文摘要
本申請涉及在線繪畫的協(xié)作編輯。網(wǎng)頁包含畫布。該畫布包含了繪畫,該繪畫可以由客戶機設備的用戶和使用其它客戶機設備打開包括畫布的網(wǎng)頁的其它用戶在網(wǎng)頁中進行編輯。當網(wǎng)頁在客戶機設備上打開時,在用戶和其他用戶對繪畫做出編輯的近似時間,動態(tài)更新繪畫以反映由用戶和其他用戶對繪畫做出的編輯。所述繪畫被存儲在服務器系統(tǒng)上,這樣當用戶關閉網(wǎng)頁時,其他用戶可以繼續(xù)編輯該繪畫。當用戶重新打開該網(wǎng)頁時,畫布包含了當其他用戶編輯時的繪畫。
文檔編號G06F17/30GK102508840SQ201110285368
公開日2012年6月20日 申請日期2011年9月6日 優(yōu)先權(quán)日2010年9月9日
發(fā)明者B·阿爾布雷克特, S·薩伊尼 申請人:微軟公司