專利名稱:向Web應用透露資源能力的制作方法
技術領域:
本文檔涉及計算設備的資源能力。
背景技術:
計算機系統(tǒng)可以包括執(zhí)行各種任務的多個本機(native)應用。這樣的本機應用可以包括字處理器、電子郵件客戶端、媒體播放器、圖像或信號處理模塊、文件管理工具等。為了有效運作,通常以諸如C或C++的通用編程語言和諸如匯編語言的低級語言的組合來編寫本機應用。此外,本機應用可以通過諸如應用編程接口(API)的各種接口,能夠訪問系統(tǒng)資源,諸如圖形硬件、電話硬件、相機硬件、聲卡、文件系統(tǒng)和網絡資源。因此,本機應用可以向本機應用被安裝在其上的計算機系統(tǒng)的用戶提供特定于資源的特征。Web應用是典型地以可以通過web瀏覽器可訪問的腳本語言編寫的軟件應用。Web應用可以被嵌入在超文本標記語言(HTML)網頁中并且已成為web設計者和開發(fā)者幫助為用戶創(chuàng)建豐富體驗的流行工具。一些示例web應用包括電子郵件、日歷、拍賣、銷售和客戶支持等。盡管web應用在最近幾年中已變得越來越普遍和交互,然而,安全協(xié)議一般限制其本機訪問低級系統(tǒng)資源的能力,正因為如此,在利用對這樣的系統(tǒng)資源的訪問的情況下通常使用本機應用。瀏覽器可以包括提供對系統(tǒng)資源的這樣訪問的擴展或專用API,但是在標準瀏覽器中不存在這些擴展和API。此外,這樣的擴展和API的開發(fā)通??赡苁琴M時的,并且可能將web應用束縛于特定平臺。
發(fā)明內容
總的來說,本文檔描述了用于向在標準、非擴展的瀏覽器中執(zhí)行的web應用透露諸如硬件設備能力的系統(tǒng)資源的技術。例如,根據在此描述的技術,web應用可以用來在沒有利用內置于瀏覽器中的瀏覽器擴展或專用API的情況下,監(jiān)視和/或控制系統(tǒng)級硬件組件或其他系統(tǒng)資源。如此,web應用是獨立于瀏覽器和平臺的,因此,可以被相對容易地移植到各種設備??梢酝ㄟ^使用標準超文本傳輸協(xié)議(HTTP)連接模式經由類似于典型web服務器運作的資源服務器向web應用透露系統(tǒng)資源(例如,電話硬件、相機硬件、文件系統(tǒng)等)的狀態(tài)和操作能力。資源服務器接收并處理來自web應用的HTTP消息,并且使用HTTP消息來監(jiān)視和/或控制適當的系統(tǒng)資源。由于資源服務器駐存于瀏覽器之外,因而在限制來自瀏覽器的直接訪問的安全協(xié)議范圍之外,所以資源服務器可以訪問用來訪問和控制系統(tǒng)資源的本機資源API。在一個示例中,計算機可讀存儲介質包括當被執(zhí)行時促使一個或多個處理器在計算設備的web瀏覽器內執(zhí)行web應用的指令。所述指令還促使一個或多個處理器執(zhí)行web服務器,其具有用于從web應用接收超文本傳輸協(xié)議(HTTP)消息的第一接口和用于與計算設備的硬件組件通信的第二接口。所述指令進一步促使一個或多個處理器在web應用處接收影響硬件組件的操作的輸入。所述指令還促使一個或多個處理器將影響硬件組件的操作的HTTP消息從web應用傳輸給web服務器。所述指令進一步促使一個或多個處理器在web服務器處將該HTTP消息處理成包括關于該操作的信息的硬件控制消息。所述指令還促使一個或多個處理器將該硬件控制消息從web服務器傳輸給該硬件組件以影響該硬件組件的操作。在另一個示例中,方法包括在計算設備的web瀏覽器內執(zhí)行web應用。該方法還包括執(zhí)行資源服務器,其帶有用于從web應用接收HTTP消息的接口和用于與計算設備的系統(tǒng)資源通信的接口。該方法進一步包括在web應用處接收影響系統(tǒng)資源的操作的輸入。該方法還包括將影響系統(tǒng)資源的操作的HTTP消息從web應用傳輸給資源服務器。該方法進一步包括將該HTTP消息處理成包括關于該操作的信息的資源控制消息。該方法還包括將該資源控制消息從資源服務器傳輸給該系統(tǒng)資源以影響該系統(tǒng)資源的操作。在另一個示例中,系統(tǒng)包括在計算設備的瀏覽器中可執(zhí)行的web應用。該系統(tǒng)還包括被配置成控制計算設備的系統(tǒng)資源的資源服務器。該資源服務器具有用于從web應用接收超文本傳輸協(xié)議(HTTP)消息的第一接口和用于與系統(tǒng)資源通信的第二接口。該系統(tǒng)進一步包括用于通過資源服務器使用web應用來控制系統(tǒng)資源的裝置。在此描述的技術可以提供以下益處中的一個或多個。在一些實施方式中,所述技術為在瀏覽器中執(zhí)行的應用和設備的系統(tǒng)資源之間的雙向命令協(xié)議提供獨立于瀏覽器和平臺的體系結構。該體系結構是靈活的,并且向web開發(fā)者提供使用熟悉的HTTP連接模式來訪問系統(tǒng)資源的工具。另外,可以實現(xiàn)瀏覽器/服務器接口的安全特性以確保適當限制系統(tǒng)資源的惡意操作。在附圖和下面描述中闡述了一個或多個實施例的細節(jié)。其他特征、目的和益處從描述和附圖以及從權利要求將是顯而易見的。
圖1是圖示用于向在計算設備上執(zhí)行的瀏覽器透露計算設備的資源能力的示例體系結構的概念圖。圖2是圖示在圖1的體系結構中的組件之間的示例通信的框圖。圖3是圖示用于使用在瀏覽器中運作的應用來控制系統(tǒng)資源的示例過程的泳道圖。圖4是圖示用于使用在瀏覽器中運作的應用來控制系統(tǒng)資源的示例過程的流程圖。圖5是圖示可以用來實現(xiàn)在本文檔中描述的技術中的一個或多個的計算系統(tǒng)的示例組件的概念圖。在各附圖中相同的參考符號指示相同的元素。
具體實施例方式總的來說,本公開描述了用于向在運作于設備上的標準、非擴展的瀏覽器中執(zhí)行的應用透露設備的資源能力的技術?;跒g覽器的web應用典型地不能與存在于基于瀏覽器的應用以其運行的安全協(xié)議外的組件通信。如此,除非對瀏覽器作出專門擴展、應用編程接口(API)或其他這樣的修改,在瀏覽器中執(zhí)行的應用和設備的系統(tǒng)資源之間的雙向命令協(xié)議一般不可用。根據在本公開中描述的技術,向在標準、非擴展的瀏覽器中執(zhí)行的web應用提供這樣的雙向命令協(xié)議。如在此所使用的,詞語“非擴展”并不意在意味著瀏覽器必定缺乏任何擴展或API,而是瀏覽器尚未被明確擴展成直接控制系統(tǒng)資源。替代地,web應用使用常見HTTP連接模式(例如,GET和POST消息)與資源服務器通信,以及該資源服務器進而與系統(tǒng)資源通信并且向web應用透露系統(tǒng)資源的能力。作為這些技術的一個示例,在標準瀏覽器中運作的電話相關web應用可以用于經由電話資源服務器來監(jiān)視和/或操作移動設備的電話硬件能力。圖1是圖示用于向在計算設備上執(zhí)行的瀏覽器透露計算設備的資源能力的示例體系結構100的概念圖。如所示,計算設備110、115每一個包括能夠執(zhí)行web應用130的瀏覽器120。Web應用130被通信地耦接到一個或多個資源服務器,諸如相機服務器140和/或電話服務器145。進而,資源服務器被通信地耦接到計算設備的系統(tǒng)資源。例如,相機服務器140被通信地耦接到相機硬件160,以及電話服務器145被通信地耦接到電話硬件165。如所示,計算設備110、115分別對應于移動設備和膝上型計算機。然而,計算設備110、115可以是能夠執(zhí)行瀏覽器120的任何類型的計算設備。如此,示例計算設備可以包括任何類型的計算機(例如,臺式計算機、工作站、平板電腦、筆記本、上網本、大型機、終端等)、任何類型的手持式設備(例如,智能手機、個人數字助理等)等。瀏覽器120是在例如計算設備110的計算設備上運作并且使能夠通過一個或多個服務器訪問信息的計算機軟件應用。在一些情況下,例如web服務器(未示出)的服務器遠離計算設備被托管,以及瀏覽器120通過諸如因特網的網絡提供對遠程服務器的訪問。在其他情況下,服務器可以對計算設備是本地的,諸如在計算設備上運作的資源服務器140、145。在任一情況下,瀏覽器120和服務器使用常規(guī)HTTP連接模式來通信。瀏覽器120被配置成通過利用以位置、名稱或兩者識別資源的統(tǒng)一資源標識符(URI)來從本地或遠程的服務器訪問信息。瀏覽器120還被配置成使用已知為定義特定資源的位置以及可以如何訪問該資源的統(tǒng)一資源定位符(URL)的URI形式來從服務器訪問信息。瀏覽器120可以被配置成在一個或多個瀏覽器窗口或在瀏覽器內的瀏覽器標簽中向用戶展現(xiàn)網絡可訪問和/或其他信息。瀏覽器120可以使用戶能夠同時打開多個web瀏覽器窗口或在web瀏覽器窗口內的標簽??偟膩碚f,web應用是在基于瀏覽器的計算環(huán)境內執(zhí)行的計算機軟件應用。例如,示出了在瀏覽器120的情景內執(zhí)行的web應用130。可以以任何數量的不同瀏覽器支持的語言(例如,JavaScript)對web應用進行編碼??梢允褂脝蝹€瀏覽器120來同時運行多個web應用。例如,電子郵件和日歷web應用兩者可以在瀏覽器120的不同頁面或標簽中顯示、或可以在瀏覽器中的同一頁面上顯示。在示例體系結構100中,示出了通信地耦接到兩個資源服務器140、145的web應用130。該耦接被示出為虛線以指示在web應用130和資源服務器140、145中的每一個之間的通信信道沒有通過諸如API或瀏覽器擴展的直接接口。替代地,資源服務器140、145運作為在瀏覽器120之外運作的web服務器,以向在瀏覽器120中執(zhí)行的web應用130供給資源。如在本公開中所描述的,該體系結構允許web應用130在標準、非擴展的web瀏覽器120內運作來訪問諸如相機硬件160或電話硬件165的各種系統(tǒng)資源的能力。盡管web應用130在瀏覽器120內執(zhí)行,然而,其可以被托管在遠離瀏覽器120的地方。例如,web應用130可以被托管在資源服務器140、145中的一個或多個上,以及每一個資源服務器可以托管一個或多個web應用。例如,服務器140可以托管相機web應用,以及服務器145可以托管電話web應用。這些和其他web應用可以由瀏覽器120使用與適當服務器的HTTP連接來訪問。例如,當瀏覽器120的用戶導航到包含到被托管在資源服務器中的一個上的web應用的引用的HTML頁面時,瀏覽器可以下載該web應用并且開始在瀏覽器內執(zhí)行該應用。在一些實施方式中,web應用130可以替選地被托管在遠離客戶端設備的服務器上,諸如web服務器。在一些實施方式中,被配置成與特定資源服務器通信的web應用被托管在該資源服務器上。例如,如果web應用130是相機web應用,則其可以被托管在相機資源服務器140上。在這樣的實施方式中,域源策略可以通過潛在阻止沒有被托管在資源服務器上的惡意web應用訪問資源服務器,資源服務器進而阻止?jié)撛趷阂鈝eb應用訪問設備的系統(tǒng)資源,來提供安全層。在其他實施方式中,資源服務器可以通過提供web應用寄主的位置來充當代理,其也提供如上所述免遭惡意代碼的安全保護級。還可以實現(xiàn)其他安全措施來確保不允許web應用和其他代碼惡意訪問設備的各種系統(tǒng)資源。例如,可以要求用戶選擇允許web應用訪問各種系統(tǒng)資源的能力。例如,在啟動正試圖通過資源服務器訪問系統(tǒng)資源的web應用時,在允許該動作進行之前,可以詢問設備的用戶是否允許這樣的訪問。在一些實施方式中,用戶可以為每一個系統(tǒng)資源分別選擇訪問。在其他實施方式中,可以使用選擇特征來覆蓋對特定設備的多個或全部能力的訪問。另外,可以分別或共同選擇特定系統(tǒng)資源的特定能力。例如,用戶可以選擇允許web應用訪問相機的照片拍攝能力,但是用戶可能選擇不允許使用web應用打開或關閉相機??梢栽趙eb應用、資源服務器或其組合中實現(xiàn)這些和其他安全措施。資源服務器140、145可以類似于傳統(tǒng)web服務器運作,因為它們偵聽、接收并處理標準HTTP命令。如上所述,在一些實施方式中,資源服務器140、145托管與特定資源(例如,分別相機硬件160或電話硬件165)有關的web應用、或用作對web應用的代理。如此,當瀏覽器可讀頁面(例如,HTML頁面)指向資源服務器并且請求web應用時,其由資源服務器直接服務或通過代理提供。以這種方式,可以向瀏覽器120確保web應用不是惡意的,以及瀏覽器120可以將web應用作為信任進程運行??梢悦鞔_分配用于訪問資源服務器所托管或代理的web應用的URL方案,以識別web應用提供對系統(tǒng)資源的訪問。作為示例,可以將dev://www.fo0.com/telephone的URL定義為訪問在資源服務器fo0.com上的電話web應用。URL的dev: //部分可以指示該URL與設備資源有關,使得可以使用已知搜索工具和協(xié)議(例如,通過搜索具有“dev”協(xié)議的URL)來容易地搜索類似標記的設備資源。 在上面的示例中,用于電話資源的命名空間可以包括兩個URL——個用于監(jiān)視該資源的狀態(tài),以及另一個用于控制該資源。例如,為了監(jiān)視電話資源的狀態(tài),web應用(例如,web 應用 130)可以向 dev://www.fo0.com/telephone/state 傳輸 HTTP GET 調用,例如XMLHttpRequest (XHR)GET 調用,dev://www.fo0.com/telephone/state 可以在資源的狀態(tài)改變之后返回狀態(tài)響應對象。在一些實施方式中,可以使該GET調用保持打開作為長期運行的GET調用,其保持打開,直到GET期滿(例如,在30秒鐘、I分鐘等之后)或直到從資源服務器(例如,電話服務器145)返回指示資源狀態(tài)的更新的狀態(tài)響應對象。例如,電話相關web應用可以通過向電話服務器145發(fā)出連續(xù)長期運行的GET來連續(xù)不斷地監(jiān)視電話硬件145的狀態(tài)。保持GET請求打開一段時間,而不是連續(xù)不斷輪詢資源服務器,可以為設備提供延長的電池壽命,但是,在一些實施方式中,連續(xù)或間歇的輪詢也可以用作長期運行的GET的替選。類似地,為了控制電話資源,web應用130可以向dev://www.fo0.com/telephone/cmd傳輸帶有與來自web應用的輸入相對應的命令的HTTP POST調用,例如XHR POST調用。例如,如果用戶選擇web應用130上的“呼叫”按鈕,其指示“拿起”電話來撥打電話呼叫的期望,則web應用130可以生成指示資源服務器145控制電話硬件165來執(zhí)行期望的操作的消息,例如JavaScript對象表示法(JSON)對象。僅出于說明目的,提供了上面的示例URL,并且其不應當被認為是限制??偟膩碚f,可以使用其他適當的獨立于平臺的HTTP通信協(xié)議來實現(xiàn)本公開的方面。如上所述,資源服務器140、145運作為在瀏覽器120中運作的web應用130和例如相機硬件160和電話硬件165的一個或多個系統(tǒng)資源之間的橋梁。資源服務器在瀏覽器120的虛擬存儲空間外運作,并且不受管轄瀏覽器120和在瀏覽器120內執(zhí)行的應用的安全協(xié)議約束。如此,資源服務器140、145可以能夠訪問用來控制系統(tǒng)資源的本機API,同時阻止非擴展的瀏覽器和在該非擴展的瀏覽器中運行的應用直接訪問這樣的本機API。在一些實施方式中,可以使用單個資源服務器來提供對多個資源的訪問。例如,可以將單個資源服務器用作為在web應用130和多個系統(tǒng)資源之間的橋梁,而不是分別使用單獨的相機服務器140和電話服務器145來提供對相機硬件160和電話硬件165的訪問。在其他實施方式中,可以使用多個資源服務器來提供對單個資源的訪問。例如,單個系統(tǒng)資源可以具有多個能力或能力類型,其每一個可以使用獨立資源服務器來訪問。在其他實施方式中,不同的資源服務器可以在不同的處理器上執(zhí)行。例如,相機服務器140可以在專用于相機硬件160的處理器上運作,以及電話服務器145可以在專用于電話硬件165的處理器上運作。計算設備110、115可以具有比圖1中所示的那些更多、更少或不同類型的相關聯(lián)的系統(tǒng)資源。例如,除了或不是相機硬件160和電話硬件165,計算設備可以包括一個或多個其他可訪問的系統(tǒng)資源(例如,傳感器、觸覺反饋機制、陀螺儀等)。僅出于說明目的,本文檔一般地描述了基于硬件的系統(tǒng)資源,并且應當理解的是,否則對在非擴展的web瀏覽器中執(zhí)行的web應用來說不可訪問的其他類型的系統(tǒng)資源也在本公開的范圍內。圖2是圖示在圖1的體系結構中的組件之間的示例通信的框圖。在該框圖中,web應用225在瀏覽器220中執(zhí)行并且被配置成通過服務器240控制硬件260。如上所述,瀏覽器220可以是標準、非擴展的web瀏覽器、或尚未被擴展成包括控制諸如硬件260的系統(tǒng)資源的接口的任何其他適當瀏覽器。Web應用225被配置成使用標準HTTP連接模式來與服務器240通信。例如,如所示,web應用225向服務器240發(fā)送HTTP GET和POST消息,并且服務器240以HTTP RESPONSE消息作出響應。如上所述,web應用225可以被配置成使用對服務器240的HTTP GET調用來監(jiān)視特定硬件資源的狀態(tài),以及使用對服務器240的HTTP POST調用來控制硬件資源。響應于這些調用中的任一個,服務器240可以用適當HTTP RESPONSE消息作出響應。例如,響應于監(jiān)視消息,服務器240可以在硬件260改變狀態(tài)時作出響應,并且可以用描述硬件260的更新狀態(tài)的消息作出響應。作為另一個示例,響應于控制消息,服務器240可以響應接收了該特定消息并且成功執(zhí)行了所請求的控制。服務器240還可以基于所執(zhí)行的控制來用硬件260的更新狀態(tài)作出響應。服務器240包括用來與硬件260的硬件控制器262對接的硬件接口控制器245。硬件接口控制器245可以包括描述如何處理來自web應用225的進來的HTTP調用的指令,以及還可以包括用于使用本機資源API或其他適當接口來訪問并控制例如硬件設備265的系統(tǒng)資源的能力的指令。例如,響應于從web應用225接收的HTTP GET調用,硬件控制器接口 245可以利用硬件260的本機API來請求硬件設備265的狀態(tài)。在一些實施方式中,服務器240可以用硬件265的當前狀態(tài)對HTTP GET請求直接作出響應。在這樣的實施方式中,web應用225可以利用對服務器240的連續(xù)輪詢來監(jiān)視硬件設備265的狀態(tài)。在其他實施方式中,服務器240可以僅在已更新了硬件設備265的狀態(tài)時才對HTTP GET請求作出響應。在這樣的實施方式中,web應用225可以利用一系列長期運行的GET調用來監(jiān)視硬件設備265的狀態(tài)。在一些實施方式中,服務器240可以通過在硬件控制器接口 245中實現(xiàn)的命令集與硬件260通信。例如,響應于與硬件設備265的特定操作相對應的HTTP POST命令,硬件控制器接口 245可以解析該命令、處理該命令并且生成對應于期望操作的控制消息。服務器240然后可以將該消息傳輸給硬件260,其中硬件控制器262可以類似地接收該命令并且促使設備265按照請求執(zhí)行操作。硬件控制器262然后可以例如用期望操作的狀態(tài)——例如,通過指示該操作是否成功或通過返回狀態(tài)碼,對服務器240作出響應。在一些實施方式中,硬件控制器接口 245然后可以對來自硬件控制器262的狀態(tài)或其他響應進行解釋,以向瀏覽器220提供硬件設備265的更新狀態(tài)。硬件260包括硬件控制器262和硬件設備265。硬件控制器262根據常規(guī)技術,諸如通過向硬件設備265提供一個或多個控制信號來操作硬件設備265。硬件控制器262可以具有向外部調用者提供對硬件設備265的功能的訪問的一個或多個相關聯(lián)的API。典型地,使這些API對在設備上運作的某些本機應用可用,但是不使這些API對在設備上運作的非擴展的瀏覽器內運作的web應用可用。如此,根據在本公開中描述的技術,將服務器240用作在瀏覽器220和硬件260之間的橋梁,以提供在web應用225和硬件設備265之間的雙向命令協(xié)議。圖3是圖示用于使用在瀏覽器中運作的應用來控制系統(tǒng)資源的示例過程300的泳道圖。過程300可以例如由體系結構100的各種組件執(zhí)行,并且僅為了清楚陳述,隨后描述將體系結構100用作為用于描述該過程的示例的基礎。例如,在該過程中所示的步驟可以通過在瀏覽器120中運作的應用(例如,web應用130)、資源服務器(例如,電話服務器145)以及系統(tǒng)資源(例如,電話硬件165)來實現(xiàn)。然而,可以使用其他組件或組件組合來執(zhí)行過程 300。過程300在非擴展的瀏覽器中運作的應用接收輸入(305)時開始。該輸入可以來自對應用來說是外部的源(諸如,用戶輸入或對應用的外部調用)、或可以是應用自身所生成的自動輸入(諸如指示應用應當采取特定動作的時間的應用或任務計時器)。出于示例目的,可以假設用戶已點擊了在移動設備的瀏覽器中正顯示的網頁上的按鈕,其指示用戶的使用移動設備的電話硬件來撥打呼叫的期望。響應于該輸入,應用向資源服務器傳輸消息(310)。在該特定示例中,由于用戶的輸入指示待由資源采取的動作(例如,“拿起”電話以為用戶撥打呼叫作準備),因此,該消息可以以包括與期望操作相對應的命令(例如,CALL)的HTTP POST消息的形式。在接收所傳輸的消息之后,資源服務器對該消息進行處理(315),并且生成控制消息(320)??梢曰谠赑OST消息中發(fā)送的命令,在該示例中其是CALL,來生成該控制消息。資源服務器可以將包括CALL命令的HTTP POST消息映射到用于系統(tǒng)資源的適當本機API。例如,如果該本機API不包括CALL操作,但是替代地包括對應的prepare Telephone和dialTelephone過程,則資源服務器可以生成利用該本機API所透露的過程的控制消息,并且可以適當填充與那些過程相關聯(lián)的任何參數。資源服務器然后向資源傳輸該控制消息(325)。在接收所傳輸的控制消息之后,資源對該控制消息進行處理(330),并且執(zhí)行在該控制消息中所指示的操作(335)。例如,電話資源的設備驅動器可以使電話硬件準備好撥打呼叫。該資源然后可以返回狀態(tài)(340),其指示例如操作是否成功或已將電話硬件的狀態(tài)從“掛機”狀態(tài)更新成“連接”狀態(tài)。在從資源接收狀態(tài)之后,資源服務器對該狀態(tài)進行處理(345)。例如,如果資源沒有提供更新的狀態(tài)信息,而是僅提供操作成功的指示符,則資源服務器可以將該狀態(tài)解釋成意味著已將電話硬件的狀態(tài)從“掛機”狀態(tài)更新成“連接”狀態(tài)。以這種方式,可以將更復雜的處理和狀態(tài)維護職責與資源服務器、資源或兩者相關聯(lián)。在從資源服務器接收狀態(tài)之后,應用也可以對該狀態(tài)進行處理(350 )。作為應用對狀態(tài)進行處理的一個示例,應用可以基于資源的當前狀態(tài)來向用戶提供更新的顯示以指示對用戶可用的可能動作。例如,當電話硬件處于“掛機”狀態(tài)時,可以向用戶示出用于拿起電話撥號的按鈕、撥號選項等,而當硬件處于“連接”狀態(tài)時,可以向用戶示出用于斷開或取消呼叫的按鈕。圖4是圖示用于使用在瀏覽器中運作的web應用來控制系統(tǒng)資源的示例過程400的流程圖。過程400類似于過程300,但是包括關于web應用的處理的另外細節(jié)。如所示,過程400包括與監(jiān)視系統(tǒng)資源(狀態(tài)路徑)和控制系統(tǒng)資源(動作路徑)相對應的單獨路徑。僅出于說明目的,將路徑示出為單個過程的單獨線路。應當理解的是,在某些實施方式中,可以(例如,通過使用單獨線程或進程)同時處理該兩個路徑來允許對系統(tǒng)資源的監(jiān)視和對系統(tǒng)資源的控制同時發(fā)生。過程400在web應用接收操作輸入(405)時開始。如上所述,該輸入可以對應于用戶輸入或其他外部輸入、或可以對應于來自應用自身的內部輸入。過程400然后確定該操作是包括對系統(tǒng)資源的狀態(tài)的請求還是包括資源待采取的動作(410)。如果操作包括對系統(tǒng)資源的狀態(tài)的請求,則web應用向資源服務器傳輸HTTP GET消息(例如,XHR GET調用)(415)??梢允乖揋ET調用保持打開作為長期運行的GET調用,其保持打開直到GET超時(例如,在30秒鐘、I分鐘等之后)或直到從資源服務器返回指示資源狀態(tài)的更新的狀態(tài)響應對象。如此,在傳輸GET消息之后,web應用可以等待待從資源服務器返回的狀態(tài)更新(420)。如果確定GET已超時(425),則可以傳輸隨后長期運行的GET消息(415)。在一些實施方式中,可以在web應用在運行的同時無限期重復在超時之后重新傳輸GET消息的循環(huán)。以這種方式,web應用可以連續(xù)不斷監(jiān)視系統(tǒng)資源的狀態(tài)更新。在等待狀態(tài)更新時,如果確定已從資源服務器接收了更新(430),則web應用可以視情況對該更新進行處理(440)。該更新可以包括資源的狀態(tài)的指示符。例如,在電話系統(tǒng)資源的情況下,來自資源服務器的更新可以指示電話硬件處于“掛機”狀態(tài)。Web應用可以基于狀態(tài)信息向用戶提供適當功能,諸如通過顯示在電話硬件處于“掛機”狀態(tài)時用戶可以米取的各種動作。如果操作包括資源待采取的動作,則web應用生成待被傳輸給資源服務器的HTTPPOST消息(例如,XHR POST調用)(445),其進而促使資源服務器使資源執(zhí)行所請求的動作。POST消息可以包括例如與待被控制的資源的API相對應的命令。使用電話資源的示例,如果用戶選擇在web應用上的“呼叫”按鈕,則web應用可以生成指示電話資源服務器促使電話硬件按照指定撥打呼叫的消息。在該示例中,“呼叫”命令或類似過程可以被包括作為用來控制電話硬件的本機API的一部分。然后將該POST消息傳輸給資源服務器(450),其對該消息進行適當處理,并且促使對應資源執(zhí)行所請求的操作。如上所述,資源服務器可以將來自web應用的原始POST消息映射到設備的適當API。響應于該POST消息,資源服務器可以提供由web應用接收的狀態(tài)更新(455 )。如上所述,web應用然后可以對更新進行適當處理(440 )。圖5是圖示可以用來實現(xiàn)在本文檔中描述的技術中的一個或多個的計算系統(tǒng)500的示例組件的概念圖。如所示,計算系統(tǒng)500可以包括各種類型的計算設備,諸如臺式計算機、膝上型計算機、網絡服務器或大型計算機。盡管未被示出,然而,并入計算系統(tǒng)500的設備可以還或替選地包括被配置成通過網絡進行計算和/或通信的任何數量的其他設備,包括移動設備,諸如移動電話、個人數字助理、智能手機或其他移動設備。任何這些計算設備可以代表在圖1中所描繪的本地計算設備110、115。系統(tǒng)500包括處理器510、存儲器520、存儲設備530以及輸入/輸出組件540。組件510、520、530和540中的每一個可以通過用于組件間通信的系統(tǒng)總線550互連。處理器510可以被配置成處理用于在系統(tǒng)500內執(zhí)行的指令。處理器510可以是單線程處理器、或可以是被配置成同時并行處理各種指令的多線程處理器。處理器510可以能夠對存儲在存儲器520中的指令或存儲在存儲設備530上的指令進行處理。在一個示例中,處理器510可以被配置成對促使web應用130在瀏覽器120內執(zhí)行來在系統(tǒng)500上依據在此描述的技術操作的指令進行處理。系統(tǒng)500進一步包括外圍設備560。外圍設備560可以包括例如用于向系統(tǒng)500的用戶展現(xiàn)視覺信息的監(jiān)視器或其他顯示設備。外圍設備560可以進一步包括使用戶能夠向系統(tǒng)500輸入數據的一個或多個輸入設備,例如鍵盤、鼠標、觸摸板、軌跡板等。外圍設備560可以進一步包括輸出信息的打印機或其他設備。在一個示例中,處理器510可以被配置成對促使例如圖1的瀏覽器120的瀏覽器通過外圍設備560的顯示器向用戶顯示的指令進行處理。瀏覽器120可以被配置成如在此所述地執(zhí)行web應用130。瀏覽器120可以在上述任何計算設備的處理器上運作。存儲器520可以被配置成在操作期間存儲在系統(tǒng)500內的信息??梢詫⒋鎯ζ?20描述為計算機可讀存儲介質。在一些示例中,存儲器520是暫時性存儲器,意味著存儲器520的主要目的不是長期存儲。還可以將存儲器520描述為易失性存儲器,意味著存儲器520在關閉計算機時不維持存儲的內容。易失性存儲器的示例包括隨機存取存儲器(RAM)、動態(tài)隨機存取存儲器(DRAM)、靜態(tài)隨機存取存儲器(SRAM)以及本領域已知的其他類型的易失性存儲器。在一些示例中,可以使用存儲器520來存儲程序指令以供處理器510執(zhí)行。在其他示例中,存儲器520可以由運行于系統(tǒng)500上的軟件或應用使用來在程序執(zhí)行期間暫時存儲信息。也可以將存儲設備530描述為計算機可讀存儲介質。與存儲器520相比,存儲設備530可以被配置成存儲比存儲器520相對更大量的信息。存儲設備530可以被進一步配置為對信息進行長期存儲。在一些示例中,存儲設備530是非易失性存儲器組件。與易失性存儲器組件相比,無論是否向存儲設備530供應電力,非易失性存儲器均可以存儲數據。非易失性存儲設備的示例包括磁硬盤、光盤、軟盤、閃存以及其他形式的電可編程存儲器(EPROM)或電可擦可編程(EEPROM)存儲器。在此描述的技術可以根據如參考圖5描述的計算系統(tǒng)500,以數字電子電路、計算機硬件、固件、軟件或數字電子電路、計算機硬件、固件、軟件的任何組合來實現(xiàn)。例如,任何在此描述的技術可以通過存儲在計算機可讀存儲介質(例如,存儲器520和/或存儲設備530)中、處理器510可讀取來促使處理器510執(zhí)行本公開的技術的可執(zhí)行程序指令來實現(xiàn)。在其他示例中,本公開的技術中的部分或全部可以替代或另外通過為特定目的配置的專用硬件來實現(xiàn),例如,現(xiàn)場可編程門陣列(FPGA)、專用集成電路(ASIC)、數字信號處理器(DSP)或另一個類似設備。詞語“處理器”或“處理電路”一般可以指單獨或結合其他邏輯電路的任何前述邏輯電路、或任何其他等價電路??梢栽谕辉O備或單獨設備內實現(xiàn)這樣的硬件、軟件和固件來支持在本公開中描述的各種操作和功能。另外,任何所述單元、模塊或組件可以在一起實現(xiàn)或分別被實現(xiàn)為分離但是可共同操作的邏輯器件。將不同特征描述為模塊或單元意在強調不同功能方面,并且并不一定暗指這樣的模塊或單元必須由單獨的硬件或軟件組件實現(xiàn)。相反,與一個或多個模塊或單元相關聯(lián)的功能可以由單獨的硬件或軟件組件執(zhí)行、或被集成在共同或單獨的硬件或軟件組件內。所述特征可以以在可編程系統(tǒng)上可執(zhí)行的一個或多個計算機程序來有利地實現(xiàn),該可編程系統(tǒng)包括至少一個可編程處理器,其被耦接以從計算機可讀存儲介質接收數據和指令,以及向計算機可讀存儲介質傳輸數據和指令。計算機程序可以以任何形式的編程語言編寫,包括編譯或解釋語言,并且其可以以任何形式被部署,包括作為獨立程序或作為模塊、組件、子程序或適于在計算環(huán)境中使用的其他單元。上述特征可以在包括下述的計算機系統(tǒng)中實現(xiàn):后端組件,諸如數據服務器;或中間件組件,諸如應用服務器或因特網服務器;或前端組件,諸如具有圖形用戶界面或因特網瀏覽器的客戶端計算機;或以上任何組合。系統(tǒng)的組件可以通過諸如通信網絡的任何形式或介質的數字數據通信連接。通信網絡的示例包括例如LAN、WAN以及形成因特網的計算機和網絡。計算機系統(tǒng)可以包括客戶端和服務器。諸如上述,客戶端和服務器一般相互遠離并且典型地通過網絡交互??蛻舳撕头掌鞯年P系憑借運行于各個計算機上并且相互具有客戶端-服務器關系的計算機程序而產生。已描述了多個實施例。然而,應當理解的是,在不背離本公開的精神和范圍的情況下,可以進行各種修改。例如,參考受web應用控制的硬件設備描述了本文檔的大部分,但是,根據在此描述的技術,還可以控制其他類型的系統(tǒng)資源。作為另一個示例,在附圖中描繪的邏輯流不需要所示的特定順序或連續(xù)順序,來實現(xiàn)期望結果。另外,可以向所述流程提供其他動作、或可以從所述流程除去動作,以及可以將其他組件添加到所述系統(tǒng)、或從所述系統(tǒng)移除組件。因此,其他實施例在所附權利要求的范圍內。
權利要求
1.一種包括指令的計算機可讀存儲介質,所述指令當被執(zhí)行時促使一個或多個處理器: 在計算設備的web瀏覽器內執(zhí)行web應用; 執(zhí)行web服務器,所述web服務器具有用于從所述web應用接收超文本傳輸協(xié)議(HTTP)消息的第一接口和用于與所述計算設備的硬件組件通信的第二接口 ; 在所述web應用處,接收影響所述硬件組件的操作的輸入; 將影響所述硬件組件的所述操作的HTTP消息從所述web應用傳輸給所述web服務器;在所述web服務器處,將所述HTTP消息處理成包括關于所述操作的信息的硬件控制消息;以及 將所述硬件控制消息從所述web服務器傳輸給所述硬件組件以影響所述硬件組件的所述操作。
2.根據權利要求 1所述的計算機可讀存儲介質,其中所述操作包括對所述硬件組件的狀態(tài)的請求。
3.根據權利要求2所述的計算機可讀存儲介質,進一步包括指令,所述指令當被執(zhí)行時促使所述一個或多個處理器:在所述web服務器處,接收所述硬件組件的所述狀態(tài)的指/Jn ο
4.根據權利要求2所述的計算機可讀存儲介質,其中所述HTTP消息包括HTTPGET消肩、O
5.根據權利要求4所述的計算機可讀存儲介質,其中所述HTTPGET消息在所述web應用和所述web服務器之間保持打開,直到所述web服務器用所述硬件組件的更新狀態(tài)的指示作出響應或直到所述消息在一段時間之后期滿,無論哪個首先發(fā)生。
6.根據權利要求1所述的計算機可讀存儲介質,其中所述操作包括待由所述硬件組件采取的動作。
7.根據權利要求6所述的計算機可讀存儲介質,其中所述HTTP消息包括HTTPPOST消肩、O
8.根據權利要求7所述的計算機可讀存儲介質,其中所述HTTPPOST消息包括與所述硬件組件的應用編程接口相對應的命令。
9.根據權利要求8所述的計算機可讀存儲介質,其中當被執(zhí)行時促使所述一個或多個處理器將所述HTTP消息處理成硬件控制消息的所述指令包括當被執(zhí)行時促使所述一個或多個處理器將所述HTTP POST消息中的命令映射到所述硬件組件的所述應用編程接口的指令。
10.一種方法,包括: 在計算設備的web瀏覽器內執(zhí)行web應用; 執(zhí)行資源服務器,所述資源服務器具有用于從所述web應用接收超文本傳輸協(xié)議(HTTP)消息的第一接口和用于與所述計算設備的系統(tǒng)資源通信的第二接口 ; 在所述web應用處,接收影響所述系統(tǒng)資源的操作的輸入; 將影響所述系統(tǒng)資源的所述操作的HTTP消息從所述web應用傳輸給所述資源服務器; 在所述資源服務器處,將所述HTTP消息處理成包括關于所述操作的信息的資源控制消息;以及 將所述資源控制消息從所述資源服務器傳輸給所述系統(tǒng)資源以影響所述系統(tǒng)資源的所述操作。
11.根據權利要求10所述的方法,其中所述系統(tǒng)資源包括所述計算設備的硬件組件。
12.根據權利要求10所述的方法,其中所述操作包括對所述系統(tǒng)資源的狀態(tài)的請求。
13.根據權利要求12所述的方法,進一步包括:在所述資源服務器處,接收所述系統(tǒng)資源的所述狀態(tài)的指示。
14.根據權利要求12所述的方法,其中所述HTTP消息包括HTTPGET消息。
15.根據權利要求14所述的方法,其中所述HTTPGET消息在所述web應用和所述資源服務器之間保持打開,直到所述資源服務器用所述系統(tǒng)資源的更新狀態(tài)的指示作出響應或直到所述消息在一段時間之后期滿,無論哪個首先發(fā)生。
16.根據權利要求10所述的方法,其中所述操作包括待由所述系統(tǒng)資源采取的動作。
17.根據權利要求16所述的方法,其中所述HTTP消息包括HTTPPOST消息。
18.根據權利要求17所述的方法,其中所述HTTPPOST消息包括與所述系統(tǒng)資源的應用編程接口相對應的命令。
19.根據權利要求18所述的方法,其中將所述HTTP消息處理成資源控制消息包括將所述HTTP POST消息中的所述命令映射到所述系統(tǒng)資源的所述應用編程接口。
20.—種系統(tǒng),包括:` 在計算設備的瀏覽器中可執(zhí)行的web應用; 資源服務器,所述資源服務器被配置成控制所述計算設備的系統(tǒng)資源,所述資源服務器具有用于從所述web應用接收超文本傳輸協(xié)議(HTTP)消息的第一接口和用于與所述系統(tǒng)資源通信的第二接口 ;以及 用于通過所述資源服務器使用所述web應用來控制所述系統(tǒng)資源的裝置。
全文摘要
本文檔的主題可以在包括在計算設備的web瀏覽器內執(zhí)行web應用的方法等中實現(xiàn)。該方法還包括執(zhí)行資源服務器,其帶有用于從web應用接收HTTP消息的接口和用于與計算設備的系統(tǒng)資源通信的接口。該方法進一步包括在web應用處接收影響系統(tǒng)資源的操作的輸入。該方法還包括將影響系統(tǒng)資源的操作的HTTP消息從web應用傳輸給資源服務器。該方法進一步包括將該HTTP消息處理成包括關于該操作的信息的資源控制消息。該方法還包括將該資源控制消息從資源服務器傳輸給該系統(tǒng)資源以影響該系統(tǒng)資源的操作。
文檔編號G06F17/30GK103168301SQ201180048200
公開日2013年6月19日 申請日期2011年8月1日 優(yōu)先權日2010年8月10日
發(fā)明者羅伯特·約翰·克勒格爾, 布賴恩·約恩格 申請人:谷歌公司