背景技術(shù):
web瀏覽器為客戶端計(jì)算機(jī)的用戶提供了一種使用互聯(lián)網(wǎng)導(dǎo)航至網(wǎng)站的方式。例如,客戶端計(jì)算機(jī)能夠提供到互聯(lián)網(wǎng)的連接,并且使用web瀏覽器,用戶能夠?qū)Ш街镣瑯舆B接到互聯(lián)網(wǎng)的特定遠(yuǎn)程服務(wù)器以便連接到該遠(yuǎn)程服務(wù)器所服務(wù)的網(wǎng)站。另外,能夠由連接到互聯(lián)網(wǎng)的遠(yuǎn)程服務(wù)器提供諸如web應(yīng)用(web-app)之類(lèi)的基于遠(yuǎn)程的應(yīng)用,并且客戶端計(jì)算機(jī)能夠通過(guò)連接至提供web應(yīng)用的遠(yuǎn)程服務(wù)器而本地運(yùn)行web應(yīng)用。此外,客戶端計(jì)算機(jī)可以打開(kāi)多個(gè)瀏覽器窗口和/或?yàn)g覽器標(biāo)簽,它們分別連接到不同或相同的遠(yuǎn)程服務(wù)器以運(yùn)行web應(yīng)用和/或連接到網(wǎng)站。
技術(shù)實(shí)現(xiàn)要素:
提供該發(fā)明內(nèi)容而以簡(jiǎn)化形式引入概念的選擇,其在以下的具體實(shí)施方式中進(jìn)一步描述。該發(fā)明內(nèi)容并非意在識(shí)別出所請(qǐng)求保護(hù)主題的關(guān)鍵因素或必要特征,也并非意在被用來(lái)對(duì)所請(qǐng)求保護(hù)主題的范圍進(jìn)行限制。
在某些環(huán)境中,當(dāng)通過(guò)互聯(lián)網(wǎng)訪問(wèn)遠(yuǎn)程服務(wù)器時(shí),多于一個(gè)的瀏覽器窗口或標(biāo)簽保持對(duì)服務(wù)器的單獨(dú)連接是高成本且不期望出現(xiàn)的,在這樣的情況下相應(yīng)實(shí)例從遠(yuǎn)程服務(wù)器得到相同的數(shù)據(jù)。通過(guò)保持多重連接,這些類(lèi)型的多重連接會(huì)變得完全相同并且使得客戶端機(jī)器的連接速度變慢。
作為示例,對(duì)于遠(yuǎn)程服務(wù)器在瀏覽器中所提供的即時(shí)消息信使聊天應(yīng)用而言,每個(gè)標(biāo)簽連接到應(yīng)用服務(wù)器并且從服務(wù)器得到相同數(shù)據(jù)。然而,從用戶的觀點(diǎn)來(lái)看,這僅是無(wú)縫的單次體驗(yàn)。例如,目前,網(wǎng)站可能必須要重復(fù)詢問(wèn)應(yīng)用服務(wù)器來(lái)查看頁(yè)面(例如,web應(yīng)用)上是否存在更新。在該示例中,相應(yīng)標(biāo)簽或窗口將需要單獨(dú)連接來(lái)檢查服務(wù)器上的更新。這種不斷詢問(wèn)在計(jì)算上對(duì)于本地(例如,客戶端側(cè))和遠(yuǎn)程(例如,服務(wù)器側(cè))都是昂貴的。
因此,這里提供了一種或多種向用戶提供相同體驗(yàn)同時(shí)具有多重任務(wù)(例如,瀏覽器中運(yùn)行的基于遠(yuǎn)程的應(yīng)用)的技術(shù)和/或系統(tǒng),所述多重任務(wù)具有到遠(yuǎn)程服務(wù)器的單個(gè)連接而共享到服務(wù)器的連接。例如,僅一個(gè)瀏覽器窗口和/或標(biāo)簽保持到用于基于遠(yuǎn)程的應(yīng)用的服務(wù)器的連接,并且允許針對(duì)客戶端上運(yùn)行的相同web應(yīng)用的多個(gè)其它例示的更新。
在用于與多個(gè)客戶端側(cè)瀏覽器例示共享到基于遠(yuǎn)程的應(yīng)用的連接的一個(gè)實(shí)施例中,與基于遠(yuǎn)程的應(yīng)用相關(guān)聯(lián)的多個(gè)客戶端側(cè)瀏覽器例示被通知以本地全局存儲(chǔ)的狀態(tài)的變化而并不進(jìn)行輪詢,其中客戶端側(cè)瀏覽器示例能夠向本地全局存儲(chǔ)進(jìn)行寫(xiě)入并且從其進(jìn)行讀取。另外,第一瀏覽器例示能夠向本地全局存儲(chǔ)注冊(cè)為首要例示,并且提供到用于基于遠(yuǎn)程的應(yīng)用的服務(wù)器的連接。此外,首要例示使用與服務(wù)器的連接而針對(duì)一個(gè)或多個(gè)第二瀏覽器例示向本地全局存儲(chǔ)寫(xiě)入更新,并且針對(duì)基于遠(yuǎn)程的應(yīng)用而將更新從一個(gè)或多個(gè)第二瀏覽器例示傳輸至服務(wù)器。
為了實(shí)現(xiàn)以上和相關(guān)目標(biāo),以下描述和附圖給出了某些說(shuō)明性方面和實(shí)施方式。這些僅是可以在其中采用一個(gè)或多個(gè)方面的各種方式的幾種的指示。當(dāng)結(jié)合附圖考慮時(shí),本公開(kāi)的其它方面、優(yōu)勢(shì)和新穎特征將由于以下詳細(xì)描述而變得顯而易見(jiàn)。
附圖說(shuō)明
圖1是用于與多個(gè)客戶端側(cè)瀏覽器例示共享到基于遠(yuǎn)程的應(yīng)用的連接的示例性方法的流程圖。
圖2是圖示首要和次要瀏覽器例示向本地全局存儲(chǔ)注冊(cè)的方法的示例性實(shí)施例的流程圖。
圖3是圖示可以使用到首要例示的連接而針對(duì)基于遠(yuǎn)程的應(yīng)用對(duì)多個(gè)瀏覽器例示進(jìn)行更新的方法的示例性實(shí)施例的流程圖。
圖4是用于與多個(gè)客戶端側(cè)瀏覽器例示共享到基于遠(yuǎn)程的應(yīng)用的連接的示例性系統(tǒng)的組件示圖。
圖5是圖示可以實(shí)施這里所描述的一個(gè)或多個(gè)系統(tǒng)和/或技術(shù)的一個(gè)實(shí)施例的組件示圖。
圖6是包括被配置為實(shí)現(xiàn)這里所給出的一種或多種提供形式的處理器可執(zhí)行指令的示例性計(jì)算機(jī)可讀介質(zhì)的圖示。
圖7圖示了可以在其中實(shí)施這里所給出的一種或多種提供形式的示例性計(jì)算環(huán)境。
具體實(shí)施方式
現(xiàn)在參考附圖對(duì)請(qǐng)求保護(hù)的主題進(jìn)行描述,其中通篇使用相同的附圖標(biāo)記來(lái)指代相同元素。在以下描述中,出于解釋的目的,給出了多種具體細(xì)節(jié)以便提供對(duì)所請(qǐng)求保護(hù)主題的全面理解。然而,所請(qǐng)求保護(hù)的主題顯然可以在沒(méi)有這些具體細(xì)節(jié)的情況下進(jìn)行實(shí)踐。在其它實(shí)例中,以框圖形式示出結(jié)構(gòu)和設(shè)備以便幫助對(duì)所請(qǐng)求保護(hù)主題進(jìn)行描述。
圖1是用于與多個(gè)客戶端側(cè)瀏覽器例示共享到基于遠(yuǎn)程的應(yīng)用的連接的示例性方法100的流程圖。示例性方法100在102開(kāi)始并且涉及在104將本地全局存儲(chǔ)狀態(tài)的變化通知多個(gè)客戶端側(cè)的瀏覽器例示而并不進(jìn)行輪詢。在該實(shí)施例中,瀏覽器例示與基于遠(yuǎn)程的應(yīng)用相關(guān)聯(lián),并且能夠?qū)Ρ镜厝执鎯?chǔ)進(jìn)行寫(xiě)入并且從那里進(jìn)行讀取。
在一個(gè)實(shí)施例中,本地全局存儲(chǔ)包括“web存儲(chǔ)”,其允許針對(duì)web瀏覽器在本地(例如,在客戶端機(jī)器上)存儲(chǔ)數(shù)據(jù)。例如,html5(超文本標(biāo)記語(yǔ)言協(xié)議5)為web瀏覽器提供本地存儲(chǔ),其中來(lái)自相同域的相應(yīng)web瀏覽器例示(例如,瀏覽器窗口、瀏覽器標(biāo)簽)能夠訪問(wèn)本地存儲(chǔ)的數(shù)據(jù),由此提供本地全局存儲(chǔ)(例如,對(duì)于來(lái)自相同域的相應(yīng)腳本而言是全局的)。也就是說(shuō),在該示例中,相同web應(yīng)用(web-app)的單獨(dú)例示能夠在不同窗口(或標(biāo)簽)中運(yùn)行而并不互相干擾,并且能夠通過(guò)本地全局存儲(chǔ)而在本地互相通信,諸如通過(guò)向本地全局存儲(chǔ)提供更新。
在一個(gè)實(shí)施例中,例如,本地全局存儲(chǔ)能夠包括關(guān)聯(lián)陣列數(shù)據(jù)存儲(chǔ)模型,其中例如鍵(key)(例如,唯一鍵)的合集與一個(gè)或多個(gè)數(shù)值(例如,或者數(shù)值集合)相關(guān)聯(lián)。在該實(shí)施例中,使用陣列將數(shù)值映射到鍵(例如,陣列將鍵映射至數(shù)值),這創(chuàng)建了鍵-值配對(duì)之間的關(guān)系。另外,在該實(shí)施例中,當(dāng)本地全局存儲(chǔ)的狀態(tài)發(fā)生變化時(shí),諸如針對(duì)鍵-值配對(duì)的變化,能夠使用(例如,從運(yùn)行來(lái)自相同域的web應(yīng)用的那些)本地全局存儲(chǔ)向?yàn)g覽器例示(例如,自動(dòng))發(fā)送通知。
在一個(gè)實(shí)施例中,在執(zhí)行一個(gè)或多個(gè)操作時(shí)會(huì)發(fā)生本地全局存儲(chǔ)的狀態(tài)變化。例如,“添加”操作可以包括將新鍵映射至新數(shù)值(例如,輸入新的鍵-值配對(duì))。另外,“重分配”操作能夠包括將舊的鍵映射至新的數(shù)值(例如,改變鍵-值配對(duì)的數(shù)值)。此外,“去除”操作可以將鍵從數(shù)值解除綁定并且從針對(duì)存儲(chǔ)的鍵集合去除該鍵(例如,刪除鍵-值配對(duì))。在該實(shí)施例中,例如,當(dāng)這些操作中的任意一種發(fā)生時(shí),例如能夠自動(dòng)發(fā)送針對(duì)狀態(tài)變化的通知。因此,不需要針對(duì)狀態(tài)變化而對(duì)本地全局存儲(chǔ)進(jìn)行輪詢(例如,定期請(qǐng)求情形狀態(tài))。
返回圖1,在106,第一瀏覽器例示向本地全局存儲(chǔ)注冊(cè)為首要例示。這里,首要例示連接至用于基于遠(yuǎn)程的應(yīng)用的服務(wù)器,諸如以便與web應(yīng)用進(jìn)行交互。在一個(gè)實(shí)施例中,新的瀏覽器例示例如可以由用戶在其客戶端機(jī)器上所發(fā)起。新的瀏覽器例示能夠在其發(fā)起web應(yīng)用的例示(例如,來(lái)自特定域的web應(yīng)用,諸如即時(shí)信使服務(wù))時(shí)向本地全局存儲(chǔ)注冊(cè)。
另外,例如,瀏覽器例示能夠注冊(cè)為首要,其中其與遠(yuǎn)程服務(wù)器相連接,該遠(yuǎn)程服務(wù)器提供要在瀏覽器中運(yùn)行的應(yīng)用。也就是說(shuō),作為示例,運(yùn)行遠(yuǎn)程應(yīng)用的首要例示能夠通過(guò)本地端口而具有到遠(yuǎn)程服務(wù)器的直接連接,由此與遠(yuǎn)程服務(wù)器進(jìn)行通信以發(fā)送或接收針對(duì)應(yīng)用的更新。在一個(gè)實(shí)施例中,遠(yuǎn)程服務(wù)器可以提供即時(shí)消息傳遞應(yīng)用,這允許用戶來(lái)回發(fā)送消息,并且首要例示能夠獲取諸如消息之類(lèi)的更新并且將更新發(fā)送至服務(wù)器。
在示例性方法100中,在108,首要例示使用與服務(wù)器的連接將更新從基于遠(yuǎn)程的應(yīng)用寫(xiě)入針對(duì)一個(gè)或多個(gè)第二瀏覽器例示的本地全局存儲(chǔ)。另外,首要例示使用與服務(wù)器的連接將更新從一個(gè)或多個(gè)第二瀏覽器例示傳輸至基于遠(yuǎn)程的應(yīng)用。以這種方式,例如,首要瀏覽器例示能夠用作web應(yīng)用的多個(gè)瀏覽器例示的管道(conduit),其僅允許一個(gè)連接來(lái)為多個(gè)例示提供遠(yuǎn)程服務(wù)器通信。
在一個(gè)實(shí)施例中,例如,一個(gè)或多個(gè)第二瀏覽器例示可以發(fā)起相同的基于遠(yuǎn)程的應(yīng)用,并且在實(shí)例化時(shí)向本地全局存儲(chǔ)進(jìn)行注冊(cè)。在該示例中,第二例示可以僅使用到服務(wù)器的首要例示連接通過(guò)本地全局存儲(chǔ)接收并分布更新,而不是與在一個(gè)或多個(gè)瀏覽器窗口(或標(biāo)簽)中提供遠(yuǎn)程應(yīng)用的服務(wù)器相連接。
也就是說(shuō),例如,第二例示能夠通過(guò)更新本地全局存儲(chǔ)來(lái)更新其基于遠(yuǎn)程的應(yīng)用例示,這將使得首要例示被通知以狀態(tài)變化。在該示例中,首要例示隨后能夠通過(guò)讀取本地全局存儲(chǔ)而將更新從第二例示提供至服務(wù)器。另外,首要例示例如能夠從多個(gè)第二例示的服務(wù)器獲取更新,并且將它們寫(xiě)入本地全局存儲(chǔ)。在該示例中,第二例示將被通知以變化,并且能夠通過(guò)從本地全局存儲(chǔ)進(jìn)行讀取來(lái)更新其例示。以這種方式,在該示例中,僅基于遠(yuǎn)程的應(yīng)用的首要瀏覽器例示需要被連接到服務(wù)器以提供與基于遠(yuǎn)程的應(yīng)用在客戶端機(jī)器上的多個(gè)例示的通信。
次要瀏覽器例示已經(jīng)使用首要例示連接而與針對(duì)基于遠(yuǎn)程的應(yīng)用與服務(wù)器進(jìn)行通信,示例性方法100在110結(jié)束。
圖2是圖示首要和次要瀏覽器例示向本地全局存儲(chǔ)進(jìn)行注冊(cè)的方法中的至少一些的示例性實(shí)施例200的流程圖。在202,用戶發(fā)起新的基于遠(yuǎn)程的應(yīng)用例示,諸如通過(guò)開(kāi)啟瀏覽器窗口并且選擇運(yùn)行web應(yīng)用(例如,即時(shí)信使)。在204,向本地全局存儲(chǔ)注冊(cè)新的基于遠(yuǎn)程的應(yīng)用例示,諸如使用為應(yīng)用提供服務(wù)的服務(wù)器的域。
在一個(gè)實(shí)施例中,例如,當(dāng)為web應(yīng)用創(chuàng)建新的例示時(shí),可以將本地的基于客戶端的存儲(chǔ)器的一部分為瀏覽器進(jìn)行分配以便存儲(chǔ)應(yīng)用本地的信息。作為示例,當(dāng)前,可以允許瀏覽器在本地存儲(chǔ)“cookie”,其為網(wǎng)站提供信息以便在用戶導(dǎo)航回到站點(diǎn)時(shí)使用,諸如有助于使得站點(diǎn)工作更快/更好的客戶端/用戶信息。然而,瀏覽器cookie通常被限制為僅存儲(chǔ)有限大小的文本串,并且能夠被服務(wù)器和客戶端側(cè)所訪問(wèn)(例如,讀/寫(xiě))。
在該實(shí)施例中,為應(yīng)用所分配的存儲(chǔ)可以被僅限制為從那里對(duì)該應(yīng)用進(jìn)行服務(wù)的域,并且可以包括本地全局存儲(chǔ)。這里,例如,本地全局存儲(chǔ)能夠提供客戶端側(cè)的讀/寫(xiě),但是緩解或禁止服務(wù)器側(cè)對(duì)這種類(lèi)型的web存儲(chǔ)進(jìn)行寫(xiě)入。在該示例中,以這種方式,新的例示針對(duì)特定域而向本地全局存儲(chǔ)進(jìn)行注冊(cè),并且連同向該本地全局存儲(chǔ)進(jìn)行注冊(cè)的任意其它例示一起,現(xiàn)在可以將更新寫(xiě)入存儲(chǔ)或者從存儲(chǔ)讀取更新。
在206,如果不存在針對(duì)基于遠(yuǎn)程的應(yīng)用的首要例示(206為否),則新的例示在208能夠?qū)⑵渥陨磲槍?duì)基于遠(yuǎn)程的應(yīng)用注冊(cè)為首要例示。在210,首要例示能夠連接至針對(duì)基于遠(yuǎn)程的應(yīng)用的服務(wù)器,諸如通過(guò)聯(lián)系服務(wù)器的ip地址,并且利用服務(wù)器進(jìn)行認(rèn)證。作為示例,首要例示連接至服務(wù)器以便傳輸針對(duì)基于遠(yuǎn)程的應(yīng)用的更新。在該示例中,用戶可以通過(guò)到首要例示的連接向聯(lián)系人發(fā)送消息并且從聯(lián)系人接收消息。
由于首要例示可以作為首要,由此保持與服務(wù)器的連接,直至首要例示終止。如果首要還沒(méi)有被終止(214處的否),則在206存在現(xiàn)有的首要例示。因此,在220,新的例示可以針對(duì)其當(dāng)前狀態(tài)對(duì)本地全局存儲(chǔ)進(jìn)行檢查。作為示例,本地全局存儲(chǔ)的當(dāng)前狀態(tài)可以包括現(xiàn)有鍵-值配對(duì)的狀態(tài)。
在222,非首要例示能夠基于本地全局存儲(chǔ)的當(dāng)前狀態(tài),例如根據(jù)鍵-值配對(duì),而對(duì)其自身進(jìn)行初始化,并且在224等待包括來(lái)自首要例示的更新的狀態(tài)變化。以這種方式,例如,如果被通知以狀態(tài)變化,則新注冊(cè)的例示可以基于其初始狀態(tài)而識(shí)別出導(dǎo)致該變化的更新,并且在需要的情況下讀取更新。
在214,如果首要瀏覽器例示諸如通過(guò)關(guān)閉窗口或標(biāo)簽或者注銷(xiāo)而被終止(214處的是),則在216,首要例示終止的通知可以被發(fā)送到向本地全局存儲(chǔ)進(jìn)行注冊(cè)的其它例示。在一個(gè)實(shí)施例中,首要例示能夠向本地全局存儲(chǔ)注冊(cè)為終止,例如提供事先通知以在終止之時(shí)或之前選擇新的首要例示。
在218,能夠從向本地全局存儲(chǔ)所注冊(cè)的其余瀏覽器例示中針對(duì)基于遠(yuǎn)程的應(yīng)用選擇新的首要例示(例如,并且仍然進(jìn)行操作)。在一個(gè)實(shí)施例中,選擇新的首要例示能夠包括對(duì)一個(gè)或多個(gè)其余瀏覽器例示的相應(yīng)標(biāo)識(shí)應(yīng)用選擇功能以選擇新的首要例示。例如,web應(yīng)用的相應(yīng)例示可以包括標(biāo)識(shí)符(例如,通用唯一標(biāo)識(shí)符-uuid),并且選擇功能可以被應(yīng)用于該標(biāo)識(shí)符,諸如選擇最低編號(hào)、應(yīng)用隨機(jī)數(shù)生成器或者其它一些功能。
在選擇了新的首要瀏覽器例示之后,在218,所選擇的例示可以在208被注冊(cè)為首要例示,在210與服務(wù)器進(jìn)行連接和利用服務(wù)器進(jìn)行認(rèn)證,并且在212作為首要直至終止。作為示例,如果在214當(dāng)首要例示終止時(shí)沒(méi)有其它例示向本地全局存儲(chǔ)針對(duì)基于遠(yuǎn)程的應(yīng)用進(jìn)行注冊(cè),則本地全局存儲(chǔ)可以被移除而不被諸如會(huì)話存儲(chǔ)之類(lèi)的基于遠(yuǎn)程的應(yīng)用所使用,或者可以持續(xù)用于基于遠(yuǎn)程的應(yīng)用直至被用戶所移除。
圖3是圖示可以使用到首要例示的連接針對(duì)基于遠(yuǎn)程的應(yīng)用更新多個(gè)瀏覽器例示的至少一些方法的示例性實(shí)施例300的流程圖,在302,首要例示保持與提供基于遠(yuǎn)程的應(yīng)用的遠(yuǎn)程服務(wù)器的連接。在一個(gè)實(shí)施例中,首要例示能夠針對(duì)用于基于遠(yuǎn)程的應(yīng)用的非首要瀏覽器例示更新而監(jiān)視本地全局存儲(chǔ)以發(fā)送至服務(wù)器。
例如,用戶可以使用允許他們同時(shí)與多個(gè)連接在線聊天的服務(wù)。在該示例中,用戶可能希望相應(yīng)會(huì)話處于單獨(dú)的窗口或窗口標(biāo)簽中以幫助組織不同會(huì)話,或者消除彼此的干擾。首要例示可以保持與提供聊天的服務(wù)器的連接,并且針對(duì)所有例示使用本地全局存儲(chǔ)對(duì)傳入和傳出的聊天進(jìn)行更新。
在304,首要例示從服務(wù)器接收針對(duì)基于遠(yuǎn)程的應(yīng)用的更新。這里,更新可以是針對(duì)首要例示,和/或多個(gè)非首要例示中的一個(gè)或多個(gè)。作為示例,如果用戶正在使用即時(shí)消息傳遞應(yīng)用的若干不同的瀏覽器例示與若干聯(lián)系人進(jìn)行會(huì)話,并且一些聯(lián)系人發(fā)送了回復(fù),則首要例示能夠從服務(wù)器獲取回復(fù)。回復(fù)可以是針對(duì)首要和/或一個(gè)或多個(gè)非首要例示。
在306,首要例示將更新寫(xiě)入本地全局存儲(chǔ)(全局池)。在308,諸如通過(guò)針對(duì)一個(gè)或多個(gè)鍵-值配對(duì)的變化而檢測(cè)到針對(duì)全局池的狀態(tài)變化。這里,狀態(tài)變化激活變化事件,其可以被配置為使得將通知發(fā)送給向全局池進(jìn)行注冊(cè)的相應(yīng)瀏覽器例示。在310,所注冊(cè)的瀏覽器例示被通知以針對(duì)全局池的狀態(tài)變化。
在312,所注冊(cè)的瀏覽器例示從全局池讀取更新。例如,能夠檢測(cè)到針對(duì)鍵-值配對(duì)的變化(例如,新的鍵、新的數(shù)值、所去除的鍵)并且從全局池讀取更新。在該實(shí)施例中,相應(yīng)例示從全局池進(jìn)行讀?。蝗欢?,僅適用更新的那些例示將應(yīng)用更新。在314,適用更新的瀏覽器例示能夠應(yīng)用更新。例如,所更新的例示能夠顯示從即時(shí)消息傳遞應(yīng)用中的聯(lián)系人所接收的消息。
在316,對(duì)非首要例示進(jìn)行更新。例如,諸如在若干瀏覽器窗口或標(biāo)簽中打開(kāi)了多個(gè)基于遠(yuǎn)程的應(yīng)用的用戶能夠在客戶端側(cè)上對(duì)一個(gè)或多個(gè)例示進(jìn)行更新。在該示例中,用戶可以在針對(duì)他們?cè)诩磿r(shí)消息傳遞應(yīng)用中與之進(jìn)行會(huì)話的其聯(lián)系人之一的回復(fù)中寫(xiě)入消息,由此更新客戶端側(cè)的例示。將要意識(shí)到的是,從302到316的箭頭指示與處理流程的方向相反的時(shí)間線。例如,在該實(shí)施例中,首要例示將保持到服務(wù)器的連接而非首要例示則例如被用戶所更新。
在318,諸如已經(jīng)被用戶所更新的非首要例示向本地全局存儲(chǔ)(全局池)寫(xiě)入更新。在320,檢測(cè)到針對(duì)全局池的狀態(tài)變化,并且狀態(tài)變化激活變化事件。在322,變化事件能夠使得首要例示(例如,以及其它非首要例示)被通知以狀態(tài)變化。在324,首要例示能夠從全局池進(jìn)行讀取以從非首要例示得到更新。在326,首要例示使用其與服務(wù)器的連接而將更新從非首要例示發(fā)送至服務(wù)器。例如,以這種方式,可以利用其具有到服務(wù)器的直接連接而為非首要例示傳播更新。
系統(tǒng)可以被設(shè)計(jì)為允許在客戶端機(jī)器上運(yùn)行多個(gè)基于遠(yuǎn)程的應(yīng)用(例如,web應(yīng)用),例如,同時(shí)僅一個(gè)例示針對(duì)應(yīng)用而保持到遠(yuǎn)程服務(wù)器的連接,并且相應(yīng)例示可以使用該連接進(jìn)行更新。圖4是用于與多個(gè)客戶端側(cè)的瀏覽器例示共享到基于遠(yuǎn)程的應(yīng)用的連接的示例性系統(tǒng)400的組件示圖。
存儲(chǔ)器組件450中所包括的本地全局存儲(chǔ)組件402對(duì)與遠(yuǎn)程服務(wù)器460所服務(wù)的基于遠(yuǎn)程的應(yīng)用相關(guān)聯(lián)的多個(gè)客戶端側(cè)瀏覽器例示452提供寫(xiě)入和讀取訪問(wèn)。另外,本地全局存儲(chǔ)組件402向首要瀏覽器例示454提供能夠針對(duì)用于基于遠(yuǎn)程的應(yīng)用的一個(gè)或多個(gè)第二瀏覽器例示456而向本地全局存儲(chǔ)組件402寫(xiě)入更新,并且將更新從一個(gè)或多個(gè)第二瀏覽器例示456傳輸至基于遠(yuǎn)程的應(yīng)用。
也就是說(shuō),例如,遠(yuǎn)程應(yīng)用能夠使用服務(wù)器460來(lái)提供更新,并且首要例示能夠?qū)⒏聦?xiě)入到本地全局存儲(chǔ)402。在該示例中,第二瀏覽器例示456能夠從本地全局存儲(chǔ)402讀取更新。另外,第二瀏覽器例示456能夠向本地全局存儲(chǔ)402進(jìn)行寫(xiě)入,并且首要例示454能夠讀取更新并且將它們傳輸至遠(yuǎn)程服務(wù)器460上的遠(yuǎn)程應(yīng)用。
變化通知組件404與本地全局存儲(chǔ)組件402操作耦接以將本地全局存儲(chǔ)402的狀態(tài)變化的通知提供至向本地全局存儲(chǔ)組件402注冊(cè)的一個(gè)或多個(gè)瀏覽器例示452,而并不由一個(gè)或多個(gè)瀏覽器例示452進(jìn)行輪詢。例如,不同于瀏覽器例示452針對(duì)可能已經(jīng)發(fā)生的任意變化定期向本地全局存儲(chǔ)組件402發(fā)送請(qǐng)求,變化通知組件404被配置為使得狀態(tài)變化的通知被發(fā)送至瀏覽器例示452。
瀏覽器例示注冊(cè)組件406與本地全局存儲(chǔ)組件402操作耦接,并且提供第一瀏覽器例示以注冊(cè)為針對(duì)基于遠(yuǎn)程的應(yīng)用的首要瀏覽器例示454。這里,首要瀏覽器例示454連接458至遠(yuǎn)程服務(wù)器460以傳輸更新。另外,瀏覽器例示注冊(cè)組件406提供一個(gè)或多個(gè)第二瀏覽器例示456以向本地全局存儲(chǔ)組件402進(jìn)行注冊(cè),以便通過(guò)首要瀏覽器例示454發(fā)送和獲取針對(duì)基于遠(yuǎn)程的應(yīng)用的更新。
圖5是圖示可以實(shí)施這里所描述的一個(gè)或多個(gè)系統(tǒng)和/或技術(shù)的一個(gè)實(shí)施例500的組件示圖。在一個(gè)實(shí)施例中,瀏覽器例示510、514可以包括分別包括基于遠(yuǎn)程的應(yīng)用512、516(例如,web應(yīng)用)的例示的單獨(dú)瀏覽器窗口。另外,瀏覽器例示510、514在瀏覽器中可以包括分別包括基于遠(yuǎn)程的應(yīng)用的單獨(dú)標(biāo)簽。此外,瀏覽器例示510、514可以包括諸如在客戶端桌面上運(yùn)行基于遠(yuǎn)程的應(yīng)用的插件。
在一個(gè)實(shí)施例中,本地全局存儲(chǔ)組件402可以允許對(duì)本地全局存儲(chǔ)402的客戶端側(cè)數(shù)據(jù)寫(xiě)入,和/或從本地全局存儲(chǔ)402的數(shù)據(jù)讀取,諸如從首要和次要例示510和514中運(yùn)行的web應(yīng)用512、516的數(shù)據(jù)讀取。另外,當(dāng)針對(duì)本地全局存儲(chǔ)組件402發(fā)生狀態(tài)變化時(shí),本地全局存儲(chǔ)組件402可以向諸如首要和次要例示510、514的已注冊(cè)的客戶端側(cè)瀏覽器實(shí)例提供通知。
在一個(gè)實(shí)施例中,狀態(tài)變化可以導(dǎo)致變化通知組件404激活變化事件,其導(dǎo)致向例示510、514發(fā)送通知。在一個(gè)實(shí)施例中,本地全局存儲(chǔ)組件402可以包括鍵-值配對(duì)522,其能夠觸發(fā)變化通知組件404以激活狀態(tài)變化事件。狀態(tài)變化事件可以在添加鍵、去除鍵和/或改變鍵值時(shí)被激活。
在一個(gè)實(shí)施例中,針對(duì)本地全局存儲(chǔ)組件402的狀態(tài)變化的通知可以使得向本地全局存儲(chǔ)組件402注冊(cè)的一個(gè)或多個(gè)瀏覽器例示510、514從本地全局存儲(chǔ)組件402進(jìn)行讀取以識(shí)別來(lái)自遠(yuǎn)程服務(wù)器上的基于遠(yuǎn)程的應(yīng)用的由首要瀏覽器例示510所寫(xiě)入的更新。也就是說(shuō),當(dāng)首要例示510諸如通過(guò)互聯(lián)網(wǎng)連接518接收到來(lái)自服務(wù)器的更新時(shí),首要例示510能夠?qū)⒏聦?xiě)入本地全局存儲(chǔ)402。狀態(tài)變化的通知隨后例如能夠使得一個(gè)或多個(gè)次要例示514從本地全局存儲(chǔ)402讀取更新。
又另一個(gè)實(shí)施例涉及一種計(jì)算機(jī)可讀介質(zhì),其包括被配置為實(shí)施這里所給出的一種或多種技術(shù)的處理器可執(zhí)行指令。圖6中圖示了可以以這些方式進(jìn)行設(shè)計(jì)的示例性計(jì)算機(jī)可讀介質(zhì),其中實(shí)施方式600包括其上編碼有計(jì)算機(jī)可讀數(shù)據(jù)606的計(jì)算機(jī)可讀介質(zhì)608(例如,cd-r、dvd-r或者硬盤(pán)驅(qū)動(dòng)器的碟片)。該計(jì)算機(jī)可讀數(shù)據(jù)606進(jìn)而包括被配置為根據(jù)這里所給出的一個(gè)或多個(gè)原則進(jìn)行操作的計(jì)算機(jī)指令604的集合。在一個(gè)這樣的實(shí)施例602中,處理器可執(zhí)行指令604例如可以被配置為執(zhí)行諸如圖1的示例性方法100的方法。在另一個(gè)這樣的實(shí)施例中,處理器可執(zhí)行指令604例如可以被配置為實(shí)施諸如圖4的示例性系統(tǒng)400的系統(tǒng)。許多這樣的計(jì)算機(jī)可讀媒體可以被本領(lǐng)域技術(shù)人員設(shè)計(jì)為被配置為依據(jù)這里所給出的技術(shù)進(jìn)行操作。
雖然已經(jīng)以特定于結(jié)構(gòu)特征和/或方法行為的語(yǔ)言對(duì)主題進(jìn)行了描述,但是所要理解的是,所附權(quán)利要求中所定義的主題并不必局限于以上所描述的具體特征或行為。相反,以上所描述的具體特征和行為作為實(shí)施權(quán)利要求的示例形式而被公開(kāi)。
如本申請(qǐng)中所使用的,術(shù)語(yǔ)“組件”、“模塊”、“系統(tǒng)”、“接口”等通常意在指代計(jì)算機(jī)相關(guān)實(shí)體、硬件、軟硬件組合、軟件或者執(zhí)行中的軟件。例如,組件可以是在處理器上運(yùn)行的過(guò)程、處理器、對(duì)象、可執(zhí)行程序、執(zhí)行的線程、程序和/或計(jì)算機(jī),但是并不局限于此。通過(guò)說(shuō)明的方式,控制器上運(yùn)行的應(yīng)用以及控制器都可以作為組件。一個(gè)或多個(gè)組件可以駐留于過(guò)程和/或執(zhí)行線程之內(nèi),并且組件可以位于一臺(tái)計(jì)算機(jī)上和/或在兩臺(tái)或更多計(jì)算機(jī)之間進(jìn)行分布。
此外,所請(qǐng)求保護(hù)的主題可以使用標(biāo)準(zhǔn)編程和/或工程技術(shù)而被實(shí)施為方法、裝置或制造品以產(chǎn)生軟件、固件、硬件或其任意組合來(lái)控制計(jì)算機(jī)以實(shí)施所公開(kāi)的主題。如這里所使用的,術(shù)語(yǔ)“制造品”意在包含可從任意計(jì)算機(jī)可讀設(shè)備、載體或媒體進(jìn)行訪問(wèn)的計(jì)算機(jī)程序。當(dāng)然,本領(lǐng)域技術(shù)人員將會(huì)認(rèn)識(shí)到,可以對(duì)該配置進(jìn)行許多修改而并不背離所請(qǐng)求保護(hù)主題的范圍或精神。
圖7和以下討論提供了用于實(shí)施這里所闡述的一種或多種提供形式的實(shí)施例的適當(dāng)計(jì)算環(huán)境的簡(jiǎn)要的一般性描述。圖7的操作環(huán)境僅是適當(dāng)操作環(huán)境的一個(gè)示例而并非意在關(guān)于操作環(huán)境的使用或功能范圍進(jìn)行任何暗示。計(jì)算設(shè)備的示例包括個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持或膝上設(shè)備、移動(dòng)設(shè)備(諸如移動(dòng)電話、個(gè)人數(shù)字助理(pda)、媒體播放器等)、多處理器系統(tǒng)、消費(fèi)電子、小型計(jì)算機(jī)、大型計(jì)算機(jī)、包括以上任意系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境,等等,但是并不局限于此。
雖然并不要求如此,但是在由一個(gè)或多個(gè)計(jì)算設(shè)備所執(zhí)行的“計(jì)算機(jī)可讀指令”的一般性環(huán)境中對(duì)實(shí)施例進(jìn)行描述。計(jì)算機(jī)可讀指令可以經(jīng)由計(jì)算機(jī)可讀媒體(以下進(jìn)行討論)進(jìn)行分布。計(jì)算機(jī)可讀指令可以被實(shí)施為程序模塊,諸如執(zhí)行特定任務(wù)或者實(shí)施特定抽象數(shù)據(jù)類(lèi)型的函數(shù)、對(duì)象、應(yīng)用編程接口(api)、數(shù)據(jù)結(jié)構(gòu)等。典型地,計(jì)算機(jī)可讀指令的功能在各種環(huán)境中可以按照需要進(jìn)行組合或分布。
圖7圖示了系統(tǒng)710的示例,其包括被配置為實(shí)施這里所提供的一個(gè)或多個(gè)實(shí)施例的計(jì)算設(shè)備712。在一種配置中,計(jì)算設(shè)備712包括至少一個(gè)處理單元716和存儲(chǔ)器718。根據(jù)計(jì)算設(shè)備的確切配置和類(lèi)型,存儲(chǔ)器718可以是易失性(例如,諸如ram)、非易失性(例如,諸如rom、閃存等)或者二者的某種組合。該配置在圖7中由虛線714所圖示。
在其它實(shí)施例中,設(shè)備712可以包括附加的特征和/或功能。例如,設(shè)備712還可以包括附加存儲(chǔ)(例如,可移動(dòng)和/或非可移動(dòng)的),包括磁性存儲(chǔ)、光學(xué)存儲(chǔ)等,但是并不局限于此。這樣的附加存儲(chǔ)在圖7中由存儲(chǔ)720所圖示。在一個(gè)實(shí)施例中,用來(lái)實(shí)施這里所提供的一個(gè)或多個(gè)實(shí)施例的計(jì)算機(jī)可讀指令可以處于存儲(chǔ)720中。存儲(chǔ)720還可以存儲(chǔ)其它計(jì)算機(jī)可讀指令以實(shí)施操作系統(tǒng)、應(yīng)用程序等。例如,計(jì)算機(jī)可讀指令可以在存儲(chǔ)器718中進(jìn)行加載以供處理單元716執(zhí)行。
如這里所使用的術(shù)語(yǔ)“計(jì)算機(jī)可讀媒體”包括計(jì)算機(jī)存儲(chǔ)媒體。計(jì)算機(jī)存儲(chǔ)媒體包括以用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令或其它數(shù)據(jù)的信息的任意方法或技術(shù)所實(shí)施的易失性和非易失性、可移動(dòng)和非可移動(dòng)的媒體。存儲(chǔ)器718和存儲(chǔ)720是計(jì)算機(jī)存儲(chǔ)媒體的示例。計(jì)算機(jī)存儲(chǔ)媒體包括ram、rom、eeprom、閃存或其它存儲(chǔ)器技術(shù)、cd-rom、數(shù)字多功能盤(pán)(dvd)或其它光學(xué)存儲(chǔ)、磁盒、磁帶、磁盤(pán)存儲(chǔ)或其它磁性存儲(chǔ)設(shè)備,或者能夠被用來(lái)存儲(chǔ)所期望信息并且能夠被設(shè)備712所訪問(wèn)的任意其它介質(zhì),但是并不局限于此。任意這樣的計(jì)算機(jī)存儲(chǔ)媒體都可以是設(shè)備712的一部分。
設(shè)備712還可以包括允許設(shè)備712與其它設(shè)備進(jìn)行通信的(多個(gè))通信連接726。(多個(gè))通信連接726可以包括調(diào)制解調(diào)器、網(wǎng)絡(luò)接口卡(nic)、集成網(wǎng)絡(luò)接口、無(wú)線電頻率發(fā)射器/接收器、紅外端口、usb連接或者用于將計(jì)算設(shè)備712連接至其它計(jì)算設(shè)備的其它接口。(多個(gè))通信連接726可以包括有線連接或無(wú)線連接。(多個(gè))通信連接726可以發(fā)送和/或接收通信媒體。
術(shù)語(yǔ)“計(jì)算機(jī)可讀媒體”可以包括通信媒體。通信媒體通常在諸如載波或其它傳輸機(jī)制的“調(diào)制的數(shù)據(jù)信號(hào)”中體現(xiàn)計(jì)算機(jī)可讀指令或其它數(shù)據(jù)并且包括任意信息傳遞媒體。術(shù)語(yǔ)“調(diào)制的數(shù)據(jù)信號(hào)”可以包括其一個(gè)或多個(gè)特征以在信號(hào)中編碼信息的方式設(shè)置或改變的信號(hào)。
設(shè)備712可以包括(多個(gè))輸入設(shè)備724,諸如鍵盤(pán)、鼠標(biāo)、觸筆、語(yǔ)音輸入設(shè)備、觸摸輸入設(shè)備、紅外攝像機(jī)、視頻輸入設(shè)備和/或任意其它輸入設(shè)備。設(shè)備712中還可以包括諸如一個(gè)或多個(gè)顯示器、揚(yáng)聲器、打印機(jī)和/或任意其它輸出設(shè)備的(多個(gè))輸出設(shè)備722。(多個(gè))輸入設(shè)備724和(多個(gè))輸出設(shè)備722可以經(jīng)由有線連接、無(wú)線連接或者其任意組合連接至設(shè)備712。在一個(gè)實(shí)施例中,來(lái)自另一個(gè)計(jì)算設(shè)備的輸入設(shè)備或輸出設(shè)備可以被用作用于計(jì)算設(shè)備712的(多個(gè))輸入設(shè)備724或(多個(gè))輸出設(shè)備722。
計(jì)算設(shè)備712的組件可以通過(guò)諸如總線的各種互連進(jìn)行連接。這樣的互連可以包括諸如pciexpress的外部組件互連(pci)、通用串行總線(usb)、火線(ieee1394)、光學(xué)總線結(jié)構(gòu)等。在另一個(gè)實(shí)施例中,計(jì)算設(shè)備712的組件可以通過(guò)網(wǎng)絡(luò)進(jìn)行互連。例如,存儲(chǔ)器718可以由位于通過(guò)網(wǎng)絡(luò)進(jìn)行互連的不同物理位置中的多個(gè)物理存儲(chǔ)器單元所構(gòu)成。
本領(lǐng)域技術(shù)人員將會(huì)認(rèn)識(shí)到,用來(lái)存儲(chǔ)計(jì)算機(jī)可讀指令的存儲(chǔ)設(shè)備可以跨網(wǎng)絡(luò)進(jìn)行分布。例如,可經(jīng)由網(wǎng)絡(luò)728進(jìn)行訪問(wèn)的計(jì)算設(shè)備730可以存儲(chǔ)計(jì)算機(jī)可讀指令以實(shí)施這里所提供的一個(gè)或多個(gè)實(shí)施例。計(jì)算設(shè)備712可以訪問(wèn)計(jì)算設(shè)備730并且下載計(jì)算機(jī)可讀指令的一部分或所有以便執(zhí)行。可替換地,計(jì)算設(shè)備712可以按照需要下載計(jì)算機(jī)可讀指令段,或者一些指令可以在計(jì)算設(shè)備712執(zhí)行而一些則在計(jì)算設(shè)備730執(zhí)行。
這里提供了實(shí)施例的各種操作。在一個(gè)實(shí)施例中,所描述的一個(gè)或多個(gè)操作可以構(gòu)成存儲(chǔ)在一個(gè)或多個(gè)計(jì)算機(jī)可讀媒體上的計(jì)算機(jī)可讀指令,如果其被計(jì)算設(shè)備所執(zhí)行,將使得該計(jì)算設(shè)備執(zhí)行所描述的操作。對(duì)一些或所有操作進(jìn)行描述的順序不應(yīng)當(dāng)被解釋為暗示這些操作必然是依賴(lài)于順序的。本領(lǐng)域技術(shù)人員鑒于該描述將會(huì)意識(shí)到可替換的排序。另外,將要理解的是,并非所有操作都必然出現(xiàn)在這里所提供的每個(gè)實(shí)施例中。
此外,詞語(yǔ)“示例性”在這里被用于表示用作示例、實(shí)例或說(shuō)明。這里被描述為“示例性”的任意方面或設(shè)計(jì)都并非必然要被解釋為優(yōu)于其它方面或設(shè)計(jì)。相反,詞語(yǔ)示例性的使用是意在以具體的方式給出概念。如本申請(qǐng)中所使用的,術(shù)語(yǔ)“或者”意在表示包含性的“或者”而非排他性的“或者”。也就是說(shuō),除非另外指明或者從上下文所明確,否則“x采用a或b”意在表示任意的自然包含性排列。也就是說(shuō),如果x采用a、x采用b或x采用a和b,則“x采用a或b”就在以上任意實(shí)例下得以滿足。此外,除非另外指明或者從上下文明確是指向單數(shù)形式,否則如本申請(qǐng)和所附權(quán)利要求中所使用的,冠詞“一或一個(gè)”(“a”和“an”)通??梢员唤忉尀楸硎尽耙粋€(gè)或多個(gè)”。
而且,雖然已經(jīng)關(guān)于一種或多種實(shí)施方式示出并描述了本公開(kāi),但是基于對(duì)該說(shuō)明書(shū)和附圖的閱讀和理解,對(duì)于本領(lǐng)域其它技術(shù)人員而言將會(huì)出現(xiàn)等同的變化和修改形式。本公開(kāi)包括所有這樣的修改和變化并且僅由以下權(quán)利要求的范圍所限定。特別地,關(guān)于以上所描述組件(例如,部件、資源等)所執(zhí)行的各種功能,即使在結(jié)構(gòu)上與執(zhí)行這里所說(shuō)明的本公開(kāi)的示例性實(shí)施方式中的功能的所公開(kāi)結(jié)構(gòu)并不等同,除非另作說(shuō)明,否則被用來(lái)描述這樣的組件的術(shù)語(yǔ)意在與執(zhí)行(例如,在功能上等同的)所描述組件的指定功能的任意組件相對(duì)應(yīng)。此外,雖然僅關(guān)于若干實(shí)施方式之一公開(kāi)了本公開(kāi)的特定特征,但是由于對(duì)于給定或特定應(yīng)用而言可能是所期望并有利的,所以這樣的特征可以與其它實(shí)施方式的一個(gè)或多個(gè)其它特征相結(jié)合。此外,至于在具體實(shí)施方式或權(quán)利要求中所使用的術(shù)語(yǔ)“包括”、“有著”、“具有”、“帶有”或其變化形式,這樣的術(shù)語(yǔ)意在是以類(lèi)似于術(shù)語(yǔ)“包含”的方式而是包含性的。