TWI573075B - 持續及有彈性之工作處理 - Google Patents

持續及有彈性之工作處理 Download PDF

Info

Publication number
TWI573075B
TWI573075B TW102106712A TW102106712A TWI573075B TW I573075 B TWI573075 B TW I573075B TW 102106712 A TW102106712 A TW 102106712A TW 102106712 A TW102106712 A TW 102106712A TW I573075 B TWI573075 B TW I573075B
Authority
TW
Taiwan
Prior art keywords
application
work process
execution
virtual environment
work
Prior art date
Application number
TW102106712A
Other languages
English (en)
Other versions
TW201349118A (zh
Inventor
阿卡斯布萊斯阿圭拉Y
菲圖西韓
艾柏特約翰丹尼爾
史列辛格班尼
亞里夫宜朗
Original Assignee
微軟技術授權有限責任公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 微軟技術授權有限責任公司 filed Critical 微軟技術授權有限責任公司
Publication of TW201349118A publication Critical patent/TW201349118A/zh
Application granted granted Critical
Publication of TWI573075B publication Critical patent/TWI573075B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution

Description

持續及有彈性之工作處理
本發明係關於持續且有彈性之工作處理。
在計算領域中,許多情形涉及:在裝置的虛擬環境中執行應用程式,諸如在web瀏覽器中執行之web應用程式;針對與裝置提供的計算環境不同的計算環境而開發之程式碼(例如,針對Java虛擬機設計之Java程式碼);及在隔離之虛擬機中執行的不受信任程式碼。在虛擬機中而非作為裝置之原生處理執行應用程式可促進應用程式在執行期間之相容性及安全性。
此些應用程式通常涉及背景處理,諸如執行時間長、計算密集之處理。舉例而言,應用程式可尋求監控裝置之硬體組件以發現特定類型之事件,諸如行動電話上之來話。然而,若藉由應用程式來執行此種處理,則應用程式之其他職責可能被不當地延遲;例如,計算密集之處理可能優先於圖形使用者介面(GUI)訊息之處置,且可能導致應用程式呈現降低之互動或效能。為了達成此種背景處理同時減少應用程式之其他處理職責的中斷,應用程式可調用虛擬環境中 之一或更多個工作處理。舉例而言,超文字標記語言(HTML)之新近版本中提供的「web工作者」模型使得應用程式能夠請求web瀏覽器在web瀏覽器中起始單獨的工作處理,因此以安全且高效能的方式達成代表該應用程式之背景處理。
提供此「發明內容」而以簡化方式介紹概念選擇,該等概念在下文中於「實施方式」中進一步描述。此「發明內容」並不意欲識別所主張標的物之關鍵因素或基本特徵,亦不意欲用以限制所主張標的物之範疇。
儘管代表在虛擬環境中執行的應用程式的工作處理之執行個體化提供一些優勢,但亦在虛擬環境中執行彼等工作處理的模型可能提供顯著的缺點。作為第一實例,「web工作者」模型通常將web工作者的生命週期耦合到web應用程式的生命週期;亦即,當web應用程式暫停或終止(諸如藉由關閉代管web應用程式之頁面)時,web工作者亦被終止。工作處理亦可在終止代管工作處理之虛擬環境(例如,關閉web瀏覽器)時及/或在重新起動裝置之計算環境(例如,暫停或重新啟動裝置之作業系統)時被終止。在一些情形中,可能希望使工作處理的生命週期與應用程式及/或虛擬環境之生命週期相關聯。然而,在其他情形中,可能希望使得工作處理能夠在此些事件後持續,及/或在諸如作業系統重新啟動之裝置事件期間持續。
本文中呈現用於擴展代表應用程式而在虛擬環境(諸如web瀏覽器或虛擬機)中執行的工作處理的彈性的 技術。根據此些技術,並非在虛擬環境中執行工作處理,而是裝置可在虛擬環境外執行工作處理。當終止應用程式及/或虛擬環境時,裝置可抑制終止工作處理,從而將工作處理之生命週期與應用程式之生命週期分開。視情況,工作處理亦可經配置以在源自虛擬系統外部的潛在中斷事件(諸如代管工作處理的處理中的錯誤或作業系統重新啟動)期間持續。當工作處理達成執行事件(例如,完成複雜的計算處理或偵測到特定類型的裝置事件)時,可通知在虛擬環境中執行的應用程式(視情況,若應用程式當前未執行,則重新起始應用程式)以便滿足由工作處理達成的執行事件的處置。藉由將工作處理的執行與應用程式在虛擬環境中的執行去耦,本文中所呈現的技術可擴展可由虛擬環境中的應用程式達成的背景處理之彈性及能力。
為實現前述及相關目的,以下描述及附圖闡述某些說明性態樣及實施方案。此等說明性態樣及實施方案僅說明可使用一或更多個態樣的各種方式中之少數方式。當結合附圖考慮時,將自以下詳細描述明白本發明之其他態樣、優勢及新穎特徵。
100‧‧‧例示性情形
102‧‧‧伺服器
104‧‧‧裝置
106‧‧‧使用者
108‧‧‧計算環境
110‧‧‧虛擬環境
112‧‧‧應用程式
114‧‧‧工作處理
116‧‧‧裝置事件
118‧‧‧裝置事件監控
120‧‧‧裝置事件通知
200‧‧‧例示性情形
202‧‧‧工作處理主機
300‧‧‧例示性方法
400‧‧‧例示性情形
402‧‧‧裝置
404‧‧‧處理器
406‧‧‧執行事件
408‧‧‧例示性系統
410‧‧‧工作者主機組件
412‧‧‧執行事件通知
500‧‧‧實施方案
502‧‧‧電腦可讀媒體
504‧‧‧電腦可讀資料
506‧‧‧電腦指令
508‧‧‧方法
600‧‧‧例示性情形
602‧‧‧裝置網
604‧‧‧第二裝置
606‧‧‧遠端處理
612‧‧‧伺服器
700‧‧‧第一時間點
702‧‧‧web瀏覽器
704‧‧‧本機web伺服器
706‧‧‧第二時間點
710‧‧‧第三時間點
714‧‧‧第四時間點
800‧‧‧系統
802‧‧‧計算裝置
804‧‧‧虛線
806‧‧‧處理單元
808‧‧‧記憶體
810‧‧‧儲存器
812‧‧‧輸出裝置
814‧‧‧輸入裝置
816‧‧‧通訊連接
818‧‧‧網路
820‧‧‧計算裝置
第1圖為在web瀏覽器中執行代表web應用程式的工作處理的例示性情形的說明。
第2圖為根據本文呈現的技術執行代表應用程式的工作處理的例示性情形之說明。
第3圖為根據本文呈現的技術配置裝置以滿足與 本機事件有關的用戶端應用程式之請求的例示性方法之說明。
第4圖為說明根據本文呈現的技術用於滿足與本機事件有關的用戶端應用程式之請求的例示性系統之組件方塊圖。
第5圖為包含經配置以體現本文闡述之提供態樣中之一或多者的處理器可執行指令的例示性電腦可讀媒體之說明。
第6圖為根據本文呈現的技術在裝置網中的裝置上執行應用程式之工作處理的例示性情形之說明,其中該工作處理可試圖與應用程式之伺服器、另一伺服器及該裝置網中之另一裝置的遠端處理通訊。
第7圖為根據本文呈現的技術演示代表在虛擬環境中執行之應用程式的持續性工作處理之執行的例示性情形之說明。
第8圖說明可實施本文闡述的提供態樣中之一或多者的例示性計算環境。
現參考圖式描述所主張標的物,其中貫穿各圖式,相同元件符號用以指代相同元件。在以下描述中,為達成解釋之目的,闡述眾多特定細節以便提供對所主張標的物之透徹理解。然而,可顯而易見,可在無此等特定細節的情況下實踐所主張標的物。在其他情況下,以方塊圖形式展示結構及裝置,以便促進描述所主張標的物。
A.簡介
在計算領域中,許多情形涉及在虛擬環境而非在裝置的原生計算環境中執行裝置上的應用程式。作為第一實例,web瀏覽器可提供用於執行諸如JavaScript及超文字標記語言(HTML)內容之獨立於裝置的程式碼的標準化平臺。作為第二實例,Java虛擬機(JVM)可在通用計算裝置與代表Java應用程式的裝置的原生能力之間提供橋接(例如,將通用記憶體分配請求轉譯成裝置之記憶體模型)。作為第三實例,經設計用於第一裝置的原生環境的程式碼可經由仿真器而完全在第二裝置上執行,該仿真器提供在第二裝置內對第一裝置的模仿。作為第四實例,不受信任程式碼可在「沙箱(sandbox)」或人工機器(artificial machine)內執行,使得可將惡意操作與人工機器隔離,且可藉由裝置評估不受信任程式碼對人工裝置的影響,而不必冒著損害裝置之風險。
此等及其他情形提供應用程式在虛擬環境中之執行。在許多此種情形中,應用程式可能涉及一些將以高效能方式處置之前景職責;例如,呈現圖形使用者介面(GUI)的應用程式可經設計而以高度回應性滿足與視覺控制的互動,因為即使小的延遲亦會被使用者注意到。此些應用程式亦可能涉及可以更寬鬆方式執行的廣泛背景處理,諸如執行時間長的計算、待在閒置時間期間執行的維護任務及監控裝置之事件。
為了平衡對前景處理與背景處理兩者之處置,虛擬環境及應用程式可提供諸如優先式多工作業(preemptive multitasking)之技術,其中應用程式可指定各別任務之優先級。然而,此些技術對於排程應用程式中涉及的多種處理任務可能並不完全適合。作為第一此種實例,可能並不可能或不能有效地優先於一些類型的背景處理(例如,涉及資源的排他性鎖定之背景處理)以便處置前景處理。作為第二此種實例,若背景處理涉及監控裝置事件,則此背景處理之中斷可能導致不能偵測到此些裝置事件。
鑒於此等困難,一些虛擬環境准許應用程式起始在虛擬環境中之單獨工作處理。藉由將工作處理與應用程式之執行線程分開,虛擬環境可利用計算環境(例如,由作業系統提供之更複雜的優先式排程器)及/或裝置之計算硬體(例如,工作處理及應用程式線程在多處理器裝置之不同處理器上,或在多核心處理器之不同核心上的同時執行)的同時處理能力。此外,工作處理在與應用程式相同之虛擬環境中的執行可提供安全優勢(例如,對工作處理應用與應用程式相同之安全策略)及/或效率優勢(例如,實現應用程式與工作處理作為虛擬環境中之同級節點之緊密耦合)。
第1圖呈現使用者106之裝置104呈現包含虛擬環境110(例如,web瀏覽器)的計算環境108(例如,作業系統)的例示性情形100的說明。裝置104可與一或更多個伺服器102(例如,web伺服器)通訊,且可擷取將代表使用者106而執行的一或更多個應用程式112(例如,由使用者106請求的web頁面中所嵌入的web應用程式)。裝置104因此可起始應用程式112在虛擬環境110中之執行。此外, 虛擬環境110可經配置以使得應用程式112能夠請求工作處理114(諸如將代表應用程式112而執行的背景維護任務)之執行,但並不中斷應用程式112對前景處理之執行。虛擬環境110因此可起始工作處理114在虛擬環境110中與應用程式112一起之執行。舉例而言,工作處理114可請求被通知各種裝置事件116,諸如經由諸如電話之行動通訊裝置接收的來話或簡訊。裝置104可在計算環境108中應用一些裝置事件監控118,且在偵測到裝置事件116時,可將裝置事件通知120遞送至在虛擬環境110中的工作處理114。以此方式,裝置104可使得應用程式112能夠調用在虛擬環境110中的工作處理114以達成各種類型之背景處理而不中斷應用程式112之前景處理。可瞭解,第1圖之例示性情形100中所說明的模型準確地描述了超文字標記語言(HTML)之最新版本中所呈現的「web工作者」模型,其中JavaScript腳本可調用在web瀏覽器中與該腳本一起執行的「web工作者」處理中的背景處理。
儘管第1圖之例示性情形100中呈現之架構可提供一些優勢,但可瞭解,該架構亦可能引起一些缺點。詳言之,工作處理114在虛擬環境110中與應用程式112一起執行在某些方面可能係有缺點的。舉例而言,在一些情形中,可能需要將工作處理114與應用程式112之壽命週期相耦合,使得應用程式112之暫停或終止亦導致工作處理114之暫停或終止。然而,在其他情形中,可能希望使應用程式112與工作處理114解耦。舉例而言,工作處理114可能包含使 用者106可能希望完成的執行時間長的處理,但使用者106可能不希望在虛擬環境110中保留應用程式112(例如,使用者106可能有意地或無意地巡覽離開代管web應用程式之web頁面,因此引起與該web應用程式相關聯之web工作者之終止)。作為另一實例,使用者106可能希望工作處理114無限地持續,諸如裝置104上產生的特定類型的裝置事件116之處理常式(例如,在接收到簡訊或傳入電話呼叫時通知使用者106之通知處理)。此外,在一些情形中,可能希望使得工作處理114不僅在應用程式112暫停或終止之後持續,而且在虛擬環境110暫停或終止之後(例如,在使用者106完全終止web瀏覽器之後)持續及/或在計算環境108中斷之後(例如,在重新開機或以其他方式重啟裝置104之後)持續。然而,嚴格地涉及將工作處理114之生命週期與應用程式112之生命週期相耦合的模型可能不能夠提供此些持續且有彈性之工作處理114。
B.所呈現之技術
本文中呈現用於改良代表在虛擬環境中執行的應用程式112而執行的工作處理114之持續性及/或彈性的技術。根據此等技術(且與諸如在第1圖之例示性情形100中說明的技術之其他技術形成對比),不是在虛擬環境110中執行工作處理114,而是裝置104可執行代表應用程式112但在虛擬環境110外之工作處理114。此外,當裝置終止應用程式112時(例如,臨時或無限期地暫停應用程式112,或在完成或中止應用程式112之執行時),裝置104可抑制終止 與應用程式112相關聯之一或多個工作處理114。以此方式,裝置104可使得能夠執行持續工作處理114,從而繼續服務應用程式112之計算處理,即使當應用程式112當前並未執行時亦如此。
第2圖呈現本文呈現之技術的例示性應用之例示性情形200的說明。在此例示性情形200中,裝置104再次包含包括虛擬環境110的計算環境108,其中可執行自伺服器102接收之應用程式112(例如,自web伺服器接收且在web瀏覽器中執行的web應用程式)。應用程式112可請求一些背景處理,且虛擬環境110可藉由起始代表應用程式112之工作處理114而遵從該請求。然而,根據本文呈現之技術,工作處理114可藉由工作處理主機202而在虛擬環境110外執行,工作處理主機202可獨立於藉由虛擬環境110對應用程式112之生命週期及資源請求的管理而管理工作處理114之生命週期及資源請求。詳言之,在偵測到應用程式112終止時,裝置工作處理主機202可抑制終止工作處理114;亦即,工作處理114之生命週期可與應用程式112之生命週期分開且獨立於應用程式112之生命週期而管理工作處理114之生命週期。工作處理主機202亦可使得工作處理114能夠在工作處理114達成執行事件時通知應用程式112。舉例而言,由工作處理114執行之背景處理可涉及偵測用戶端裝置事件116,諸如來自行動電話之來話。裝置可利用一些裝置事件監控118來偵測代表工作處理114的裝置事件116,且可在偵測到此種裝置事件116時將裝置事件通知120遞送至工作 處理114。值得注意的是,當工作處理114正操作時,此偵測及遞送可能成功地完成,即使應用程式112當前並未執行(且,視情況,即使虛擬環境110並未在裝置104上執行)亦如此。此外,工作處理主機202可促進工作處理114向應用程式112通知裝置事件116(例如,若應用程式112及/或虛擬環境110當前並未執行,則裝置104可重新起始應用程式112及/或虛擬環境110,或可簡單地將裝置事件通知120排入佇列,直至此等處理稍後由使用者106重新起始)。以此方式,裝置104獨立於應用程式112之執行而達成工作處理114之持續執行。可經由第2圖之例示性情形200中所說明的架構及本文呈現之技術達成此等及其他優勢。
C.例示性實施例
圖3呈現本文呈現之技術的第一例示性實施例,該實施例說明為執行代表在裝置104之虛擬環境110中執行的應用程式112之處理的例示性方法300。例示性方法300可實施為例如一組指令,該組指令儲存於裝置之記憶體組件(諸如記憶體電路、硬碟機之磁盤(platter)、固態儲存裝置或磁碟或光碟)中,且經組織使得當在裝置之處理器上執行該組指令時,使得裝置根據本文呈現之技術而操作。例示性方法300在302處開始,且涉及在裝置之處理器上執行304指令。特定言之,此等指令可經配置以在自應用程式112接收到執行工作處理114(涉及執行事件)之請求時,起始306工作處理114在虛擬環境110外的執行。該等指令亦經配置以在偵測到應用程式112之終止時抑制308終止工作處理 114。該等指令亦經配置以在工作處理114達成執行事件時,向應用程式112通知310工作處理114之執行事件。已完成代表應用程式112之處理後,例示性方法300呈現根據本文呈現之技術之代表應用程式112之工作處理114的執行,且因此在312處結束。
圖4呈現本文呈現之技術的第二例示性實施例,該實施例說明為例示性系統408經配置以執行代表在裝置104之虛擬環境110中的應用程式的處理的例示性情形400。例示性系統408可實施為例如指令,該等指令儲存於裝置402之記憶體組件中,且經配置以在於裝置402之處理器404上執行時使得裝置402根據本文呈現之技術而操作。例示性系統408包含虛擬環境110,在虛擬環境110中,至少一應用程式112正在裝置104上執行。例示性系統408亦包含工作者主機組件410,工作者主機組件410於虛擬環境110外在裝置104上執行,且經配置以在自應用程式112接收到執行工作處理114(涉及執行事件406)之請求時,起始工作處理114在虛擬環境110外之執行。工作者主機組件410經進一步配置以在偵測到應用程式112之終止時抑制終止工作處理114;且在工作處理114達成執行事件406時,向應用程式112通知工作處理114之執行事件406。以此方式,例示性系統408根據本文呈現之技術達成代表在裝置402之虛擬環境110中執行的應用程式112之工作處理114的執行。
又一實施例涉及一種電腦可讀媒體,該電腦可讀媒體包含經配置以應用本文呈現之技術的處理器可執行指 令。此種電腦可讀媒體可包括例如涉及有形裝置的電腦可讀儲存媒體,諸如記憶體半導體(例如,利用靜態隨即存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)及/或同步動態隨機存取記憶體(SDRAM)技術的半導體)、硬碟機之磁盤、快閃記憶體裝置或磁碟或光碟(諸如CD-R、DVD-R或軟碟),該電腦可讀儲存媒體編碼一組電腦可讀指令,該組電腦可讀指令在由裝置之處理器執行時使得裝置實施本文呈現之技術。此種電腦可讀媒體亦可包括(作為與電腦可讀儲存媒體不同的一類技術)各種類型的通訊媒體,諸如可經由各種物理現象及在各種有線情形(例如,經由乙太網路或光纖纜線)及/或無線情形(例如,無線區域網路(WLAN),諸如WiFi,個人區域網路(PAN),諸如藍牙,或蜂巢式或無線電網路)中傳播的信號(例如,電磁信號、聲波信號或光學信號),且該通訊媒體編碼一組電腦可讀指令,該組電腦可讀指令在由裝置處理器執行時使得裝置實施本文呈現之技術。
第5圖中說明可以此等方式設計之例示性電腦可讀媒體,其中實施方案500包含電腦可讀媒體502(例如,CD-R、DVD-R或硬碟機之磁盤),電腦可讀媒體502上編碼有電腦可讀資料504。此電腦可讀資料504又包含一組經配置以根據本文闡述之原理操作的電腦指令506。在一個此種實施例中,處理器可執行指令506可經配置以執行滿足用戶端應用程式108之與本機事件105有關的請求的方法508,諸如圖3之例示性方法300。在另一此種實施例中,處理器可執行指令506可經配置以實施用於滿足用戶端應用程式108之與本 機事件206有關的請求的系統,諸如圖4之例示性系統408。此電腦可讀媒體之一些實施例可包含電腦可讀儲存媒體(例如,硬碟機、光碟或快閃記憶體裝置),該電腦可讀儲存媒體經配置以儲存以此方式配置之處理器可執行指令。許多此種電腦可讀媒體可由一般熟習此項技術者設計,該電腦可讀媒體經配置以根據本文呈現之技術而操作。
D.變化
本文論述之技術可在許多態樣中設計有變化,且一些變化可呈現額外優勢及/或與此等及其他技術的其他變化相比減少不足。此外,一些變化可組合地實施,且一些變化可經由協作以額外優點及/或減少之缺點為特徵。該等變化可併入於各種實施例(例如,第3圖之例示性方法300及第4圖之例示性系統408)中以給予此等實施例個別及/或協同之優勢。
D1.情形
可在此等技術之實施例之間變化的第一態樣係關於可利用此些技術之情形。
作為此第一態樣之第一變化,本文呈現之技術可用於許多類型的裝置402,諸如伺服器、伺服器組、工作站、膝上型電腦、平板電腦、行動電話、遊戲控制臺及網路設施。此等裝置402亦可提供多種計算組件,諸如有線或無線通訊裝置;人輸入裝置,諸如鍵盤、滑鼠、觸控板、觸敏式顯示器、麥克風及基於手勢的輸入組件;自動輸入裝置,諸如靜態或動作相機、全球定位服務(GPS)裝置,及其他感測器;輸 出裝置,諸如顯示器及揚聲器;及通訊裝置,諸如有線及/或無線網路組件。
作為此第一態樣之第二變化,本文呈現之技術可用於各種類型之伺服器102中,諸如web伺服器、檔案伺服器、應用伺服器、媒體伺服器、同級間共享協調伺服器、資料庫伺服器、電子郵件伺服器、物理度量監控伺服器及監控與資料獲取(SCADA)自動化伺服器。
作為此第一態樣之第三變化,本文呈現之技術可用於服務在許多類型的虛擬環境110中執行的應用程式112,諸如web瀏覽器、模擬及/或仿真虛擬機、中間軟體平臺及/或隔離構造。
作為此第一態樣之第四變化,本文呈現之技術可用於服務許多類型的應用程式112,諸如以各種解譯及/或編譯語言撰寫之web應用程式、檔案共享應用程式、媒體再現應用程式及資料驅動用戶端應用程式。
作為此第一態樣之第五變化,本文呈現之技術可涉及在許多類型的工作處理主機202中執行許多類型的工作處理114。舉例而言,工作處理114可包含根據HTML 5「web工作者」模型執行的JavaScript腳本,但該JavaScript腳本係在代管應用程式112之web瀏覽器外的單獨殼層(shell)中執行。或者,工作處理114可包含部分或完全編譯的且原生地執行的應用程式,該應用程式在裝置104內之被管理上下文(其中管理執行時間包含工作處理主機202)中執行。作為另一替代例,工作處理主機202可包含本機web伺服器,該web 伺服器經配置以執行代表在同一裝置上之web瀏覽器中執行的應用程式112之持續背景處理。此外,工作處理114可包含利用Node.js伺服器側JavaScript環境之JavaScript腳本。
作為此第一態樣之第六變化,工作處理114可執行代表應用程式112之許多類型的背景處理,包括執行時間長的計算處理(且其中執行事件包含計算處理之完成);排程或計時器處理(且其中執行事件包含計時器之逾時或時間消逝);持續可用之功能性,諸如常駐程式處理(且其中執行事件包含在裝置104上執行的另一處理對功能性的調用);及/或監控各種類型的裝置事件116(且其中執行事件包含裝置事件116的偵測到的執行個體,諸如偵測到來自裝置104的使用者106的使用者輸入,或在計算環境108中出現的硬體或軟體事件,諸如接收到行動電話裝置之來話或簡訊)。工作處理114可對此些裝置事件116應用許多類型的處理,諸如將裝置事件116報告給應用程式112、記錄裝置事件116之發生,或在裝置事件116之處置期間應用額外邏輯。此等及其他情形可與本文呈現之技術相容,且可有利地利用本文呈現之技術。
D2.工作處理代管
可在本文呈現之技術實施例之間變化的第二態樣涉及代管在虛擬環境110外執行工作處理114之方式。亦即,當工作處理114自應用程式112接收到且在虛擬環境110外執行時,在無某一類型之處理主機的情況下允許工作處理114在虛擬環境110外執行可能有缺點及/或困難,因為此情 形可導致在裝置104之計算環境108中作為原生處理執行任意且不受信任的程式碼。因此,儘管與虛擬環境110分開,但工作處理114之執行可由工作者主機組件410來料理,從而為工作處理114提供各種類型之代管服務。
作為此第二態樣之第一變化,工作者主機組件410可對工作處理114應用許多形式之代管。作為第一實例,工作者主機組件410亦可為工作處理114提供虛擬環境110,只要為工作處理114提供之虛擬環境110與為應用程式112提供之虛擬環境110分開即可。事實上,為工作處理114提供的虛擬環境110可極類似於為應用程式112提供之虛擬環境110(例如,兩處理皆可在web瀏覽器之上下文中執行),且虛擬環境110之分開實現如本文所提供的、獨立於應用程式112之生命週期的工作處理114之持續性。此外,為應用程式112提供之第一虛擬環境110與為工作處理114提供之第二(分開的)虛擬環境110之間的類似性可實現一些便利性及有效性;例如,應用於應用程式112之相同安全策略可應用於工作處理114。舉例而言,根據跨域安全策略而常常限制在web瀏覽器中執行的web應用程式,從而例如使得web應用程式僅能夠經由網際網路與從其接收web應用程式的域通訊。工作者主機組件410可根據應用於在web瀏覽器中執行且與工作處理114相關聯的web應用程式的相同的跨越安全策略來限制工作處理114之執行,例如,限制工作處理114與任何域、伺服器或在已將應用程式112提供至裝置104之域外部的裝置通訊。
或者,工作者主機組件410可以不同細節向工作處理114呈現不同執行模型。此些差異可鑒於應用程式112(例如,適於呈現使用者介面之特用(ad hoc)前端程式碼的執行環境)及工作處理114(例如,適於在計算複雜、執行時間長的處理而無使用者介面的執行環境)之不同上下文來加以選擇及/或設計。作為第一此種實例,因為工作處理114可利用比應用程式112計算更複雜的處理,因此工作者主機組件410可在執行之前或執行期間部分地及/或完全編譯工作處理114,因此經由使用程式碼最佳化技術而提供更具效能的執行,而應用程式112可作為可解譯腳本執行。作為第二此種實例,工作者主機組件410可與在虛擬環境110中排程應用程式112不同的方式在計算環境108中排程工作處理114之執行。舉例而言,工作處理114可被排程為特別適於在裝置104之閒置週期期間相對無中斷的長處理的執行時間長的處理,而應用程式112可排程為一組具有高度回應性但生命短的程式碼調用,諸如回應於使用者介面事件的調用。作為第三此種實例,可向工作處理114提供一組與應用程式112不同之應用程式化介面(APIs),例如為工作處理114提供低水平硬體及網路通訊模組,且為應用程式112提供使用者介面型模組。作為第四此種實例,工作者主機組件410可呈現與應用程式112之虛擬環境110不同的安全模型(例如,鑒於在虛擬環境110外執行的工作處理114的擴展能力,工作者主機組件410的安全處理可在執行之前及/或執行期間應用更嚴格的程式碼評估,以偵測及阻斷惡意操作)。相反,在其他 方面,工作處理114之安全模型可比在虛擬環境110中執行之應用程式112更寬鬆;例如,因為工作處理114與其他裝置之間的通訊與通訊延遲的可接受增加更緊密相關,因此並不根據應用於應用程式112之跨域安全策略而限制工作處理114。舉例而言,在裝置104可由在第二裝置上執行的遠端處理存取之情況下,工作者主機組件410可在接收到將在第二裝置上執行的遠端處理與該工作處理連接之請求時將遠端處理與工作處理114相連接。功能性的擴展可反映對工作處理114比對應用程式112之更高水平信任,且可能取決於使用者同意與否;例如,工作者主機組件410可向使用者106呈現起始在虛擬環境110外執行工作處理114之提議(offer),且僅在接收到來自使用者106之對該提議的接受時才可起始此執行。亦可准許使用者106檢查工作處理114在終止相關聯之應用程式112之後是否持續,且准許改變工作處理114的執行(例如,滿足使用者106暫停及/或終止工作處理114之請求)。
以此等及其他方式,為工作處理114提供之執行模型可與為應用程式112提供之執行模型顯著不同。作為第一此種實例,工作者主機組件410可包含實現工作處理114之被管理執行的管理執行時間(例如,促進根據裝置104之架構的記憶體分配及組件存取請求)。作為第二此種實例,工作者主機組件410可包含本機web伺服器,該本機web伺服器部署於裝置104上服務於web應用程式,該web應用程式亦執行於裝置之web瀏覽器中且經配置以作為本機web伺 服器處理執行工作處理114。舉例而言,工作者主機組件410可設計為針對本機web伺服器之Node.js伺服器側腳本模組的JavaScript腳本。作為第三此種實例,工作者主機組件410可提供虛擬機,諸如Java虛擬機,該虛擬機與虛擬環境110分開執行以便將工作處理114之生命週期與應用程式112之生命週期分開。由工作者主機組件410提供給工作處理114的執行環境之許多選擇可用於本文呈現之技術且與該等技術相容。
第6圖呈現由本文提供之工作者主機組件410代管工作處理114中的若干變化的例示性情形600的說明。在此例示性情形600中且根據本文呈現之技術,裝置104提供執行應用程式112之虛擬環境110以及執行代表應用程式112但在虛擬環境110外的工作處理114的工作者主機組件410。作為第一此種實例,在一些方面,對工作處理114的代管可與對虛擬環境110中的應用程式112的代管具有若干類似性,諸如類似的跨域限制策略。舉例而言,若首先自提供第一服務(例如,web應用服務)之伺服器102接收應用程式112,且工作處理114稍後起始與同一伺服器102之通訊610,則工作者主機組件410可准許與提供該第一服務之伺服器102的通訊610。然而,若工作處理114試圖起始與由與提供第一服務之伺服器102不同的伺服器612提供的服務之通訊612,則工作者主機組件410可阻斷616通訊612。替代地或此外,應用於工作處理114之安全策略可在同一方面或其他方面與應用於應用程式112之安全策略不同。舉例而言,在 此例示性情形600中,裝置104作為包含由同一使用者106以互操作方式操作之一組裝置104的裝置網602的一部分而操作,裝置網602例如具有廣泛的資料共用以便跨越多個裝置104向使用者106提供一致且順暢的使用者體驗。因此,可准許工作處理114與在裝置網602中之第二裝置604上執行的遠端處理606通訊608,即使不准許應用程式112與在提供應用程式112之伺服器102外的遠端處理606通訊亦如此。
D3.工作處理持續性及彈性
可在此等技術之各實施例之間變化的第三態樣涉及工作處理114之持續性。除了在偵測到應用程式112之終止時抑制終止工作處理114之執行之外,本文呈現之技術亦可利用額外技術來促進工作處理114之持續性及彈性。
作為此第三態樣之第一變化,工作者主機組件410亦可使得工作處理114能夠在不僅應用程式112而且虛擬環境110終止的情況下仍持續(例如,不只是在使用者106關閉代管應用程式112之web頁面之後持續,而且在web瀏覽器完全終止且自記憶體卸載之後仍持續)。因此,裝置104可甚至在終止虛擬環境110時抑制終止工作處理114。
作為此第三態樣之第二變化,工作者主機組件410可使得工作處理114能夠在工作者主機組件410中發生錯誤時仍能夠持續(例如,管理工作處理114之組件的異常、損毀或終止)。舉例而言,工作者主機組件410可定期記錄執行中的工作處理114及工作處理114的來源之清單。若錯誤發生於工作者主機組件410中,則裝置104可終止工作者 組件組件410,重新起始工作者主機組件在裝置之計算環境中的執行,且重新起始在發生錯誤時正於工作者主機組件410中執行的工作處理114。
作為此第三態樣之第三變化,工作者主機組件410可甚至使得工作處理114能夠在裝置104之計算環境108發生顯著改變時仍持續。舉例而言,應用程式112及/或虛擬環境110之終止可能發生於重啟裝置104之計算環境108(諸如重新開機)之過程期間。因此,在重啟計算環境108之後,裝置可重新起始工作處理114在虛擬環境110外之執行。作為第一此種實例,裝置104可儲存工作處理114,且可定期記錄工作處理114的狀態,使得在重啟計算環境108之後,裝置104可用相對新的狀態來重新起始工作處理114之執行。作為第二此種實例,若工作處理114係自服務接收及/或保持與服務通訊,則裝置104可在重啟計算環境108之後自該服務請求第二工作處理114(例如,經配置以基於第一工作處理114之狀態的最新觀測或報告而恢復執行的工作處理114),且可在自該服務接收到第二工作處理114時在裝置104之虛擬環境110外執行該第二工作處理114。此持續性可甚至使得工作處理114能夠在重啟或轉變不同裝置104上的計算環境108時持續,例如,在將工作處理114轉變至在使用者106的裝置網602中之第二裝置104時持續。
作為此第三態樣之第四變化,工作處理114之彈性可與應用程式112共享。舉例而言,除了在終止應用程式112時抑制終止工作處理114之外,工作者主機組件410可在 偵測到重新起始應用程式112在虛擬環境110中的執行時識別由應用程式112在終止之前起始之任何當前執行之工作處理114,且可重新連接應用程式112與所識別之工作處理114。工作處理114可例如向應用程式112通知在應用程式112終止之週期期間在裝置104上發生之任何相關裝置事件116。可在實施本文呈現之技術期間設計用於擴展工作處理114之持續性及彈性的此等及其他技術,且該等技術與本文呈現之技術相容。
D4.應用程式通知
可在此等技術之實施例之間變化的第四態樣涉及在相關聯之工作處理114達成執行事件406時通知應用程式112之方式。
作為此第四態樣之第一變化,對應用程式112之通知可經由許多類型的通知機制來達成。作為第一此種實例,工作者主機組件410可簡單地記錄執行事件406,且應用程式112可定期檢查由工作處理114達成之執行事件406的記錄。作為第二此種實例,通知可藉由訊息傳遞來達成,例如,工作處理114可產生識別且描述執行事件406之執行事件通知412,且虛擬環境110可將執行事件通知412呈現給應用程式112。作為第三此種實例,通知可藉由回呼機制來達成,其中應用程式112指示將在工作處理114達成執行事件406時調用的程式碼之記憶體位置。此程式碼可包含(例如):將在虛擬環境110中執行的應用程式112之一部分;將由工作者主機組件410執行的工作處理114之一部分;計算環境 108之函式,諸如API呼叫;或單獨的程式碼部分,諸如行動代理、抽象句法樹或腳本。
作為此第四態樣之第二變化,工作處理114之彈性可在通知期間延伸至應用程式112。作為第一此種實例,若工作處理114在已終止應用程式112之後達成執行事件406,則裝置104可作為通知過程之部分重新起始虛擬環境110中之應用程式112,例如藉由重新載入建立了web工作者之web應用程式之web頁面而重新起始。作為第二此種實例,作為通知過程之部分,應用程式112可自動呈現給使用者106。舉例而言,在達成執行事件406時,裝置104可引發虛擬環境110及/或應用程式112至在計算環境108中之前景呈現(例如,將web瀏覽器帶至前景且切換至含有應用程式112之標籤(tab))。
第7圖呈現在裝置104之計算環境108中執行持續且有彈性之工作處理的例示性情形之說明。在此例示性情形中,在第一時間點700處,web瀏覽器702(包含在計算環境108中之虛擬環境110)可自伺服器102接收應用程式112,且可起始應用程式112在web瀏覽器702中之執行。此執行可涉及工作處理114提供一些背景處理,計算環境108可將該背景處理執行為本機web伺服器704之伺服器處理。此外,本機web伺服器704可記錄工作處理114、包含工作處理114及應用程式112之來源的伺服器102,且可定期記錄工作處理114之狀態。
在第二時間點706處,可由使用者106及/或裝 置104起始web瀏覽器702之終止708,且此終止708可包括終止在web瀏覽器702中執行的應用程式112。然而,根據本文呈現之技術,工作處理114在web瀏覽器702外之執行使得工作處理114能夠在應用程式112及虛擬環境110終止708時仍持續。
在第三時間點710處,計算環境108亦可經歷終止712(例如,在裝置104重新開機期間)。在終止712後的第四時間點714處,計算環境108可被重啟。重啟可涉及本機web伺服器704之自動重新起始,本機web伺服器704可檢查由本機web伺服器704代管的工作處理114在計算環境108之終止712時的記錄。本機web伺服器704可接著聯絡伺服器102,且可自伺服器102接收716第二工作處理114(例如,與在第一時間點700處起始的工作處理114相同的執行個體,或反映工作處理114在終止712時的狀態之更改的工作處理)。計算環境108可因此在重啟計算環境108後自動重新起始工作處理114之執行。
在第五時間點718處,裝置事件116可發生於計算環境108(例如,對使用者106之來話)中。若工作處理114與裝置事件116(例如,作為工作處理114之執行事件406)相關聯,則本機web伺服器704可向工作處理114通知該裝置事件116。此外,工作處理114可向應用程式112通知720該裝置事件116。此外,若應用程式112及/或web瀏覽器702當前並未執行,則裝置104可重新起始web瀏覽器702及/或應用程式112(例如,藉由重新載入web瀏覽器702中之頁 面),且此外,可將web瀏覽器702帶至計算環境108中之前景呈現。以此方式,藉由應用本文呈現之技術,裝置104可達成工作處理114之有彈性的執行,工作處理114在應用程式112終止、虛擬環境110終止且甚至在計算環境108之重啟時仍能持續。
E.計算環境
第8圖及以下論述提供適於實施本文闡述之提供態樣中之一或多者的實施例的計算環境之簡要、大體描述。第8圖之操作環境僅為適當操作環境之一個實例,且不意欲暗示關於操作環境之使用或功能性範疇的任何限制。例示性計算裝置包括但不限於個人電腦、伺服器電腦、手持式或膝上型裝置、行動裝置(諸如行動電話、個人數位助理(PDAs)、媒體播放器等等)、多處理器系統、消費者電子器件、微型電腦、主機電腦、包括上述系統或裝置中之任一者的分散式計算環境等等。
儘管不要求,但在一般上下文中將實施例描述為由一或更多個計算裝置執行之「電腦可讀指令」。電腦可讀指令可經由電腦可讀媒體(下文論述)分配。電腦可讀指令可實施為執行特定任務或實施特定抽象資料類型之程式模組,諸如函式、物件、應用程式化介面(APIs)、資料結構等等。通常,電腦可讀指令之功能性可根據各種環境之需要而組合或分配。
第8圖說明包含經配置以實施本文提供之一或更多個實施例的計算裝置802的系統800之實例。在一個配置 中,計算裝置802包括至少一處理單元806及記憶體808。取決於計算裝置之確切配置及類型,記憶體808可為揮發性(諸如RAM)、非揮發性(諸如ROM、快閃記憶體等)或兩者之某一組合。此配置在第8圖中由虛線804說明。
在其他實施例中,裝置802可包括額外特徵及/或功能性。舉例而言,裝置802亦可包括額外儲存器(例如,可移除式及/或非可移除式),額外儲存器包括但不限於磁性儲存器、光學儲存器等等。此種額外儲存器在第8圖中由儲存器810說明。在一個實施例中,用以實施本文提供之一或更多個實施例的電腦可讀指令可位於儲存器810中。儲存器810亦可儲存其他電腦可讀指令以實施作業系統、應用程式等等。電腦可讀指令可載入於記憶體808中以供由例如處理單元806執行。
如用於本文之術語「電腦可讀媒體」包括電腦儲存媒體。電腦儲存媒體包括以任何方法或技術實施之用於儲存諸如電腦可讀指令或其他資料之資訊的揮發性及非揮發性、可移除式及非可移除式媒體。記憶體808及儲存器810為電腦儲存媒體之實例。電腦儲存媒體包括但不限於RAM、ROM、EEPROM、快閃記憶體或其他記憶體技術、CD-ROM、數位多功能光碟(DVDs)或其他光學儲存器、磁性卡匣、磁帶、磁碟儲存器或其他磁性儲存裝置,或可用以儲存所要資訊且可由裝置802存取之任何其他媒體。任何此種電腦儲存媒體可為裝置802之部分。
裝置802亦可包括允許裝置802與其他裝置通訊 之通訊連接816。通訊連接816包括但不限於數據機、網路介面卡(NIC)、整合式網路介面、射頻傳輸器/接收器、紅外線埠、USB連接或用於將計算裝置802連接至其他計算裝置之其他介面。通訊連接816可包括有線連接或無線連接。通訊連接816可傳輸及/或接收通訊媒體。
術語「電腦可讀媒體」可包括通訊媒體。通訊媒體通常以「經調變資料信號」(諸如載波或其他傳送機制)來體現電腦可讀指令或其他資料,且通訊媒體包括任何資訊遞送媒體。術語「經調變資料信號」可包括具有該信號之特性集合中之一或多者或在信號中編碼資訊之方式改變的信號。
裝置802可包括輸入裝置814,諸如鍵盤、滑鼠、筆、語音輸入裝置、觸摸輸入裝置、紅外線相機、視訊輸入裝置,及/或任何其他輸入裝置。諸如一或更多個顯示器、揚聲器、印表機及/或任何其他輸出裝置之輸出裝置812亦可包括於裝置802中。輸入裝置814及輸出裝置812可經由有線連接、無線連接或其任何組合連接至裝置802。在一個實施例中,來自另一計算裝置之輸入裝置或輸出裝置可用作計算裝置802之輸入裝置814或輸出裝置812。
計算裝置802之組件可藉由諸如匯流排之各種互連件連接。此些互連件可包括周邊組件互連(PCI),諸如PCI Express、通用串列匯流排(USB)、Firewire(IEEE 1394)、光學匯流排結構等等。在另一實施例中,計算裝置802之組件可藉由網路而互連。舉例而言,記憶體802可包含位於藉由網 路互連之不同實體位置處的多個實體記憶體單元。
熟習此項技術者將認識到,用以儲存電腦可讀指令之儲存裝置可跨網路而分配。舉例而言,可經由網路818存取之計算裝置820可儲存電腦可讀指令以實施本文提供之一或更多個實施例。計算裝置802可存取計算裝置820,且下載電腦可讀指令之部分或全部以用於執行。或者,計算裝置802可根據需要下載電腦可讀指令之片段,或可在計算裝置802處執行一些指令且在計算裝置820處執行一些指令。
F.術語之適用
儘管已用專門針對結構特徵及/或方法動作之語言描述了標的物,但應理解,隨附申請專利範圍中界定之標的物未必限於上述特定特徵或動作。確切而言,上述特定特徵及動作係揭示為實施申請專利範圍之實例形式。
本申請案中使用的術語「組件」、「模組」、「系統」、「介面」等等大體意欲指代電腦相關實體,不管其為硬體、硬體與軟體之組合、軟體還是執行中之軟體。舉例而言,組件可為但不限於在處理器上執行之處理程序、處理器、物件、可執行碼、執行線程、程式及/或電腦。作為說明,在控制器上執行的應用程式及控制器皆可為組件。一或更多個組件可駐留於處理程序及/或執行線程中,且組件可位於一電腦上及/或分散於兩個或兩個以上電腦之間。
此外,所主張標的物可使用標準程式化及/或工程設計方法而實施為方法、設備或製造物品,以產生軟體、韌體、硬體或上述任何組合以控制電腦來實施所揭示之標的 物。如本文中所使用之術語「製造物品」意欲涵蓋可自任何電腦可讀裝置、載體或媒體存取之電腦程式。當然,熟習此項技術者將認識到,可在不脫離所主張標的物的範疇或精神的情況下對此配置進行許多修改。
本文中提供實施例之各種操作。在一個實施例中,所描述之操作中的一或多者可構成儲存於一或更多個電腦可讀媒體上之電腦可讀指令,該等指令若由計算裝置執行則將使得計算裝置執行所描述之操作。描述操作中之一些或全部的次序不應解釋為暗指此等操作必須依賴於次序。受益於此描述之熟習此項技術者將瞭解替代排序。另外,將理解,並非所有操作需要存在於本文提供之每一實施例中。
此外,詞語「例示性」在本文用以意謂充當實例、例子或說明。本文中描述為「例示性」的任何態樣或設計不一定解釋為比其他態樣或設計更有利。確切而言,使用詞語例示性意欲以具體方式呈現概念。於本申請案中使用的術語「或」意欲意謂包括性「或」而非排他性「或」。亦即,除非另外指出或自上下文顯而易見,否則「X使用A或B」意欲意謂自然包括性排列中之任一者。亦即,若X使用A;X使用B;或X使用A及B,則在前述情況下中之任一者中滿足「X使用A或B」。此外,「一」在本申請案及隨附申請專利範圍中使用時可大體解釋為意謂「一或更多個」,除非另外指出或自上下文顯而易見係針對單數形式。
而且,儘管已相對於一或更多個實施方案展示並描述本發明,但熟習此項技術者基於閱讀及理解本說明書及 附圖將瞭解等效更改及修改。本發明包括所有此些修改及更改,且僅受所附申請專利範圍之範疇的限制。詳言之,相對於由上述組件(例如,元件、資源等)執行之各種功能,用以描述此些組件之術語意欲對應於(除非另外指出)執行所述組件之指定功能的任何組件(例如,功能等效),即使在結構上並不等效於執行本發明之本文說明的例示性實施方案之功能的所揭示結構亦如此。此外,儘管已相對於若干實施方案中之僅一者揭示了本發明之特定特徵,但此種特徵可與對於任何給定或特定應用可為所要且有利的其他實施方案之一或更多個其他特徵組合。此外,就術語「包括」、「具有」或其變體用於實施方式或申請專利範圍中之程度而言,此些術語意欲以類似於術語「包含」之方式而為包括性的。
102‧‧‧伺服器
104‧‧‧裝置
106‧‧‧使用者
108‧‧‧計算環境
110‧‧‧虛擬環境
112‧‧‧應用程式
114‧‧‧工作處理
116‧‧‧裝置事件
118‧‧‧裝置事件監控
120‧‧‧裝置事件通知
200‧‧‧例示性情形
202‧‧‧工作處理主機

Claims (20)

  1. 一種執行代表在一裝置之一虛擬環境中之應用程式的處理之方法,其中該裝置具有一處理器,該處理器執行指令以運行該方法,該方法包含以下步驟:在自一應用程式接收到執行涉及一執行事件之一工作處理的一請求時,起始該工作處理在該虛擬環境外之執行;在偵測到該應用程式之終止時,抑制終止該工作處理;及在該工作處理達成該執行事件時,向該應用程式通知該工作處理之該執行事件。
  2. 如請求項1所述之方法,選自一執行事件集合之該執行事件包含:一計算處理之一完成;一逾時;自該裝置之一使用者的使用者輸入之一偵測;及該裝置之一裝置事件之一偵測。
  3. 如請求項1所述之方法,該等指令進一步經配置以在終止該虛擬環境時抑制終止該工作處理。
  4. 如請求項1所述之方法,該等指令進一步經配置以在偵測到該應用程式之該終止之後偵測到該應用程式之一重新起始時:識別由該應用程式在終止之前起始之至少一個所識別工作處理;及重新連接該應用程式與該至少一個所識別之工作處理。
  5. 如請求項1所述之方法,通知該應用程式之步驟包含以下步驟:決定該應用程式是否已終止;及在決定該應用程式已終止時,重新起始該虛擬環境中之該應用程式。
  6. 如請求項1所述之方法:來自該應用程式之該請求指定一回呼;且通知該應用程式之步驟包含以下步驟:在該工作處理達成該執行事件時,調用該應用程式之該回呼。
  7. 如請求項1所述之方法:該裝置包含一計算環境;且終止該應用程式之步驟包含以下步驟:終止該應用程式,同時重啟該裝置之該計算環境。
  8. 如請求項7所述之方法,該等指令進一步經配置以在重啟該裝置之該計算環境之後重新起始該工作處理在該虛擬環境外之執行。
  9. 如請求項1所述之方法:該裝置可由在一第二裝置上執行之一遠端處理存取;且該等指令進一步經配置以在接收到將在該第二裝置上執行的該遠端處理與該工作處理相連接之一請求時,將該遠端處理與該工作處理相連接。
  10. 一種用於執行代表一裝置之應用程式的處理之系統,該系統包含:一虛擬環境,在該虛擬環境中,至少一個應用程式正在該裝置上執行;及一工作者主機組件,該工作者主機組件在該虛擬環境外於該裝置上執行且經配置以:在自一應用程式接收到執行涉及一執行事件之一工作處理的一請求時,起始該工作處理在該虛擬環境外之執行;在偵測到該應用程式之終止時,抑制終止該工作處理;及在該工作處理達成該執行事件時,向該應用程式通知該工作處理之該執行事件。
  11. 如請求項10所述之系統:該虛擬環境包含一web瀏覽器;該應用程式包含一web應用程式;且該工作處理包含在該web瀏覽器外執行之一web工作者。
  12. 如請求項11所述之系統,該工作者主機組件經配置以根據該web瀏覽器之一跨域限制策略而限制該工作處理之該執行。
  13. 如請求項11所述之系統,該工作者主機組件包含一本機web伺服器,該本機web伺服器經配置以作為一本機web伺服器處理來執行該工作處理。
  14. 如請求項10所述之系統:該工作者主機組件包含在該裝置之一虛擬環境中執行的一背景服務;且該工作者主機組件經配置以在該裝置重啟該計算環境時自動重啟。
  15. 如請求項10所述之系統,該系統進一步包含:一工作者主機管理組件,該工作者主機管理組件經配置以在偵測到該工作者主機組件之一工作者主機組件錯誤時:終止該工作者主機組件; 重新起始該工作者主機組件在該裝置之該計算環境中之執行;及重新起始由該工作者主機組.件在該工作者主機組件錯誤期間執行之工作處理。
  16. 如請求項10所述之系統:該工作處理係自一服務接收;且重新起始該工作處理之執行之步驟包含以下步驟:在重啟該計算環境之後,自該服務請求一第二工作處理;及在自該服務接收到該第二工作處理時,起始該第二工作處理在該虛擬環境外之執行。
  17. 如請求項10所述之系統:該工作處理係自一第一服務接收;且在該虛擬環境外執行該工作處理之步驟包含以下步驟:限制該工作處理與不同於該第一服務之服務之間的通訊。
  18. 一種包含指令之電腦可讀儲存媒體,該等指令在包含一虛擬環境之一裝置的一處理器上執行時使得該裝置藉由以下操作執行代表在該虛擬環境中之應用程式之處理:在自一應用程式接收到執行涉及一執行事件之一工作處理的一請求時,起始該工作處理在該虛擬環境外之執行; 在偵測到該應用程式之終止時,抑制終止該工作處理;及在該工作處理達成該執行事件時,向該應用程式通知該工作處理之該執行事件。
  19. 如請求項18所述之電腦可讀儲存媒體,起始該工作處理在該虛擬環境外之執行之步驟包含以下步驟:向該使用者呈現一提議以起始該工作處理在該虛擬環境外之執行;及在自該使用者接收到對該提議之一接受時,起始該工作處理在該虛擬環境外之執行。
  20. 如請求項18所述之電腦可讀儲存媒體:該裝置包含一計算環境;且向該應用程式通知該工作處理之該執行事件之步驟包含以下步驟:將該虛擬環境及該應用程式帶至在該裝置之該計算環境中的一前景呈現。
TW102106712A 2012-03-29 2013-02-26 持續及有彈性之工作處理 TWI573075B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201261617474P 2012-03-29 2012-03-29
US13/713,536 US9092247B2 (en) 2012-03-29 2012-12-13 Persistent and resilient worker processes

Publications (2)

Publication Number Publication Date
TW201349118A TW201349118A (zh) 2013-12-01
TWI573075B true TWI573075B (zh) 2017-03-01

Family

ID=49236850

Family Applications (2)

Application Number Title Priority Date Filing Date
TW105138342A TWI587219B (zh) 2012-03-29 2013-02-26 持續及有彈性之工作處理
TW102106712A TWI573075B (zh) 2012-03-29 2013-02-26 持續及有彈性之工作處理

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW105138342A TWI587219B (zh) 2012-03-29 2013-02-26 持續及有彈性之工作處理

Country Status (7)

Country Link
US (2) US9092247B2 (zh)
EP (1) EP2831796B1 (zh)
JP (1) JP6285905B2 (zh)
KR (1) KR102076379B1 (zh)
CN (2) CN104205109B (zh)
TW (2) TWI587219B (zh)
WO (1) WO2013148223A1 (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110179303A1 (en) * 2010-01-15 2011-07-21 Microsoft Corporation Persistent application activation and timer notifications
US20130091197A1 (en) 2011-10-11 2013-04-11 Microsoft Corporation Mobile device as a local server
US9600351B2 (en) 2012-12-14 2017-03-21 Microsoft Technology Licensing, Llc Inversion-of-control component service models for virtual environments
US9700240B2 (en) 2012-12-14 2017-07-11 Microsoft Technology Licensing, Llc Physical activity inference from environmental metrics
US11397520B2 (en) 2013-08-01 2022-07-26 Yogesh Chunilal Rathod Application program interface or page processing method and device
US20150199312A1 (en) * 2014-01-14 2015-07-16 Futurewei Technologies Inc. System and method to share a web thread during page transitions in a web browser
US9430212B2 (en) * 2014-02-10 2016-08-30 Netflix, Inc. Automatically generating volume images and launching virtual computing instances
US9189264B1 (en) * 2014-06-09 2015-11-17 Western Digital Technologies, Inc. Notification propagation in virtual computing environment
CN105335171B (zh) * 2014-06-24 2019-05-10 北京奇虎科技有限公司 应用程序常驻操作系统后台的方法及装置
US9619773B2 (en) * 2014-09-15 2017-04-11 Sap Portals Israel Ltd. Systems and methods for code instrumentation for analytics
US9361140B1 (en) * 2014-12-11 2016-06-07 International Business Machines Corporation Isolating applications in server environment
US9870266B2 (en) * 2015-07-30 2018-01-16 Nasdaq, Inc. Background job processing framework
US10659340B2 (en) 2016-01-28 2020-05-19 Oracle International Corporation System and method for supporting VM migration between subnets in a high performance computing environment
KR102138421B1 (ko) * 2018-05-30 2020-07-28 주식회사 티파이브온라인 멀티스레드 지원을 위한 크로스플랫폼 시스템 및 운용방법
US11055110B2 (en) * 2018-06-05 2021-07-06 Microsoft Technology Licensing, Llc Operating system service for persistently executing programs
KR102492996B1 (ko) * 2018-06-08 2023-01-31 삼성전자주식회사 외부 입력을 이용하여 백그라운드 태스크를 처리하는 전자 장치 및 그 저장 매체
US11422829B1 (en) 2021-11-17 2022-08-23 Morgan Stanley Services Group Inc. Systems and methods for resilient service worker bridge

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200404449A (en) * 2002-06-12 2004-03-16 Vuico L L C System and method for implementing virtual mobile messaging services
US20100115332A1 (en) * 2008-11-06 2010-05-06 Weimin Zheng Virtual machine-based on-demand parallel disaster recovery system and the method thereof
US20110154441A1 (en) * 2009-12-18 2011-06-23 Electronics And Telecommunications Research Institute Online development environment server, online marketplace server, online development environment constituting method, and developed application providing method
US20110219385A1 (en) * 2010-03-04 2011-09-08 Microsoft Corporation Virtual environment for server applications, such as web applications
US20120042365A1 (en) * 2010-08-11 2012-02-16 Emc Corporation Disposable browser for commercial banking

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6463446B1 (en) * 1998-02-26 2002-10-08 Sun Microsystems, Inc. Method and apparatus for transporting behavior in an event-based distributed system
JP4112319B2 (ja) * 2002-09-06 2008-07-02 日本電信電話株式会社 プロセス再開方法、プロセス再開装置、プロセス再開プログラム
US7559065B1 (en) * 2003-12-31 2009-07-07 Emc Corporation Methods and apparatus providing an event service infrastructure
CN1677352A (zh) * 2004-03-30 2005-10-05 京瓷株式会社 移动电话终端、及其程序管理方法和相应的计算机程序
US20060136933A1 (en) * 2004-12-17 2006-06-22 Microsoft Corporation Server-side eventing for managed server applications
US7877101B1 (en) 2006-12-28 2011-01-25 Marvell International Ltd. Locating a WLAN station using signal propagation delay
US20070240157A1 (en) * 2006-04-10 2007-10-11 Nokia Corporation Method, apparatus, mobile terminal and computer program product for safe application termination in a virtual machine
DE102006049646B3 (de) * 2006-10-20 2008-06-19 Siemens Ag Verfahren und Sendevorrichtung zum gesicherten Erstellen und Versenden einer elektronischen Nachricht sowie Verfahren und Empfangsvorrichtung zum gesicherten Empfangen und Verarbeiten einer elektronischen Nachricht
US8065659B1 (en) 2007-05-30 2011-11-22 Google Inc. Method and apparatus for executing scripts within a web browser
KR101478619B1 (ko) 2008-02-27 2015-01-06 삼성전자주식회사 가상화 기술을 이용한 데이터 입출력 방법 및 장치
US8424082B2 (en) 2008-05-08 2013-04-16 Google Inc. Safely executing an untrusted native code module on a computing device
US8024732B2 (en) * 2008-07-28 2011-09-20 Microsoft Corporation State separation for application changes
WO2011040849A1 (en) * 2009-10-01 2011-04-07 Telefonaktiebolaget L M Ericsson (Publ) A method and arrangement for managing persistent rich internet applications
US8621628B2 (en) * 2010-02-25 2013-12-31 Microsoft Corporation Protecting user mode processes from improper tampering or termination
US20130091197A1 (en) 2011-10-11 2013-04-11 Microsoft Corporation Mobile device as a local server
US9075672B2 (en) 2011-10-21 2015-07-07 Microsoft Technology Licensing, Llc Monadic evaluation of injected query compositions

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200404449A (en) * 2002-06-12 2004-03-16 Vuico L L C System and method for implementing virtual mobile messaging services
US20100115332A1 (en) * 2008-11-06 2010-05-06 Weimin Zheng Virtual machine-based on-demand parallel disaster recovery system and the method thereof
US20110154441A1 (en) * 2009-12-18 2011-06-23 Electronics And Telecommunications Research Institute Online development environment server, online marketplace server, online development environment constituting method, and developed application providing method
US20110219385A1 (en) * 2010-03-04 2011-09-08 Microsoft Corporation Virtual environment for server applications, such as web applications
US20120042365A1 (en) * 2010-08-11 2012-02-16 Emc Corporation Disposable browser for commercial banking

Also Published As

Publication number Publication date
EP2831796B1 (en) 2019-01-09
TW201709059A (zh) 2017-03-01
KR20140138803A (ko) 2014-12-04
JP2015515682A (ja) 2015-05-28
EP2831796A4 (en) 2016-01-13
CN104205109B (zh) 2017-12-19
EP2831796A1 (en) 2015-02-04
WO2013148223A1 (en) 2013-10-03
CN106127036A (zh) 2016-11-16
US20150331726A1 (en) 2015-11-19
TWI587219B (zh) 2017-06-11
US9092247B2 (en) 2015-07-28
KR102076379B1 (ko) 2020-02-11
US9600353B2 (en) 2017-03-21
CN104205109A (zh) 2014-12-10
JP6285905B2 (ja) 2018-02-28
CN106127036B (zh) 2019-05-10
TW201349118A (zh) 2013-12-01
US20130263127A1 (en) 2013-10-03

Similar Documents

Publication Publication Date Title
TWI573075B (zh) 持續及有彈性之工作處理
US11223704B2 (en) Event service for local client applications through local server
TWI559153B (zh) 分散式計算架構
US9489236B2 (en) Application prioritization
JP5960262B2 (ja) 接続型スタンバイのためのプロセスの一時停止及び/又は制限
US20210342173A1 (en) Dynamic power management states for virtual machine migration
KR20160130491A (ko) 애플리케이션간 호출 중의 애플리케이션 디하이드레이션 및 리하이드레이션
KR20120115398A (ko) 전자 디바이스에서 전력을 제어하는 시스템 및 방법
JP6088531B2 (ja) ローカルサーバーを通じたローカルクライアントアプリケーションのためのイベントサービス
JP6385471B2 (ja) 移行および遠隔ランタイム統合
WO2011089223A2 (en) Efficient multi-core processing of events
US20090307403A1 (en) System for executing system management interrupts and methods thereof
WO2015184902A1 (zh) 一种智能分屏的并发处理方法及相应的智能终端
US11537682B1 (en) Experience convergence for multiple platforms
US20230030873A1 (en) Migrating applications between containers during modern standby

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees