背景技術(shù):
在計算領(lǐng)域內(nèi),許多情形涉及設(shè)備的虛擬環(huán)境內(nèi)的應(yīng)用的執(zhí)行,比如執(zhí)行在web瀏覽器內(nèi)的web應(yīng)用;針對設(shè)備所提供的計算環(huán)境之外的其他計算環(huán)境所開發(fā)的代碼(例如針對Java虛擬機設(shè)計的Java代碼);以及執(zhí)行在隔離虛擬機內(nèi)的不受信任的代碼。虛擬機內(nèi)的應(yīng)用的執(zhí)行(而不是作為設(shè)備的本機進程)可以在執(zhí)行期間促進應(yīng)用的兼容性和安全性。
這樣的應(yīng)用常常涉及后臺處理,比如長期運行的計算密集的進程。舉例來說,應(yīng)用可以針對特定類型的事件(比如移動電話上的傳入呼叫)對設(shè)備的硬件組件進行監(jiān)測。但是如果這樣的處理由所述應(yīng)用實施,則該應(yīng)用的其他責(zé)任可能被不合期望地延遲;例如計算密集的處理可能搶先應(yīng)對圖形用戶接口(GUI)消息,并且可能導(dǎo)致所述應(yīng)用呈現(xiàn)出交互性或性能降低。為了在減少應(yīng)用的其他處理責(zé)任的中斷的同時實現(xiàn)這樣的后臺處理,所述應(yīng)用可以調(diào)用虛擬環(huán)境中的一個或更多工作者進程(worker process)。舉例來說,在超文本標記語言(HTML)的最近版本中提供的“web工作者”模型允許應(yīng)用請求web瀏覽器在所述web瀏覽器內(nèi)發(fā)起單獨的工作者進程,從而通過安全且高性能的方式代表所述應(yīng)用實現(xiàn)后臺處理。
技術(shù)實現(xiàn)要素:
提供該發(fā)明內(nèi)容部分是為了以簡化形式介紹將在后面的具體實施方式部分中進一步描述的概念的選擇。該發(fā)明內(nèi)容部分不意圖標識出所要求保護的主題內(nèi)容的關(guān)鍵因素或?qū)嵸|(zhì)特征,也不意圖被用來限制所要求保護的主題內(nèi)容的范圍。
雖然代表執(zhí)行在虛擬環(huán)境中的應(yīng)用的工作者進程的實例化給出了一些優(yōu)點,但是同樣在虛擬環(huán)境中執(zhí)行那些工作者進程的模型可能存在顯著的缺點。作為第一示例,“web工作者”模型通常把web工作者的生命周期耦合到web應(yīng)用的生命周期;也就是說當(dāng)web應(yīng)用被掛起或終止時(比如通過關(guān)閉托管所述web應(yīng)用的頁面),web工作者也被終止。工作者進程還可以在托管所述工作者進程的虛擬環(huán)境終止(例如關(guān)閉web瀏覽器)時被終止,和/或在重新啟動設(shè)備的計算環(huán)境(例如掛起或重新引導(dǎo)設(shè)備的操作系統(tǒng))時被終止。在某些情形中,將工作者進程的生命周期與應(yīng)用和/或虛擬環(huán)境的生命周期相關(guān)聯(lián)可能是合乎期望的。但是在其他情形中,可能希望允許工作者進程在這樣的事件之后持續(xù)進行,和/或持續(xù)經(jīng)過例如操作系統(tǒng)的重新引導(dǎo)之類的設(shè)備事件。
這里給出了用于擴展在虛擬環(huán)境(比如web瀏覽器或虛擬機)內(nèi)代表應(yīng)用執(zhí)行的工作者進程的彈性的技術(shù)。根據(jù)這樣的技術(shù),并非在虛擬環(huán)境內(nèi)執(zhí)行工作者進程,而是所述設(shè)備可以在虛擬環(huán)境外部執(zhí)行工作者進程。當(dāng)應(yīng)用和/或虛擬環(huán)境被終止時,設(shè)備可以避免終止工作者進程,從而將工作者進程的生命周期與應(yīng)用的生命周期分開??蛇x的是,工作者進程還可以被配置成持續(xù)經(jīng)過在虛擬環(huán)境外部發(fā)生的潛在中斷事件,比如托管工作者進程的進程中的故障或者操作系統(tǒng)重新引導(dǎo)。當(dāng)工作者進程實現(xiàn)執(zhí)行事件時(例如完成復(fù)雜的計算進程或者檢測到特定類型的設(shè)備事件),可以對執(zhí)行在虛擬環(huán)境內(nèi)的應(yīng)用進行通知(可選地,如果應(yīng)用當(dāng)前未在執(zhí)行的話重新發(fā)起所述應(yīng)用)以便履行對于由工作者進程所實現(xiàn)的執(zhí)行事件的應(yīng)對。通過把工作者進程的執(zhí)行與虛擬環(huán)境內(nèi)的應(yīng)用的執(zhí)行解除耦合,這里給出的技術(shù)可以擴展能夠由虛擬環(huán)境內(nèi)的應(yīng)用所實現(xiàn)的后臺處理的彈性和能力。
為了實現(xiàn)前述和有關(guān)目的,后面的描述和附圖闡述了特定的說明性方面和實現(xiàn)方式。這些僅僅表明可以據(jù)以采用一個或更多方面的各種方式當(dāng)中的幾種。通過在結(jié)合附圖時考慮的后面的詳細描述,本公開內(nèi)容的其他方面、優(yōu)點和新穎特征將變得顯而易見。
附圖說明
圖1是刻畫了代表web瀏覽器內(nèi)的web應(yīng)用的工作者進程的執(zhí)行的示例性情形的圖示。
圖2是刻畫了根據(jù)這里給出的技術(shù)的代表應(yīng)用的工作者進程的執(zhí)行的示例性情形的圖示。
圖3是根據(jù)這里給出的技術(shù)的將設(shè)備配置成履行與本地事件有關(guān)的客戶端應(yīng)用的請求的示例性方法的圖示。
圖4是圖示出了根據(jù)這里給出的技術(shù)的用于履行與本地事件有關(guān)的客戶端應(yīng)用的請求的示例性系統(tǒng)的組件方框圖。
圖5是包括被配置成具體實現(xiàn)這里所闡述的規(guī)定中的一項或更多項的處理器可執(zhí)行指令的示例性計算機可讀介質(zhì)的圖示。
圖6是刻畫了根據(jù)這里給出的技術(shù)的執(zhí)行在設(shè)備網(wǎng)格內(nèi)的設(shè)備上的應(yīng)用的工作者進程的示例性情形的圖示,其中工作者進程可以嘗試與所述應(yīng)用的服務(wù)器、另一服務(wù)器以及設(shè)備網(wǎng)格中的另一設(shè)備的遠程進程進行通信。
圖7是說明根據(jù)這里給出的技術(shù)的代表執(zhí)行在虛擬環(huán)境內(nèi)的應(yīng)用的持續(xù)性工作者進程的執(zhí)行的示例性情形的圖示。
圖8圖示出了可以在其中實施這里所闡述的規(guī)定中的一項或更多項的示例性計算環(huán)境。
具體實施方式
現(xiàn)在將參照附圖來描述所要求保護的主題內(nèi)容,其中相同的附圖標記始終被用來指代相同的元件。在后面的描述中,出于解釋的目的闡述了許多具體細節(jié)以便提供關(guān)于所要求保護的主題內(nèi)容的透徹理解。但是可能明顯的是,可以在沒有這些具體細節(jié)的情況下實踐所要求保護的主題內(nèi)容。在其他實例中,以方框圖形式示出了結(jié)構(gòu)和設(shè)備以便于描述所要求保護的主題內(nèi)容。
A、介紹
在計算領(lǐng)域內(nèi),許多情形涉及在虛擬環(huán)境內(nèi)在設(shè)備上執(zhí)行應(yīng)用,而不是在設(shè)備的本機計算環(huán)境內(nèi)執(zhí)行。作為第一示例,web瀏覽器可以提供用于執(zhí)行獨立于設(shè)備的代碼(比如JavaScript和超文本標記語言(HTML)內(nèi)容)的標準化平臺。作為第二示例,Java虛擬機(JVM)可以提供通用計算設(shè)備與代表Java應(yīng)用的設(shè)備的本機能力之間的橋梁(例如將通用存儲器分配請求翻譯成所述設(shè)備的存儲器模型)。作為第三示例,通過在第二設(shè)備內(nèi)提供對于第一設(shè)備的模擬的仿真器,被設(shè)計用于第一設(shè)備的本機環(huán)境的代碼可以完全在第二設(shè)備上執(zhí)行。作為第四示例,可以在“沙盒”或人工機器(artificial machine)內(nèi)執(zhí)行不受信任的代碼,從而可以將惡意操作隔離到所述人工機器,并且可以由設(shè)備評估不受信任的代碼對人工設(shè)備的影響而不存在對設(shè)備破壞的風(fēng)險。
這些和其他情形給出在虛擬環(huán)境內(nèi)執(zhí)行應(yīng)用。在許多這樣的情形中,所述應(yīng)用可能涉及將以高性能方式應(yīng)對的一些前臺責(zé)任;例如呈現(xiàn)圖形用戶接口(GUI)的應(yīng)用可能被設(shè)計成以高響應(yīng)度履行與視覺控制的交互,這是因為即使小的延遲對于用戶而言都是明顯的。這樣的應(yīng)用還可能涉及可以通過更加緩和的方式實施的大量后臺處理,比如長期運行的計算、將在空閑時間期間實施的維護任務(wù)以及對于設(shè)備事件的監(jiān)測。
為了平衡對于前臺處理和后臺處理二者的應(yīng)對,虛擬環(huán)境和應(yīng)用可以提供例如搶先多任務(wù)處理之類的技術(shù),其中應(yīng)用可以為各個任務(wù)指定優(yōu)先級。但是這樣的技術(shù)可能不完全足以調(diào)度在應(yīng)用中所涉及的多種處理任務(wù)。作為這方面的第一示例,搶先于某些類型的后臺處理(例如涉及資源的排他性鎖定的后臺處理)以便應(yīng)對前臺處理可能是不可能的或者不是高效的。作為這方面的第二示例,如果后臺處理涉及監(jiān)測設(shè)備事件,則這樣的后臺處理的中斷可能導(dǎo)致無法檢測到這樣的設(shè)備事件。
鑒于這些困難,一些虛擬環(huán)境允許應(yīng)用在所述虛擬環(huán)境內(nèi)發(fā)起單獨的工作者進程。通過把工作者進程與應(yīng)用的執(zhí)行線程分開,虛擬環(huán)境可以利用設(shè)備的計算環(huán)境(例如由操作系統(tǒng)提供的更加精密的搶先調(diào)度器)和/或計算硬件的并行處理能力(例如在多處理器設(shè)備中的不同處理器上或者在多核處理器的不同核心上并行執(zhí)行工作者進程和應(yīng)用線程)。此外,在與應(yīng)用相同的虛擬環(huán)境內(nèi)執(zhí)行工作者進程可以提供安全性(例如對于工作者進程實行與對應(yīng)用相同的安全性策略)和/或效率(例如允許應(yīng)用與工作者進程在虛擬環(huán)境內(nèi)作為對等方的緊密耦合)方面的優(yōu)點。
圖1給出了刻畫了用戶106的設(shè)備104的示例性情形100的圖示,其給出包括虛擬環(huán)境110(例如web瀏覽器)的計算環(huán)境108(例如操作系統(tǒng))。設(shè)備104可以與一臺或更多臺服務(wù)器102(例如web服務(wù)器)通信,并且可以取回將代表用戶106執(zhí)行的一項或更多項應(yīng)用112(例如嵌入在由用戶106請求的web頁面中的web應(yīng)用)。因此,設(shè)備104可以在虛擬環(huán)境110內(nèi)發(fā)起應(yīng)用112的執(zhí)行。此外,虛擬環(huán)境110可以被配置成允許應(yīng)用112請求執(zhí)行工作者進程114,比如將代表應(yīng)用112實施的后臺維護任務(wù),而無需中斷應(yīng)用112的前臺處理的執(zhí)行。因此,虛擬環(huán)境110可以與應(yīng)用112并排地在虛擬環(huán)境110內(nèi)發(fā)起工作者進程114的執(zhí)行。舉例來說,工作者進程114可以請求向其通知各種設(shè)備事件116,比如通過電話之類的移動通信設(shè)備接收到的傳入呼叫或消息。設(shè)備104可以在計算環(huán)境108內(nèi)應(yīng)用某種設(shè)備事件監(jiān)測118,并且在檢測到設(shè)備事件116時可以向虛擬環(huán)境110內(nèi)的工作者進程114遞送設(shè)備事件通知120。通過這種方式,設(shè)備104可以允許應(yīng)用112在虛擬環(huán)境110內(nèi)調(diào)用工作者進程114以實現(xiàn)各種類型的后臺處理,而無需中斷應(yīng)用112的前臺處理??梢哉J識到,在圖1的示例性情形100中圖示出的模型準確地描述了存在于超文本標記語言(HTML)的近來版本中的“web工作者”模型,其中JavaScript腳本可以在與腳本并排地執(zhí)行在web瀏覽器內(nèi)的“web工作者”進程中調(diào)用后臺處理。
雖然在圖1的示例性情形100中給出的架構(gòu)可以給出一些優(yōu)點,但是可以認識到,其中也可能出現(xiàn)一些缺點。具體來說,與應(yīng)用112并排地在虛擬環(huán)境110內(nèi)執(zhí)行工作者進程114在某些方面可能是不利的。舉例來說,在某些情形中,可能希望將工作者進程114的生命周期與應(yīng)用112耦合,從而使得應(yīng)用112的掛起或終止也導(dǎo)致工作者進程114的掛起或終止。但是在其他情形中,可能希望將應(yīng)用112與工作者進程114解除耦合。舉例來說,工作者進程114可能包括用戶106可能希望完成的長期運行的進程,但是用戶106可能不希望保留虛擬環(huán)境110內(nèi)的應(yīng)用112(例如用戶106可能有意地或無意地導(dǎo)覽離開托管web應(yīng)用的web頁面,從而導(dǎo)致終止與所述web應(yīng)用相關(guān)聯(lián)的web工作者)。作為另一個示例,用戶106可能希望工作者進程114無限期地持續(xù),比如用于發(fā)生在設(shè)備104上的特定類型的設(shè)備事件116的處理程序(例如用以在接收到文字消息或傳入電話呼叫時通知用戶106的通知進程)。此外,在某些情形中,可能希望允許工作者進程114不僅在應(yīng)用112的掛起或終止之后持續(xù),而且還在虛擬環(huán)境110的掛起或終止之后持續(xù)(例如在用戶106完全終止web瀏覽器之后),和/或在計算環(huán)境108的中斷之后持續(xù)(例如在設(shè)備104重新引導(dǎo)或者以其他方式重新啟動之后)。但是嚴格涉及工作者進程114的生命周期與應(yīng)用112的生命周期的耦合的模型可能無法提供這樣的持續(xù)的有彈性的工作者進程114。
B、所給出的技術(shù)
這里給出了用于改進代表執(zhí)行在虛擬環(huán)境內(nèi)的應(yīng)用112而執(zhí)行的工作者進程114的持續(xù)性和/或彈性的技術(shù)。根據(jù)這些技術(shù)(并且與例如在圖1的示例性情形100中所示出的那些技術(shù)之類的其他技術(shù)大不相同的是),并非在虛擬環(huán)境110內(nèi)執(zhí)行工作者進程114,而是設(shè)備104可以代表應(yīng)用112但是在虛擬環(huán)境110之外執(zhí)行工作者進程114。此外,當(dāng)設(shè)備終止應(yīng)用112時(例如暫時地或無限期地掛起應(yīng)用112或者在完成或中止應(yīng)用112的執(zhí)行時),設(shè)備104可以避免終止與應(yīng)用112相關(guān)聯(lián)的一個或更多個工作者進程114。通過這種方式,設(shè)備104可以允許執(zhí)行持續(xù)的工作者進程114,該持續(xù)的工作者進程114即使在應(yīng)用112當(dāng)前未在執(zhí)行時也繼續(xù)服務(wù)于應(yīng)用112的計算處理。
圖2給出了刻畫這里給出的技術(shù)的示例性應(yīng)用的示例性情形200的圖示。在該示例性情形200中,設(shè)備104再次包括計算環(huán)境108,所述計算環(huán)境108包括可以在其中執(zhí)行接收自服務(wù)器102的應(yīng)用112的虛擬環(huán)境110(例如接收自web服務(wù)器并且在web瀏覽器內(nèi)執(zhí)行的web應(yīng)用)。應(yīng)用112可以請求某種后臺處理,并且虛擬環(huán)境110可以通過代表應(yīng)用112發(fā)起工作者進程114而遵從。但是根據(jù)這里給出的技術(shù),可以由工作者進程主機202在虛擬環(huán)境110外部執(zhí)行工作者進程114,所述工作者進程主機202可以獨立于虛擬環(huán)境110對應(yīng)用112的生命周期和資源請求的管理來管理工作者進程114的生命周期和資源請求。具體來說,在檢測到應(yīng)用112的終止時,設(shè)備工作者進程主機202可以避免終止工作者進程114;也就是說可以將工作者進程114的生命周期與應(yīng)用112的生命周期分開并且獨立管理。工作者進程主機202還可以允許工作者進程114在該工作者進程114實現(xiàn)執(zhí)行事件時通知應(yīng)用112。舉例來說,由工作者進程114實施的后臺處理可以涉及檢測客戶端設(shè)備事件116,比如來自移動電話的傳入呼叫。設(shè)備可以利用某種設(shè)備事件監(jiān)測118來代表工作者進程114檢測設(shè)備事件116,并且可以在檢測到這樣的設(shè)備事件116時向工作者進程114遞送設(shè)備事件通知120。特別地,即使應(yīng)用112當(dāng)前未在執(zhí)行(并且可選地,即使虛擬環(huán)境110未在設(shè)備104上執(zhí)行),該檢測和遞送也可以在工作者進程114操作的同時成功完成。此外,工作者進程主機202可以促進工作者進程114向應(yīng)用112通知設(shè)備事件116(例如,如果應(yīng)用112和/或虛擬環(huán)境110當(dāng)前未在執(zhí)行,則設(shè)備104可以重新發(fā)起應(yīng)用112和/或虛擬環(huán)境110,或者可以簡單地將設(shè)備事件通知120排隊直到稍后由用戶106重新發(fā)起這樣的進程為止)。通過這種方式,設(shè)備104實現(xiàn)了獨立于應(yīng)用112的執(zhí)行的工作者進程114的持續(xù)執(zhí)行。這些和其他優(yōu)點可以是可通過圖2的示例性情形200中所圖示的架構(gòu)和這里給出的技術(shù)來實現(xiàn)的。
C、示例性實施例
圖3給出了這里給出的技術(shù)的第一示例性實施例,其被圖示為代表執(zhí)行在設(shè)備104的虛擬環(huán)境110內(nèi)的應(yīng)用112來實施處理的示例性方法300。示例性方法300例如可以被實施為存儲在設(shè)備的存儲器組件中的指令集,所述存儲器組件比如是存儲器電路、硬盤驅(qū)動器的盤片、固態(tài)存儲設(shè)備或者磁盤或光盤,所述指令集被組織成使得當(dāng)在設(shè)備的處理器上執(zhí)行時,其使得所述設(shè)備根據(jù)這里給出的技術(shù)來操作。示例性方法300開始于302處,并且涉及在設(shè)備的處理器上執(zhí)行304指令。具體來說,這些指令可以被配置成在從應(yīng)用112接收到針對執(zhí)行涉及執(zhí)行事件的工作者進程114的請求時,在虛擬環(huán)境110外部發(fā)起306工作者進程114的執(zhí)行。所述指令還被配置成在檢測到應(yīng)用112的終止時,避免308終止工作者進程114。所述指令還被配置成在工作者進程114實現(xiàn)所述執(zhí)行事件時,向應(yīng)用112通知310工作者進程114的執(zhí)行事件。在代表應(yīng)用112完成處理之后,示例性方法300根據(jù)這里給出的技術(shù)代表應(yīng)用112給出工作者進程114的執(zhí)行,并且因而結(jié)束于312處。
圖4給出了這里給出的技術(shù)的第二示例性實施例,其被圖示為刻畫了示例性系統(tǒng)408的示例性情形400,所述示例性系統(tǒng)408被配置成代表執(zhí)行在設(shè)備104的虛擬環(huán)境110內(nèi)的應(yīng)用來實施處理。示例性系統(tǒng)408例如可以被實施為存儲在設(shè)備402的存儲器組件中的指令集,所述指令集被配置成當(dāng)在設(shè)備402的處理器404上執(zhí)行時,使得設(shè)備402根據(jù)這里給出的技術(shù)來操作。示例性系統(tǒng)408包括虛擬環(huán)境110,在該虛擬環(huán)境110中,至少一項應(yīng)用112在設(shè)備104上執(zhí)行。示例性系統(tǒng)408還包括在虛擬環(huán)境110外部在設(shè)備104上執(zhí)行的工作者主機組件410,該工作者主機組件410被配置成在從應(yīng)用112接收到針對執(zhí)行涉及執(zhí)行事件406的工作者進程114的請求時,在虛擬環(huán)境110外部發(fā)起工作者進程114的執(zhí)行。工作者主機組件410還被配置成在檢測到應(yīng)用112的終止時,避免終止工作者進程114;并且在工作者進程114實現(xiàn)執(zhí)行事件406時,向應(yīng)用112通知工作者進程114的執(zhí)行事件406。通過這種方式,示例性系統(tǒng)408根據(jù)這里給出的技術(shù)代表執(zhí)行在設(shè)備402的虛擬環(huán)境110內(nèi)的應(yīng)用112實現(xiàn)工作者進程114的執(zhí)行。
再一個實施例涉及包括處理器可執(zhí)行指令的計算機可讀介質(zhì),所述處理器可執(zhí)行指令被配置成應(yīng)用這里給出的技術(shù)。這樣的計算機可讀介質(zhì)例如可以包括涉及有形設(shè)備的計算機可讀存儲介質(zhì),比如存儲器半導(dǎo)體(例如利用靜態(tài)隨機存取存儲器(SRAM)、動態(tài)隨機存取存儲器(DRAM)和/或同步動態(tài)隨機存取存儲器(SDRAM)技術(shù)的半導(dǎo)體)、硬盤驅(qū)動器的盤片、閃存設(shè)備或者磁盤或光盤(比如CD-R、DVD-R或軟盤),其編碼計算機可讀指令集,當(dāng)由設(shè)備的處理器執(zhí)行時,所述計算機可讀指令集使得所述設(shè)備實施這里給出的技術(shù)。這樣的計算機可讀介質(zhì)還可以包括(作為與計算機可讀存儲介質(zhì)不同的一類技術(shù)的)各種類型的通信介質(zhì),比如可以通過各種物理現(xiàn)象傳播的信號(例如電磁信號、聲波信號或光學(xué)信號)以及在各種有線情形(例如通過以太網(wǎng)或光纖線纜)和/或無線情形(例如,諸如WiFi之類的無線局域網(wǎng)(WLAN)、諸如藍牙之類的個域網(wǎng)(PAN)或者蜂窩或無線電網(wǎng)絡(luò))中傳播的信號,其編碼計算機可讀指令集,當(dāng)由設(shè)備的處理器執(zhí)行時,所述計算機可讀指令集使得所述設(shè)備實施這里給出的技術(shù)。
在圖5中圖示出了可以通過這些方式設(shè)想到的示例性計算機可讀介質(zhì),其中實現(xiàn)方式500包括計算機可讀介質(zhì)502(例如CD-R、DVD-R或硬盤驅(qū)動器的盤片),其上編碼計算機可讀數(shù)據(jù)504。該計算機可讀數(shù)據(jù)504又包括被配置成根據(jù)這里闡述的原理操作的計算機指令集506。在這方面的一個實施例中,處理器可執(zhí)行指令506可以被配置成實施用于履行客戶端應(yīng)用108的與本地事件105有關(guān)的請求的方法508,比如圖3的示例性方法300。在這方面的另一個實施例中,處理器可執(zhí)行指令506可以被配置成實施用于履行客戶端應(yīng)用108的與本地事件206有關(guān)的請求的系統(tǒng),比如圖4的示例性系統(tǒng)408。該計算機可讀介質(zhì)的一些實施例可以包括計算機可讀存儲介質(zhì)(例如硬盤驅(qū)動器、光盤或閃存設(shè)備),所述計算機可讀存儲介質(zhì)被配置成存儲通過這種方式配置的處理器可執(zhí)行指令。本領(lǐng)域普通技術(shù)人員可以設(shè)想到被配置成根據(jù)這里給出的技術(shù)操作的許多這樣的計算機可讀介質(zhì)。
D、變型
在許多方面可以設(shè)想到這里討論的技術(shù)的變型,并且一些變型可以相對于這些和其他技術(shù)的其他變型給出附加的優(yōu)點和/或減少缺點。此外,一些變型可以被組合實施,并且通過協(xié)同合作,一些組合可以刻畫附加的優(yōu)點和/或減少的缺點。所述變型可以被合并在各個實施例中(例如圖3的示例性方法300和圖4的示例性系統(tǒng)408),以便依據(jù)這樣的實施例給予單獨的和/或協(xié)作的優(yōu)點。
D1、情形
在這些技術(shù)的實施例之間可以有所不同的第一方面涉及可以在其中利用這樣的技術(shù)的情形。
作為該第一方面的第一變型,這里給出的技術(shù)可以與許多類型的設(shè)備402(比如服務(wù)器、服務(wù)器群、工作站、膝上型設(shè)備、平板設(shè)備、移動電話、游戲控制臺以及網(wǎng)絡(luò)器具)一起使用。這樣的設(shè)備402還可以提供多種計算組件,比如有線或無線通信設(shè)備;人類輸入設(shè)備,比如鍵盤、鼠標、觸摸板、觸敏顯示器、麥克風(fēng)以及基于手勢的輸入組件;自動化輸入設(shè)備,比如靜止或運動攝影機、全球定位服務(wù)(GPS)設(shè)備以及其他傳感器;比如顯示器和揚聲器之類的輸出設(shè)備;以及通信設(shè)備,比如有線和/或無線網(wǎng)絡(luò)組件。
作為該第一方面的第二變型,這里給出的技術(shù)可以與各種類型的服務(wù)器102(比如web服務(wù)器、文件服務(wù)器、應(yīng)用服務(wù)器、媒體服務(wù)器、對等共享協(xié)調(diào)服務(wù)器、數(shù)據(jù)庫服務(wù)器、電子郵件服務(wù)器、物理量度監(jiān)測服務(wù)器以及監(jiān)控和數(shù)據(jù)采集(SCADA)自動化服務(wù)器)一起使用。
作為該第一方面的第三變型,這里給出的技術(shù)可以被利用來服務(wù)于執(zhí)行在許多類型的虛擬環(huán)境110內(nèi)的應(yīng)用112,所述虛擬環(huán)境110比如是web瀏覽器、模擬和/或仿真虛擬機、中間件平臺和/或隔離構(gòu)造(isolation construct)。
作為該第一方面的第四變型,這里給出的技術(shù)可以被利用來服務(wù)于許多類型的應(yīng)用112,比如用各種解譯和/或編譯語言編寫的web應(yīng)用、文件共享應(yīng)用、媒體渲染應(yīng)用以及數(shù)據(jù)驅(qū)動的客戶端應(yīng)用。
作為該第一方面的第五變型,這里給出的技術(shù)可以涉及在許多類型的工作者進程主機202內(nèi)執(zhí)行許多類型的工作者進程114。舉例來說,工作者進程114可以包括根據(jù)HTML 5“web工作者”模型執(zhí)行但是在托管應(yīng)用112的web瀏覽器外部的單獨外殼中執(zhí)行的JavaScript腳本??商鎿Q地,工作者進程114可以包括執(zhí)行在設(shè)備104內(nèi)的受管理情境(其中管理運行時間包括工作者進程主機202)中的部分或完全編譯的本機執(zhí)行的應(yīng)用。作為另一種替換方案,工作者進程主機202可以包括被配置成代表執(zhí)行在相同設(shè)備上的web瀏覽器內(nèi)的應(yīng)用112來實施持續(xù)性后臺處理的本地web服務(wù)器。此外,工作者進程114可以包括利用Node.js服務(wù)器側(cè)JavaScript環(huán)境的JavaScript腳本。
作為該第一方面的第六變型,工作者進程114可以代表應(yīng)用112實施許多類型的后臺處理,包括長期運行的計算進程(其中執(zhí)行事件包括計算進程的完成);調(diào)度或定時器進程(其中執(zhí)行事件包括定時器的超時或消逝);持續(xù)地可用的功能,比如守護(daemon)進程(其中執(zhí)行事件包括由執(zhí)行在設(shè)備104上的另一進程調(diào)用該功能);和/或監(jiān)測各種類型的設(shè)備事件116(其中執(zhí)行事件包括所檢測到的設(shè)備事件116的實例,比如檢測到來自設(shè)備104的用戶106的用戶輸入,或者在計算環(huán)境108內(nèi)發(fā)生的硬件或軟件事件,比如接收到移動電話設(shè)備的傳入呼叫或消息)。工作者進程114可以對這樣的設(shè)備事件116應(yīng)用許多類型的處理,比如向應(yīng)用112報告設(shè)備事件116,將設(shè)備事件116的發(fā)生記入日志,或者在設(shè)備事件116的應(yīng)對期間應(yīng)用附加的邏輯。這些和其他情形可以與這里給出的技術(shù)兼容并且可以有利地利用這里給出的技術(shù)。
D2、工作者進程托管
在這里給出的技術(shù)的實施例之間可以有所不同的第二方面涉及在虛擬環(huán)境110外部托管工作者進程114的執(zhí)行的方式。也就是說,在工作者進程114從應(yīng)用112接收到并且在虛擬環(huán)境110的外部執(zhí)行時,可能不利和/或困難的是在沒有某種類型的進程主機的情況下允許工作者進程114在虛擬環(huán)境110外部執(zhí)行,因為這樣可能導(dǎo)致將任意的不受信任的代碼作為本機進程在設(shè)備104的計算環(huán)境108內(nèi)執(zhí)行。相應(yīng)地,雖然與虛擬環(huán)境110分開,但是工作者進程114的執(zhí)行可以由為工作者進程114提供各種類型的托管服務(wù)的工作者主機組件410照管。
作為該第二方面的第一變型,工作者主機組件410可以對工作者進程114應(yīng)用許多形式的托管。作為第一示例,工作者主機組件410還可以為工作者進程114提供虛擬環(huán)境110,只要為工作者進程114提供的虛擬環(huán)境110與為應(yīng)用112提供的虛擬環(huán)境110分開。實際上,為工作者進程114提供的虛擬環(huán)境110可以相當(dāng)類似于為應(yīng)用112提供的虛擬環(huán)境110(例如全部兩個進程都執(zhí)行在web瀏覽器的情境內(nèi)),并且虛擬環(huán)境110的分開允許這里所提供的工作者進程114獨立于應(yīng)用112的生命周期而持續(xù)。此外,為應(yīng)用112提供的第一虛擬環(huán)境110與為工作者進程114提供的第二(分開的)虛擬環(huán)境110之間的相似性可以實現(xiàn)一些便利和高效率;例如對應(yīng)用112應(yīng)用的相同安全性策略可以被應(yīng)用于工作者進程114。舉例來說,在web瀏覽器內(nèi)執(zhí)行的web應(yīng)用常常根據(jù)跨域安全性策略而受到限制,從而例如允許web應(yīng)用只通過因特網(wǎng)與從中接收到所述web應(yīng)用的域進行通信。工作者主機組件410可以根據(jù)被應(yīng)用于執(zhí)行在web瀏覽器內(nèi)的web應(yīng)用并且與工作者進程114相關(guān)聯(lián)的相同跨域安全性策略來限制工作者進程114的執(zhí)行,例如限制工作者進程114使其無法與為設(shè)備104提供應(yīng)用112的域之外的任何域、服務(wù)器或設(shè)備進行通信。
可替換地,工作者主機組件410可以為工作者進程114給出具有不同細節(jié)的不同執(zhí)行模型。這樣的不同之處可以鑒于應(yīng)用112(例如適合于呈現(xiàn)用戶接口的自組織前端代碼的執(zhí)行環(huán)境)和工作者進程114(例如適合于沒有用戶接口的情況下的計算復(fù)雜的長期運行的處理的執(zhí)行環(huán)境)的不同情境來選擇和/或設(shè)計。作為這方面的第一示例,由于工作者進程114可以利用比應(yīng)用112更加計算復(fù)雜的進程,因此工作者主機組件410可以在執(zhí)行之前或期間部分地和/或完全地編譯工作者進程114,從而通過使用代碼優(yōu)化技術(shù)提供更加高性能的執(zhí)行,而應(yīng)用112則可以作為可解譯腳本來執(zhí)行。作為這方面的第二示例,工作者主機組件410可以按照不同于在虛擬環(huán)境110內(nèi)調(diào)度應(yīng)用112的方式在計算環(huán)境108內(nèi)調(diào)度工作者進程114的執(zhí)行。舉例來說,工作者進程114可以被調(diào)度為特別適合于在設(shè)備104的空閑時段期間的長時間相對不受中斷的處理的長期運行的進程,而應(yīng)用112則可以被調(diào)度為高度響應(yīng)但是短暫的代碼調(diào)用集合,比如對于用戶接口事件的響應(yīng)。作為這方面的第三示例,可以為工作者進程114提供不同于應(yīng)用112的應(yīng)用編程接口(API)集合,例如對應(yīng)于工作者進程114的較低層級硬件和網(wǎng)絡(luò)通信模塊以及對應(yīng)于應(yīng)用112的用戶接口類型模塊。作為這方面的第四示例,工作者主機組件410可以給出不同于應(yīng)用112的虛擬環(huán)境110的安全性模型(例如鑒于在虛擬環(huán)境110外部執(zhí)行的工作者進程114的擴展的能力,安全性進程工作者主機組件410可以在執(zhí)行之前和/或期間應(yīng)用更加嚴格的代碼評估以便檢測和阻斷惡意操作)。相反,在其他方面,工作者進程114的安全性模型可以比用于執(zhí)行在虛擬環(huán)境110內(nèi)的應(yīng)用112的安全性模型更加寬松;舉例來說,由于可以通過通信等待時間方面的可接受的增加而更加密切地詳審工作者進程114與其他設(shè)備之間的通信,因此可以不根據(jù)對應(yīng)用112實行的跨域安全性策略來限制工作者進程114。舉例來說,如果設(shè)備104可以訪問執(zhí)行在第二設(shè)備上的遠程進程,則工作者主機組件410可以在接收到針對把執(zhí)行在第二設(shè)備上的遠程進程與工作者進程相連的請求時將所述遠程進程與工作者進程114相連。功能的擴展可以反映出工作者進程114中的比應(yīng)用112更高的信任水平,并且可以視用戶同意而定;例如工作者主機組件410可以向用戶106給出在虛擬環(huán)境110外部發(fā)起工作者進程114的執(zhí)行的提議,并且可以只有在從用戶106接收到對于所述提議的接受的情況下才發(fā)起這樣的執(zhí)行。還可以允許用戶106檢查在相關(guān)聯(lián)的應(yīng)用112終止之后持續(xù)進行的工作者進程114,以及改動其執(zhí)行(例如履行用戶106針對掛起和/或終止工作者進程114的請求)。
通過這些和其他方式,為工作者進程114提供的執(zhí)行模型可以顯著不同于為應(yīng)用112所提供的執(zhí)行模型。作為這方面的第一示例,工作者主機組件410可以包括允許工作者進程114的受管理執(zhí)行的管理運行時間(例如根據(jù)設(shè)備104的架構(gòu)促進存儲器分配和組件訪問請求)。作為這方面的第二示例,工作者主機組件410可以包括布置在設(shè)備104上的本地web服務(wù)器,其為同樣在設(shè)備的web瀏覽器內(nèi)執(zhí)行的web應(yīng)用服務(wù),并且被配置成將工作者進程114作為本地web服務(wù)器進程來執(zhí)行。舉例來說,工作者主機組件410可以被設(shè)計成以本地web服務(wù)器的Node.js服務(wù)器側(cè)腳本化模塊為目標的JavaScript腳本。作為這方面的第三示例,工作者熱組件410可以提供與虛擬環(huán)境110分開執(zhí)行的虛擬機(比如Java虛擬機),以便將工作者進程114的生命周期與應(yīng)用112的生命周期分開。對于這里給出的技術(shù),在由工作者主機組件410為工作者進程114提供的執(zhí)行環(huán)境方面的許多選擇可能是可行的,并且與之兼容。
圖6給出了刻畫在由這里所提供的工作者主機組件410托管工作者進程114方面的幾種變型的示例性情形600的圖示。在該示例性情形600中并且根據(jù)這里給出的技術(shù),設(shè)備104提供執(zhí)行應(yīng)用112的虛擬環(huán)境110,以及代表應(yīng)用112但是在虛擬環(huán)境110外部執(zhí)行工作者進程114的工作者主機組件410。作為這方面的第一實示例,在一些方面中,對于工作者進程114的托管可以與在虛擬環(huán)境110內(nèi)托管應(yīng)用112分享相似性,比如類似的跨域限制策略。舉例來說,如果首先從提供第一服務(wù)(例如web應(yīng)用服務(wù))的服務(wù)器102接收到應(yīng)用112,并且工作者進程114后來發(fā)起與相同的服務(wù)器102的通信,則工作者主機組件410可以允許與提供第一服務(wù)的服務(wù)器102進行通信610。但是如果工作者進程114嘗試發(fā)起與提供第一服務(wù)的服務(wù)器102之外的其他服務(wù)器612所提供的服務(wù)的通信612,則工作者主機組件410可以阻斷616通信612。可替換地或附加地,被應(yīng)用于工作者進程114的安全性策略在相同的或其他方面可以不同于對于應(yīng)用112所實行的安全性策略。舉例來說,在該示例性情形600中,設(shè)備104作為設(shè)備網(wǎng)格602的一部分操作,所述設(shè)備網(wǎng)格602包括由相同的用戶106通過互操作方式來操作的設(shè)備104的集合,例如其中存在大量數(shù)據(jù)共享以便跨多個設(shè)備104為用戶106提供一致的并且無縫的用戶體驗。相應(yīng)地,即使應(yīng)用112不被允許與提供該應(yīng)用112的服務(wù)器102外部的遠程進程606進行通信,工作者進程114也可以被允許與執(zhí)行在設(shè)備網(wǎng)格602內(nèi)的第二設(shè)備604上的遠程進程606進行通信608。
D3、工作者進程的持續(xù)性和彈性
在這些技術(shù)的實施例之間可以有所不同的第三方面涉及工作者進程114的持續(xù)性。除了避免在檢測到應(yīng)用112終止時終止工作者進程114的執(zhí)行之外,這里給出的技術(shù)還可以利用附加的技術(shù)來促進工作者進程114的持續(xù)性和彈性。
作為該第三方面的第一變型,即使不僅應(yīng)用112終止而且虛擬環(huán)境110也終止,工作者主機組件410也可以允許工作者進程114持續(xù)進行(例如不僅在用戶106關(guān)閉托管應(yīng)用112的web頁面之后持續(xù)進行,而且還在web瀏覽器被完全終止并且從存儲器中卸載之后持續(xù)進行)。因此,即使在終止虛擬環(huán)境110時,設(shè)備104仍然可以避免終止工作者進程114。
作為該第三方面的第二變型,即使在工作者主機組件410中發(fā)生故障(例如管理工作者進程114的組件的異常、崩潰或終止),工作者主機組件410仍然可以允許工作者進程114持續(xù)進行。舉例來說,工作者主機組件410可以周期性地記錄執(zhí)行中的工作者進程114及其來源的列表。如果在工作者主機組件410內(nèi)發(fā)生故障,則設(shè)備104可以終止工作者主機組件410,在設(shè)備的計算環(huán)境內(nèi)重新發(fā)起工作者主機組件的執(zhí)行,并且重新發(fā)起在故障發(fā)生時執(zhí)行在工作者主機組件410內(nèi)的工作者進程114的執(zhí)行。
作為該第三方面的第三變型,即使在設(shè)備104的計算環(huán)境108中發(fā)生重大改變,工作者主機組件410甚至仍然可以允許工作者進程114持續(xù)進行。舉例來說,在設(shè)備104的計算環(huán)境108重新啟動(比如重新引導(dǎo))期間可能發(fā)生應(yīng)用112和/或虛擬環(huán)境110的終止。相應(yīng)地,在重新啟動計算環(huán)境108之后,設(shè)備可以在虛擬環(huán)境110外部重新發(fā)起工作者進程114的執(zhí)行。作為這方面的第一示例,設(shè)備104可以存儲工作者進程114并且可以周期性地記錄其狀態(tài),從而在重新啟動計算環(huán)境108之后,設(shè)備104可以利用相對新近的狀態(tài)重新發(fā)起工作者進程114的執(zhí)行。作為這方面的第二示例,如果工作者進程114從服務(wù)接收到和/或保持與之通信,則設(shè)備104可以在重新啟動計算環(huán)境108之后從所述服務(wù)請求第二工作者進程114(例如被配置成根據(jù)第一工作者進程114的狀態(tài)的近來觀察或報告恢復(fù)執(zhí)行的工作者進程114),并且可以在接收到來自所述服務(wù)的第二工作者進程114時在設(shè)備104的虛擬環(huán)境110外部執(zhí)行第二工作者進程114。這樣的持續(xù)性甚至可以允許工作者進程114在不同的設(shè)備104上重新啟動或轉(zhuǎn)移計算環(huán)境108時持續(xù)進行,例如在把工作者進程114轉(zhuǎn)移到用戶106的設(shè)備網(wǎng)格602內(nèi)的第二設(shè)備104時持續(xù)進行。
作為該第三方面的第四變型,可以與應(yīng)用112共享工作者進程114的彈性。舉例來說,除了在終止應(yīng)用112時避免終止工作者進程114之外,工作者主機組件410還可以在檢測到在虛擬環(huán)境110內(nèi)重新發(fā)起應(yīng)用112的執(zhí)行時識別出由該應(yīng)用112在終止之前發(fā)起的任何當(dāng)前正在執(zhí)行的工作者進程114,并且可以將應(yīng)用112與所識別出的工作者進程114重新連接。工作者進程114例如可以向應(yīng)用112通知在該應(yīng)用112的終止時段期間發(fā)生在設(shè)備104上的任何相關(guān)的設(shè)備事件116。用于擴展工作者進程114的持續(xù)性和彈性的這些和其他技術(shù)可以在這里給出的技術(shù)的實施期間設(shè)想到,并且可以與之兼容。
D4、應(yīng)用通知
在這些技術(shù)的實施例之間可以有所不同的第四方面涉及在相關(guān)聯(lián)的工作者進程114實現(xiàn)執(zhí)行事件406時通知應(yīng)用112的方式。
作為該第四方面的第一變型,可以通過許多類型的通知機制來實現(xiàn)對于應(yīng)用112的通知。作為這方面的第一示例,工作者主機組件410可以簡單地把執(zhí)行事件406記入日志,并且應(yīng)用112可以周期性地檢查關(guān)于工作者進程114所實現(xiàn)的執(zhí)行事件406的日志。作為這方面的第二示例,可以通過消息傳遞來實現(xiàn)通知;例如工作者進程114可以生成標識并描述執(zhí)行事件406的執(zhí)行事件通知412,并且虛擬環(huán)境110可以向應(yīng)用112給出執(zhí)行事件通知412。作為這方面的第三示例,可以通過回調(diào)(callback)機制實現(xiàn)通知,其中應(yīng)用112表明在工作者進程114實現(xiàn)執(zhí)行事件406時將要調(diào)用的代碼的存儲器位置。該代碼例如可以包括將在虛擬環(huán)境110內(nèi)執(zhí)行的應(yīng)用112的一部分;將由工作者主機組件410執(zhí)行的工作者進程114的一部分;計算環(huán)境108的函數(shù),比如API調(diào)用;或者單獨的代碼部分,比如移動代理、抽象句法樹或者腳本。
作為該第四方面的第二變型,可以在通知期間將工作者進程114的彈性擴展到應(yīng)用112。作為這方面的第一示例,如果工作者進程114在應(yīng)用112被終止之后實現(xiàn)了執(zhí)行事件406,則設(shè)備104可以作為通知進程的一部分在虛擬環(huán)境110中重新發(fā)起應(yīng)用112,這例如是通過重新加載創(chuàng)建該web工作者的web應(yīng)用的web頁面。作為這方面的第二示例,可以作為通知進程的一部分向用戶106自動呈現(xiàn)應(yīng)用112。舉例來說,在實現(xiàn)執(zhí)行事件406時,設(shè)備104可以將虛擬環(huán)境110和/或應(yīng)用112提升到計算環(huán)境108內(nèi)的前臺呈現(xiàn)(例如把web瀏覽器帶到前臺并且切換到包含應(yīng)用112的標簽)。
圖7給出刻畫了執(zhí)行在設(shè)備104的計算環(huán)境108內(nèi)的持續(xù)性和彈性的工作者進程的示例性情形的圖示。在該示例性情形中,在第一時間點700處,web瀏覽器702(包括計算環(huán)境108內(nèi)的虛擬環(huán)境110)可以從服務(wù)器102接收應(yīng)用112,并且可以在該web瀏覽器702內(nèi)發(fā)起應(yīng)用112的執(zhí)行。這一執(zhí)行可以涉及用于提供某種后臺處理的工作者進程114,其可以由計算環(huán)境108作為本地web服務(wù)器704的服務(wù)器進程來執(zhí)行。此外,本地web服務(wù)器704可以記錄工作者進程114,包括工作者進程114和應(yīng)用112的來源的服務(wù)器102,以及周期性地記錄工作者進程114的狀態(tài)。
在第二時間點706處,可以由用戶106和/或設(shè)備104發(fā)起web瀏覽器702的終止708,并且這樣的終止708可以包括終止執(zhí)行在web瀏覽器702內(nèi)的應(yīng)用112。但是根據(jù)這里給出的技術(shù),通過在web瀏覽器702外部執(zhí)行工作者進程114,即使應(yīng)用112和虛擬環(huán)境110終止708,也允許工作者進程114持續(xù)進行。
在第三時間點710處,計算環(huán)境108也可能經(jīng)歷終止712(例如在設(shè)備104的重新引導(dǎo)期間)。在終止712之后的第四時間點714處,計算環(huán)境108可以被重新啟動。所述重新啟動可以涉及本地web服務(wù)器704的自動重新發(fā)起,其可以檢查在計算環(huán)境108終止712時由本地web服務(wù)器704托管的工作者進程114的記錄。本地web服務(wù)器704隨后可以聯(lián)系服務(wù)器102,并且可以從服務(wù)器102接收716第二工作者進程114(例如與第一時間點700處發(fā)起的工作者進程114完全相同的實例,或者反映出在終止712時的工作者進程114的狀態(tài)的經(jīng)過改動的工作者進程)。因此計算環(huán)境108可以在該計算環(huán)境108重新啟動之后自動重新發(fā)起工作者進程114的執(zhí)行。
在第四時間點718處,可能在計算環(huán)境108內(nèi)發(fā)生設(shè)備事件116(例如針對用戶106的傳入呼叫)。如果工作者進程114與設(shè)備事件116相關(guān)聯(lián)(例如作為工作者進程114的執(zhí)行事件406),則本地web服務(wù)器704可以向工作者進程114通知設(shè)備事件116。此外,工作者進程114可以向應(yīng)用112通知720設(shè)備事件116。附加地,如果應(yīng)用112和/或web瀏覽器702當(dāng)前未在執(zhí)行,則設(shè)備104可以重新發(fā)起web瀏覽器702和/或應(yīng)用112(例如通過在web瀏覽器702內(nèi)重新加載所述頁面),并且附加地,可以把web瀏覽器702帶到計算環(huán)境108內(nèi)的前臺呈現(xiàn)。按照這種方式,通過這里給出的技術(shù)的實行,設(shè)備104可以實現(xiàn)彈性執(zhí)行的工作者進程114,其即使在應(yīng)用112終止時、在虛擬環(huán)境110終止時并且甚至在計算環(huán)境108重新啟動時仍然持續(xù)進行。
E、計算環(huán)境
圖8和后面的討論提供了用以實施這里所闡述的規(guī)定中的一項或更多項的實施例的適當(dāng)計算環(huán)境的簡要的一般性描述。圖8的操作環(huán)境僅僅是適當(dāng)?shù)牟僮鳝h(huán)境的一個示例,而不意圖暗示關(guān)于操作環(huán)境的使用和功能的范圍的任何限制。示例性的計算設(shè)備包括但不限于個人計算機、服務(wù)器計算機、手持式或膝上型設(shè)備、移動設(shè)備(比如移動電話、個人數(shù)字助理(PDA)、媒體播放器等等)、多處理器系統(tǒng)、消費電子裝置、小型計算機、大型計算機、包括任何前述系統(tǒng)或設(shè)備的分布式計算環(huán)境等等。
雖然并無要求,但是在由一個或更多計算設(shè)備執(zhí)行的“計算機可讀指令”的一般情境中描述了實施例。計算機可讀指令可以經(jīng)由計算機可讀介質(zhì)(后面討論)來分發(fā)。計算機可讀指令可以被實施為實施特定任務(wù)或者實施特定抽象數(shù)據(jù)類型的程序模塊,比如函數(shù)、對象、應(yīng)用編程接口(API)、數(shù)據(jù)結(jié)構(gòu)等等。通常來說,在各種環(huán)境中可以按照希望組合或分配計算機可讀指令的功能。
圖8圖示出了包括計算設(shè)備802的系統(tǒng)800的示例,所述計算設(shè)備802被配置成實施這里提供的一個或更多實施例。在一種配置中,計算設(shè)備802包括至少一個處理單元806和存儲器808。取決于計算設(shè)備的確切配置和類型,存儲器808可以是易失性的(例如比如RAM)、非易失性的(例如比如ROM、閃存等等)或者二者的某種組合。這種配置在圖8中由虛線804圖示出。
在其他實施例中,設(shè)備802可以包括附加的特征和/或功能。舉例來說,設(shè)備802還可以包括附加的存儲裝置(例如可移除和/或不可移除的),其中包括但不限于磁性存儲裝置、光學(xué)存儲裝置等等。這樣的附加存儲裝置在圖8中由存儲裝置810圖示出。在一個實施例中,用以實施這里提供的一個或更多實施例的計算機可讀指令可以處于存儲裝置810中。存儲裝置810還可以存儲用以實施操作系統(tǒng)、應(yīng)用程序等等的其他計算機可讀指令。計算機可讀指令可以被加載到存儲器808中以供例如處理單元806執(zhí)行。
這里使用的術(shù)語“計算機可讀介質(zhì)”包括計算機存儲介質(zhì)。計算機存儲介質(zhì)包括通過用于存儲例如計算機可讀指令或其他數(shù)據(jù)之類的信息的任何方法或技術(shù)實施的易失性和非易失性、可移除和不可移除的介質(zhì)。存儲器808和存儲裝置810是計算機存儲介質(zhì)的示例。計算機存儲介質(zhì)包括但不限于RAM、ROM、EEPROM、閃存或其他存儲器技術(shù),CD-ROM、數(shù)字通用盤(DVD)或其他光學(xué)存儲裝置,磁盒、磁帶、磁盤存儲裝置或其他磁性存儲設(shè)備,或者可以被用來存儲所期望的信息并且可以由設(shè)備802訪問的任何其他介質(zhì)。任何這樣的計算機存儲介質(zhì)都可以是設(shè)備802的一部分。
設(shè)備802還可以包括允許設(shè)備802與其他設(shè)備通信的(多個)通信連接816。(多個)通信連接816可以包括但不限于調(diào)制解調(diào)器、網(wǎng)絡(luò)接口卡(NIC)、集成網(wǎng)絡(luò)接口、射頻傳送器/接收器、紅外端口、USB連接或者用于將計算設(shè)備802連接到其他計算設(shè)備的其他接口。(多個)通信連接816可以包括有線連接或無線連接。(多個)通信連接816可以傳送和/或接收通信介質(zhì)。
術(shù)語“計算機可讀介質(zhì)”可以包括通信介質(zhì)。通信介質(zhì)通常在例如載波或其他傳輸機制的“已調(diào)數(shù)據(jù)信號”中具體實現(xiàn)計算機可讀指令或其他數(shù)據(jù),并且包括任何信息遞送介質(zhì)。術(shù)語“已調(diào)數(shù)據(jù)信號”可以包括其一項或更多項特性被設(shè)定或修改成在其中編碼信息的信號。
設(shè)備802可以包括(多個)輸入設(shè)備814,比如鍵盤、鼠標、筆、語音輸入設(shè)備、觸摸輸入設(shè)備、紅外攝影機、視頻輸入設(shè)備和/或任何其他輸入設(shè)備。在設(shè)備802中還可以包括(多個)輸出設(shè)備812,比如一個或更多顯示器、揚聲器、打印機和/或任何其他輸出設(shè)備。(多個)輸入設(shè)備814和(多個)輸出設(shè)備812可以經(jīng)由有線連接、無線連接或其任意組合連接到設(shè)備802。在一個實施例中,來自另一個計算設(shè)備的輸入設(shè)備或輸出設(shè)備可以被用作計算設(shè)備802的(多個)輸入設(shè)備814或(多個)輸出設(shè)備812。
計算設(shè)備802的組件可以通過各種互連(比如總線)相連接。這樣的互連可以包括外圍組件互連(PCI)(比如PCI Express)、通用串行總線(USB)、Firewire(IEEE 1394)、光學(xué)總線結(jié)構(gòu)等等。在另一個實施例中,計算設(shè)備802的組件可以通過網(wǎng)絡(luò)互連。舉例來說,存儲器808可以包括位于通過網(wǎng)絡(luò)互連的不同物理位置的多個物理存儲器單元。
本領(lǐng)域技術(shù)人員將認識到,被利用來存儲計算機可讀指令的存儲設(shè)備可以分布在網(wǎng)絡(luò)上。舉例來說,可經(jīng)由網(wǎng)絡(luò)818訪問的計算設(shè)備820可以存儲用以實施這里所提供的一個或更多實施例的計算機可讀指令。計算設(shè)備802可以訪問計算設(shè)備820,并且下載所述計算機可讀指令的一部分或全部以供執(zhí)行??商鎿Q地,計算設(shè)備802可以下載所需要的計算機可讀指令的片段,或者一些指令可以在計算設(shè)備802處執(zhí)行,并且一些指令可以在計算設(shè)備820處執(zhí)行。
F、術(shù)語的使用
雖然用特定于結(jié)構(gòu)特征和/或方法動作的語言描述了主題內(nèi)容,但是應(yīng)當(dāng)理解的是,在所附權(quán)利要求中限定的主題內(nèi)容不一定受限于前面描述的具體特征或動作。相反,前面描述的具體特征和動作是作為實施權(quán)利要求的示例性形式而公開的。
在本申請中使用的術(shù)語“組件”、“模塊”、“系統(tǒng)”、“接口”等等通常意圖指代與計算機有關(guān)的實體,或者硬件、硬件與軟件的組合、軟件或者執(zhí)行中的軟件。舉例來說,組件可以是但不限于運行在處理器上的進程、處理器、對象、可執(zhí)行程序、執(zhí)行線程、程序和/或計算機。作為說明,運行在控制器上的應(yīng)用和控制器二者都可以是組件。一個或更多組件可以駐留在進程和/或執(zhí)行的線程內(nèi),并且組件可以位于一臺計算機上和/或分布在兩臺或更多臺計算機之間。
此外,所要求保護的主題內(nèi)容可以被實施為利用標準編程和/或工程技術(shù)來產(chǎn)生軟件、固件、硬件或其任意組合以便控制計算機實施所公開的主題內(nèi)容的方法、設(shè)備、或者制造品。這里使用的術(shù)語“制造品”意圖包含可以從任何計算機可讀設(shè)備、載體或介質(zhì)訪問的計算機程序。當(dāng)然,本領(lǐng)域技術(shù)人員將認識到,在不背離所要求保護的主題內(nèi)容的范圍或精神的情況下,可以對這種配置做出許多修改。
這里提供了實施例的各個操作。在一個實施例中,所描述的操作中的一項或更多項可以構(gòu)成存儲在一個或更多計算機可讀介質(zhì)上的計算機可讀指令,在由計算設(shè)備執(zhí)行時,所述計算機可讀指令將使得所述計算設(shè)備實施所描述的操作。據(jù)以描述所述操作中的一些或全部的順序不應(yīng)被解釋為暗示著這些操作一定依賴于順序。受益于本說明書,本領(lǐng)域技術(shù)人員將認識到替換的排序。此外,應(yīng)當(dāng)理解的是,并非所有操作都必然存在于這里提供的每一個實施例中。
此外,這里使用的“示例性”一詞意為充當(dāng)示例、示例或說明。在這里被描述為“示例性”的任何方面或設(shè)計不一定被解釋為比其他方面或設(shè)計更有利。相反,使用“示例性”一詞是意圖以具體的方式呈現(xiàn)概念。本申請中所使用的術(shù)語“或者”意圖意味著包含性的“或者”而不是互斥性的“或者”。也就是說,除非另行指明或者從上下文明顯看出,否則“X采用A或B”意圖意味著自然的包含性排列中的任何一個。也就是說,如果X采用A;X采用B;或者X采用A和B二者,則“X采用A或B”在任何前述實例下都被滿足。此外,除非另行指明或者從上下文中明顯看出是針對單數(shù)形式,否則用在本申請和所附權(quán)利要求書中的冠詞“一個”和“某一”通??梢员唤忉尀橐馕吨耙粋€或更多個”。
此外,雖然關(guān)于一種或更多種實現(xiàn)方式示出并描述了本公開內(nèi)容,但是基于閱讀并理解本說明書和附圖,本領(lǐng)域其他技術(shù)人員將會想到等效的更改和修改。本公開內(nèi)容包括所有這樣的修改和更改,并且僅由后面的權(quán)利要求書的范圍來限制。特別關(guān)于由前面描述的組件(例如元件、資源等等)所實施的各項功能,被用來描述這樣的組件的術(shù)語意圖對應(yīng)于(除非另行表明)實施所描述組件的指定功能的任何組件(例如其在功能上等效),盡管其在結(jié)構(gòu)上并不等效于在本公開內(nèi)容的這里說明的示例性實現(xiàn)方式中實施所述功能的所公開的結(jié)構(gòu)。此外,雖然本公開內(nèi)容的特定特征可能是關(guān)于幾種實現(xiàn)方式當(dāng)中的僅僅一種公開的,但是這樣的特征可以與其他實現(xiàn)方式的一項或更多項其他特征組合,這可能對于任何給定或特定應(yīng)用而言是所期望并且有利的。此外,就在具體實施方式部分或權(quán)利要求書中使用術(shù)語“包括”、“具有”、“含有”、“帶有”或其變型而言,這樣的術(shù)語意圖按照與術(shù)語“包括”類似的方式進行包含。