專利名稱:集成應用的制作方法
技術領域:
本發明涉及集成應用。特別地,本發明涉及將與服務提供方相關聯的客戶端應用與設備上的一個或多個web應用實例進行集成。
背景技術:
服務提供方可以提供客戶端應用以便在設備上使用。客戶端應用可以被安裝在設備上以便隨后在設備的設備平臺上使用。在一些情況下,服務提供方可以提供客戶端應用,就其具有一些基于web的組件和一些原有組件的意義而言,所述客戶端應用為混合應用,所述基于web的組件采用基于web的技術(例如,依據HTML 5標準)而所述原有組件則采用設備平臺原有的技術(例如,C++)。客戶端應用的原有部分允許客戶端應用依據服務提供方所實施的技術進行工作。另一方面,客戶端應用的基于web的組件允許客戶端應用以簡單方式與實施基于web的技術的其它應用進行集成。特別地,客戶端應用的用戶接口(UI)模塊可以使用基于web的技術來實施,從而客戶端應用的UI模塊可以被嵌入基于web的應用中,諸如由不同于服務提供方的實體(這里稱之為“合作伙伴”)所提供的(瀏覽器中執行的)web應用的實例。web瀏覽器的實例可以是指用戶能夠與之進行交互的web瀏覽器的任意單獨接口,諸如web瀏覽器的窗口、標簽或框架,或者諸如微軟Internet Explorer和GoogleChrome的來自不同提供商的不同web瀏覽器實例。每個web應用實例可以從服務提供方獲取客戶端應用的適當UI小部件并且能夠在web應用實例中實施該UI小部件。例如,web應用實例可以從與服務提供方相關聯的服務器加載JavaScript和層疊樣式表(CSS)文件,其中JavaScript代碼可以由web應用實例調用以在web應用實例內例示客戶端應用的具體UI元素。使得web技術在服務提供方的客戶端應用中的比重最大化由此使得客戶端應用的原有部分保持最小化會是有利的。基于web的技術與原有技術相比具有出眾的升級能力。例如,JavaScript、CSS和HTML文件可以通過互聯網動態下載,由此使得便于改變(例如,升級)客戶端應用的基于web的部分。與之相比,改變客戶端應用的原有部分將需要在設備上安裝原有部分(使用例如C++的原有技術),這與通過互聯網下載文件相比會更為困難。客戶端應用的控制和狀態模塊以及客戶端應用的原有部分可以被嵌入設備上的每個web應用實例。這允許客戶端應用的控制和狀態模塊使用基于web的技術(而不是原有技術)。然而,通過將客戶端應用的控制和狀態模塊嵌入設備上的每個web應用實例,就無法在客戶端應用與來自多個合作伙伴的多個web應用實例的集成之間進行協調。每個合作伙伴在用戶設備上形成單獨的井倉(silo),這妨礙了客戶端應用跨設備上來自多個合作伙伴的多個web應用實例的全局控制。此外,該方法僅在針對設備上服務提供方應用的原有部分的多個實例沒有約束的情況下是適用的。可能存在將客戶端應用的原有部分約束為僅在設備上例示一次的原因,這些原因包括資源約束或遺留考慮。例如,實際上在處理互聯網通信服務的客戶端應用的領域中發現了客戶端應用的原有部分僅在設備上例示一次的約束。
發明內容
根據本發明的第一方面,提供了一種將與服務提供方相關聯的客戶端應用與設備的設備平臺上實施的至少一個web應用實例進行集成的方法,該方法包括將客戶端應用相應的至少一個用戶接口模塊嵌入至少一個web應用實例,所述至少一個用戶接口模塊使用基于web的技術所實施;以集中方式在設備上實施客戶端應用的原有部分,客戶端應用的所述原有部分被安裝在設備上并且使用設備平臺原有的技術所實施;并且以集中方式在設備上實施客戶端應用的控制模塊,所述控制模塊使用基于web的技術所實施。有利地,控制模塊(其可以是客戶端應用的控制和狀態模塊)被集中實施在設備上由此允許在設備處對客戶端應用進行集中的設備范圍的控制,以使得客戶端應用跨設備的表現能夠進行協調。此外,控制模塊在設備上使用基于web的技術實施,由此允許控制模塊使用基于web的技術進行改變(例如,升級)。針對如何在服務提供方所提供的混合web和原有客戶端應用以及“合作伙伴”(即不同于服務提供方的實體)所提供的web應用之間實施客戶端側的web集成(也稱作“混 搭”)而言,本發明的實施例提供新穎且有所改進的解決方案。包括Π模塊的混合客戶端應用的元素可以被插入(也就是嵌入)合作伙伴的一個或多個web應用實例中。在設備上存在多于一個的web應用實例的情況下,混合客戶端應用的元素可以與其它合作伙伴應用同時嵌入合作伙伴的web應用實例。實施例在服務提供方的客戶端應用的原有部分一次僅能夠在設備上例示一次的環境中是特別有用的。如以上所描述的,這樣的約束可能有許多原因,包括資源約束或遺留考慮,并且該約束例如實際上能夠在互聯網通信服務的領域中找到。在優選實施例中,服務提供方的客戶端應用被劃分為三個組成部分1.用戶接口模塊(這里稱作“Π小部件”),其以諸如單純web技術的web技術所實施,例如采用HTML 5。多個這樣的Π小部件可以被嵌入同時在設備上運行的各個合作伙伴web應用的多個實例中。2.應用的原有部分,其確切地被例示一次并且在單獨的原有程序內運行,在這里被稱作“中央應用后臺程序”。3.集中的基于web的控制和狀態模塊,其利用諸如單純web技術的web技術所構建,例如利用HTML 5。該控制和狀態模塊確切地被例示一次,為許多UI小部件的需要提供服務。其對UI小部件針對應用的原有部分的訪問進行調解。其還始終獨立于任意UI小部件而運行。如以上所描述的,有利地,在實施例中能夠實現兩個通常矛盾的目標1.服務提供方的客戶端應用中Web技術的比重最大化,由此使得客戶端應用的原有部分保持很小。如以上所描述的,這允許基于web的技術內在的出眾升級能力得以實施。客戶端應用的基于web的部分的HTML 5加工品(artefact)可以按照需要從服務提供方的web服務器以JavaScriptXSS和HTML文件的形式被下載到設備。這允許服務提供方以類似于對web內容進行修正的方式容易地對客戶端應用的基于web的部分(其包括客戶端應用的控制模塊)進行改變(例如,升級)。2.出于客戶端應用表現跨設備的最終協調的原因,提供了集中的、設備范圍的控制和狀態模塊。一次僅可以在設備上實施客戶端應用的原有部分的一個實例。類似地,一次僅可以在設備上實施客戶端應用的控制模塊的一個實例。在優選實施例中,客戶端應用的原有部分與客戶端應用的控制模塊在設備上使用集中程序來實施。客戶端應用的原有部分可以包括以下的至少一個(i)服務提供方的原有的庫,
(ii)用于促成使用基于web的技術的設備上的組件之間的信令傳送的遠程過程調用樞紐(hub),和(iii) JavaScript 引擎的實例。控制模塊可以經由互聯網從服務提供方下載至設備。該方法進一步包括經由基于web的通信升級控制模塊。控制模塊可以促成至少一個用戶接口模塊和客戶端應用的原有部分之間的訪問。可以針對每個web應用實例實施相應的瀏覽器插件,所述瀏覽器插件具有用于與客戶端應用的控制模塊和原有部分中的至少一個進行通信的遠程過程調用(RPC)功能。遠程過程調用功能可以促成用于在至少一個web應用實例以及客戶端應用的控制模塊和原有部分中的所述至少一個之間中繼控制消息的傳輸控制協議(TCP)連接。控制消息可以使用發布-訂閱通信進行中繼。在設備上可以實施多個web應用實例,其中每個web應用示例可以由客戶端應用的控制模塊所控制。控制模塊可以是客戶端應用的控制和狀態模塊。基于web的技術可以符合HTML 5標準。根據本發明的第二方面,提供了一種用于將與服務提供方相關聯的客戶端應用與設備的設備平臺上實施的至少一個web應用實例進行集成的計算機程序產品,該計算機程序產品記錄于非瞬時的計算機可讀介質上并且被配置為當在設備的處理器上執行時執行操作將客戶端應用相應的至少一個用戶接口模塊嵌入至少一個web應用實例,所述至少一個用戶接口模塊使用基于web的技術所實施;以集中方式在設備上實施客戶端應用的原有部分,客戶端應用的所述原有部分被安裝在設備上并且使用設備平臺原有的技術所實施;并且以集中方式在設備上實施客戶端應用的控制模塊,所述控制模塊使用基于web的技術所實施。根據本發明的第三方面,提供了一種被配置為將與服務提供方相關聯的客戶端應用與設備的設備平臺上實施的至少一個web應用實例進行集成的設備,該設備被配置為將客戶端應用相應的至少一個用戶接口模塊嵌入至少一個web應用實例,所述至少一個用戶接口模塊使用基于web的技術所實施;以集中方式在設備上實施客戶端應用的原有部分,客戶端應用的所述原有部分被安裝在設備上并且使用設備平臺原有的技術所實施;并且以集中方式在設備上實施客戶端應用的控制模塊,所述控制模塊使用基于web的技術所實施。客戶端應用的原有部分和客戶端應用的控制模塊可以在設備上使用集中程序來實施。
為了更好地理解本發明并且示出其如何生效,現在將通過示例參考以下附圖,其中
圖1示出了根據優選實施例的系統; 圖2表示第一現有技術部署中的web應用實例和客戶端應用的集成;
圖3表示第二有技術部署中的web應用實例和客戶端應用的集成;
圖4表示依據優選實施例的web應用實例和客戶端應用的集成;
圖5是根據優選實施例的將客戶端應用與至少一個web應用實例進行集成的處理的流程 圖6是客戶端應用組件和web應用實例的組件之間的示例交互的第一消息序列圖;和 圖7是客戶端應用組件和兩個web應用實例的組件之間的示例交互的第二消息序列圖。
具體實施例方式圖1示出了設備102在其中進行操作的系統100。設備102能夠通過系統100的網絡112進行通信。設備102與用戶104相關聯并且包括用于處理設備102上的數據的處理器(CPU) 106以及用于存儲設備102上的數據的存儲器108。設備102可以是固定或移動設備。設備102例如可以是移動電話、個人數字助理(PDA)、個人計算機(PC)(例如包括Windows , Mac OS 和Linux PC)、膝上計算機、電視、游戲設備或者能夠連接至網絡112的其它嵌入式設備。設備102被配置為從用戶104接收信息并且向其輸出信息。例如,設備102包括用于向用戶104輸出視覺數據的顯示器110。顯示器110可以包括允許用戶104經由顯示器110向CPU 106輸入數據的觸摸敏感屏幕。設備102可以包括圖1中沒有示出的提供與用戶104之間的用戶接口的另外組件。例如,設備102可以包括用于接收音頻信號的麥克風;用于輸出音頻信號的輸出器件210 ;和/或用于從用戶104接收輸入的鍵盤、小鍵盤、操縱桿或鼠標。設備102實施了能夠在其上執行應用的設備平臺。例如,設備平臺可以被適配為適用于移動設備或適用于固定設備。設備平臺描述了其中應用在設備102進行實施的環境并且可以包括(i)在設備102上實施的操作系統,和/或(ii)特定類型的設備,例如具有小型屏幕的移動設備或者具有大型屏幕的固定設備。網絡112例如可以是互聯網。如圖1所示,系統100在網絡112上包括三個服務器服務器X 114、服務器Y 116和服務器Z 118。系統100被配置為使得設備102能夠通過網絡112與服務器114、116和118進行通信,以使得能夠在設備102和服務器114、116和118之間傳送數據。作為示例,服務器114具有web地址“x. com”,服務器116具有web地址“y. com”,并且服務器118具有web地址“z. com”。在這里所描述的優選實施例中,月艮務器114是服務提供方所操作的服務器,其能夠提供客戶端應用以便在設備102上進行安裝,而服務器116和118則是允許設備102通過網絡112下載網頁以便在設備102的顯示器110上進行顯示的web服務器。這里所描述的優選實施例涉及將服務提供方的客戶端應用與關聯于web服務器116和118的web應用實例進行集成。現有技術中使用兩種不同方法來在設備102上將混合服務提供方的客戶端應用與web應用實例進行集成。圖2表示第一現有技術部署中的兩個web應用實例204y和204z與客戶端應用的集成。在該第一現有技術部署中,客戶端應用的原有部分由web應用實例202中相應的插件210所保管。依據用于執行應用的已知技術,這里所指的應用在設備102的CPU 106上執行。如果應用要存儲數據,則數據可以存儲在設備102的存儲器108中。web瀏覽器202y與合作伙伴Y所操作的服務器Y 116相關聯。web瀏覽器202y包括在設備102上實施的web應用實例204y。web瀏覽器202y還包括在設備102上實施客戶端應用的原有部分(包括原有庫212y)的實例的瀏覽器插件210y。類似地,web瀏覽器202z與合作伙伴Z所操作的服務器Z 118相關聯。web瀏覽器202z包括在設備102上實施的web應用實例204z。web瀏覽器202z還包括在設備102上實施客戶端應用的原有部分(包括原有庫212z)的實例的瀏覽器插件210z。web應用實例204y和204z源于處于域y. com和z. com的web服務器116和118,并且經由網絡112被下載到設備102。這些web應用實例204y和204z中的每一個在web瀏覽器的單獨實例(20\和2022)中運行。通過web瀏覽器的 實例,在這里表示窗口、標簽或框架,包括各種瀏覽器提供商(例如,瀏覽器1:微軟Internet Explorer,瀏覽器2 :G00gleChrome)的同時使用。每個web應用實例204y和204z構建服務提供方的適當UI小部件(分別為206y和206z)。UI小部件206是服務提供方的客戶端應用的UI模塊。UI小部件206源于處于域X. com的服務提供方的web服務器114。在圖2 (以及以下所描述的圖3和圖4)中,我們利用白色表明設備102處實施的符合HTML 5標準的web組件,例如利用HTML、JavaScript和CSS工具所實施的那些組件。在圖2 (以及以下所描述的圖3和圖4)中,我們利用灰色表明需要在設備102上進行安裝的服務提供方的原有組件。這些原有組件使用非HTML 5的工具所開發,例如使用C++。服務器116上(也就是說,在域y. com)的動態內容被下載到瀏覽器202y上的web應用實例204y上,并且當該動態內容在設備102上執行時,其使得web應用實例204y從與服務提供方相關聯的(處于域X. com的)服務器114下載JavaScript和CSS文件。來自服務器114 (X. com)的所下載JavaScript代碼指示web應用實例204y在web應用實例DOM(文檔對象模型)內例示客戶端應用的具體Π元素。這在圖2中示出,借此Π小部件206y被例示在web應用實例204y中。如圖2所示,客戶端的控制和狀態模塊208y也在web應用實例204y內例示。類似地,服務器118上(也就是說,在域z. com)的動態內容被下載到瀏覽器202z上的web應用示例204z上,并且當該動態內容在設備102上執行時,其使得web應用實例204z從與服務提供方相關聯的(處于域X. com的)服務器114下載JavaScript和CSS文件。來自服務器114 (X. com)的所下載JavaScript代碼指示web應用實例204z在web應用實例DOM (文檔對象模型)內例示客戶端應用的具體Π元素。這在圖2中示出,借此Π小部件206z被例示在web應用實例204y中。如圖2所示,客戶端的控制和狀態模塊208z也在web應用實例204z內例示。從圖2可以意識到的是,從(處于域X. com的)服務器114下載的客戶端應用的基于web的部分是分層的并且UI模塊206從控制和狀態模塊208劃分出來。通過將它們保管在服務提供方所提供的相應瀏覽器插件210y和210z中服務提供方的客戶端應用的原有功能被使得可由web應用實例204y和204z上的web內容所訪問。如以上所描述的,瀏覽器插件210,和210z被安裝在設備102上并且使用設備102的設備平臺原有的技術。在圖2所示的部署中,獨立于客戶端應用在瀏覽器2022上的實施,客戶端應用獨立地實施在瀏覽器202y上。這意味著無法在服務提供方的客戶端應用與來自多個合作伙伴的瀏覽器202y和202z的集成之間進行協調。每個合作伙伴的集成在用戶設備102上形成單獨的井倉,從而無法提供客戶端應用的設備范圍的控制。此外,圖2所示的部署僅在沒有針對服務提供方的客戶端應用的原有部分的多個例示的約束的情況下適用。如以上所描述的,會有許多原因來實施這樣的約束,例如在客戶端應用與互聯網通信服務相關時。因此能夠意識到的是,圖2所示的部署存在問題。圖3表示第二現有技術部署中兩個web應用實例304y和304z與客戶端應用的集成。在該第二現有技術部署中,客戶端應用的原有部分由在這里被稱作中央應用后臺程序316的中央程序所保管。依據用于執行應用的已知技術,這里所指的應用在設備102的CPU106上執行。如果應用要存儲數據,則該數據可以被存儲在設備102的存儲器108中。 web瀏覽器302y與合作伙伴Y所操作的服務器Y 116相關聯。web瀏覽器30\包括在設備102上實施的web應用實例304y。web瀏覽器302y還包括RPC插件314y,其在瀏覽器插件314y中提供瘦遠程過程調用(RPC)功能。類似地,web瀏覽器302z與合作伙伴Z所操作的服務器Z 118相關聯。web瀏覽器302z包括在設備102上實施的web應用實例304z。web瀏覽器302z還包括RPC插件314z,其在瀏覽器插件314z中提供瘦遠程過程調用(RPC)功能。設備實施了中央應用后臺程序316,其上實施了服務提供方的客戶端應用的原有部分以及控制和狀態模塊308。中央應用后臺程序316能夠使用插件31\和314z的RPC功能通過傳輸控制協議(TCP)連接與RPC插件314y和314z進行通信。中央應用后臺程序316可以由服務提供方安裝在設備102上并且使用設備102的設備平臺的原有技術(例如,C++)。中央應用后臺程序316使用控制和狀態模塊308提供客戶端應用的設備范圍的控制。如以上關于圖2所描述的,web應用實例304y和304z源于處于域y. com和z. com的web服務器116和118,并且經由網絡112被下載到設備102。這些web應用實例304y和304z中的每一個在web瀏覽器的單獨實例(302y和302z)中運行。通過web瀏覽器的實例,在這里表示窗口、標簽或框架,包括各種瀏覽器提供商(例如,瀏覽器1:微軟InternetExplorer,瀏覽器2 Google Chrome)的同時使用。每個web應用實例304y和304z構建服務提供方的適當UI小部件(分別為306y和306z)。UI小部件306是服務提供方的客戶端應用的UI模塊。UI小部件306源于處于域X. com的服務提供方的web服務器114。在圖3所示的部署中,并發的合作伙伴web應用實例304y和3042從(處于域x. com的)服務提供方的服務器114加載并例示Π web小部件306,和3062。然而,與圖2中的部署相比,在中央應用后臺程序316的單獨的進程中,客戶端應用的原有庫這次集中保管在設備102中。瀏覽器(302y,302z)和中央應用后臺程序316之間的通信使用TCP套接字(或者諸如命名管道的其它本地進程間通信(IPC)工具)來提供。如通過觀看圖3所能夠意識到的,圖3所示的部署符合針對服務提供方的客戶端應用的原有部分的多個例示的約束。在任意給定時刻,僅在設備102實施客戶端應用的原有部分的一個實例(例如,原有庫312) —其處于中央應用后臺程序316上。跨整個設備102對客戶端應用的表現進行協調的客戶端應用的組件被示為“控制器和狀態”模塊308。該控制器和狀態模塊308在設備2上具有集中位置,因為其存在于中央應用后臺程序316中。然而,由于該集中位置,其還具有原有特性,例如其在非HTML 5的環境中開發,例如使用C++開發。因此,如以上所描述的,客戶端應用的控制器和狀態組件的升級并沒有對諸如符合HTML 5標準的那些基于web的技術的升級能力加以利用。因此能夠意識到的是,圖3所示的部署存在問題。這里僅通過示例對本發明的優選實施例進行描述。圖4表示依據優選實施例的web應用實例(404y,404z)與服務提供方的客戶端應用的集成。圖4所示的部署克服了與圖2和3中所示的部署相關聯的問題。·圖4表示了優選實施例中兩個web應用實例404y和404y與客戶端應用的集成。客戶端應用的原有部分由在這里被稱作中央應用后臺程序416的中央程序所保管。實際上,客戶端應用的原有部分保管在中央應用后臺程序416的原有分段418上。中央應用后臺程序416還具有JavaScript引擎424,在其上實施了客戶端應用的控制和狀態模塊408,其使用諸如符合HTML 5標準的基于web的技術所實施。在JavaScript引擎424上還實施了 RPC插件422,其允許中央應用后臺程序416的原有分段418和中央應用后臺程序416的JavaScript引擎424之間的通信(例如,使用TCP連接)。這里所指的應用依據用于執行應用的已知技術在設備102的CPU 106上執行。如果應用要存儲數據,則數據可以存儲在設備102的存儲器108中。web瀏覽器402y與合作伙伴Y所操作的服務器Y 116相關聯。web瀏覽器402y包括在設備102上實施的web應用實例404y。web瀏覽器402y還包括RPC插件414y,其在瀏覽器插件414y中提供瘦遠程過程調用(RPC)功能。類似地,web瀏覽器402z與合作伙伴Z所操作的服務器Z 116相關聯。web瀏覽器402z包括在設備102上實施的web應用實例404z。web瀏覽器402z還包括RPC插件414z,其在瀏覽器插件414z中提供瘦遠程過程調用(RPC)功能。中央應用后臺程序416的原有分段418能夠使用插件414y和414z的RPC功能通過傳輸控制協議(TCP)連接與RPC插件414y和414z進行通信。中央應用后臺程序416可以由服務提供方安裝在設備102上并且原有分段418使用服務提供方的原有技術(例如,C++)。中央應用后臺程序416使用控制和狀態模塊408提供客戶端應用的設備范圍的控制。web應用實例404y和404z源于處于域y. com和z. com的web服務器116和118,并且經由網絡112被下載到設備102。這些web應用實例404y和404z中的每一個在web瀏覽器的單獨實例(40\和4022)中運行。通過web瀏覽器的實例,在這里表示窗口、標簽或框架,包括各種瀏覽器提供商(例如,瀏覽器1:微軟Internet Explorer,瀏覽器2 :G00gleChrome)的同時使用。每個web應用實例404y和404z構建服務提供方的適當UI小部件(分別為406y和406z)。UI小部件406是服務提供方的客戶端應用的UI模塊。UI小部件406源于處于域X. com的服務提供方的web服務器114。在圖4所示的部署中,并發的合作伙伴web應用實例404y和404z從(處于域x. com的)服務提供方的服務器114加載并例示Π web小部件406,和4062。在中央應用后臺程序416的原有分段418中,客戶端應用的原有庫集中保管在設備102上。瀏覽器(402y,402z)和中央應用后臺程序416的原有分段418之間的通信使用TCP套接字(或者諸如命名管道的其它本地進程間通信(IPC)工具)來提供。如通過觀看圖4所能夠意識到的,圖4所示的部署符合針對服務提供方的客戶端應用的原有部分的多個例示的約束。在任意給定時刻,僅在設備102實施客戶端應用的原有部分的一個實例(例如,原有庫412)—其處于中央應用后臺程序416的原有分段418上。
跨整個設備102對客戶端應用的表現進行協調的客戶端應用的組件為控制和狀態模塊408。控制和狀態模塊408在設備102上具有集中位置,因為其存在于中央應用后臺程序416中。有利地,控制和狀態t旲塊408在中央應用后臺程序416的JavaScript引擎424上實施。以這種方式,控制和狀態模塊408能夠使用諸如符合HTML 5標準的基于web的技術。因此,如以上所描述的,客戶端應用的控制和狀態模塊408的升級能夠利用基于web的技術的升級能力。在圖4中,我們利用白色表明設備102處實施的符合HTML 5標準的web組件,例如利用HTML、JavaScript和CSS工具所實施的那些組件。在圖4中,我們利用灰色表明需要在設備102上進行安裝的服務提供方的原有組件。這些原有組件使用非HTML 5的工具所開發,例如使用C++。圖4所示的部署提供了用于合作伙伴的web應用實例404和服務提供方的混合(也就是,web和原有)客戶端應用之間客戶端側的集成的手段。圖4所示的部署還提供了 與多個合作伙伴(例如,兩個web應用實例404y和404z)的并發集成。在圖4所示的示例中,web應用實例(404y和404z)在單獨的web瀏覽器(402y和402z)中并發執行。“瀏覽器”的概念概括為包含瀏覽器窗口、標簽或框架,包括共存的來自不同提供商的多個瀏覽器安裝(例如,微軟Internet Explorer和Google Chrome)。就它們的職責被縮減為處理圖形用戶接口以便在顯示器110上向用戶104輸出的意義而言,UI小部件406y和406z被最小化。客戶端應用的所有其它功能都被委派給該中央應用后臺程序416以便集中處理。如以上所描述的,該功能委派由瀏覽器(40\和4022)的特殊遠程過程調用(RPC)插件(414y和414z)進行調解。插件414y和414z由服務提供方所提供,并且從(處于域X. com的)服務器114下載到瀏覽器402y和402z。插件414的職責被縮減為僅對中央應用后臺程序416的原有分段418和UI小部件406之間兩個方向的控制消息進行中繼。如以上所描述的,中央應用后臺程序416被劃分為兩個部分1.擁有三個實質性組成部分的原有部分
a.服務提供方的原有庫412;
b.允許跨設備102分布的多個web組件(例如,瀏覽器402)之間靈活且安全的信令傳遞的RPC樞紐420 ;和
c.JavaScript 引擎 424 的實例。2.由控制和狀態模塊408所構成的基于web的部分,其符合HTML 5標準,并且從(處于域X. com的)服務器114動態下載到設備102。嵌入在中央應用后臺程序416中的JavaScript引擎424允許客戶端應用的控制和狀態模塊408集中位于設備102上(中央應用后臺程序416上)并且使用基于web的技術來實施,即其是面向web的。這樣的可嵌入JavaScript引擎424存在若干選擇,包括Webkit瀏覽器以及Google的V8 JavaScript引擎。如以上所描述的,優選實施例的控制和狀態模塊的HTML 5屬性允許利用基于web的技術的以下益處1.組件的web升級能力,由于其就像常規網頁一樣從服務提供方的web服務器114動態下載,因此要進行瀏覽器高速緩存形式的典型性能優化。
2.使用HTML 5數據庫進行狀態存儲。3.有力的應用開發工具,以及可在市場上獲得的主流web開發人員技能。為了以它們以協同方式一起工作的方式將設備102中實施的組件連接在一起,本發明提供了一些在設備102中提供的分布式計算設施。這些分布式計算設施包括1. RPC插件(414和422),在所有所涉及的瀏覽器402中,其包括(i )用來加載合作伙伴web應用實例404的web瀏覽器402,即由用戶104在設備102上安裝的現成瀏覽器,諸如微軟 Internet Explorer 或 Google Chrome ;和(ii )嵌入式 JavaScript 引擎 424,其例如可以是Webkit。2. RPC插件(424和422)和中央應用后臺程序416的原有分段418之間的TCP連 接。3.中央應用后臺程序416所保管的RPC樞紐420。該RPC樞紐420使用RPC插件(414和422)和后臺程序416之間的TCP連接,并且實施更高級的發布-訂閱通信設施,允許JavaScript代碼跨設備102相互通信。在發布-訂閱通信過程中,消息發送方(稱作“發布方”)并不對要直接發送至具體接收方(稱作“訂閱方”)的消息進行編程。相反,所發布的消息被描述為類別,而如果有的話,并不了解會有什么樣的訂閱方。訂閱方表現出對一個或多個類別的興趣,并且隨后僅接收(即,(多個)指定類別的)感興趣的消息,而如果有的話,并不了解有什么樣的發行方。設備102中的組件使用諸如JavaScript對象概念(JSON)的結構數據格式通過TCP連接在RPC插件(414和422)和客戶端應用的原有分段418之間交換控制消息。設備102中的分布式計算設施允許兩種類型的通信發生
1.集中的基于web的控制器(即,控制和狀態模塊408)能夠訪問原有庫412的容量;
和
2.多個基于web的UI小部件(406)能夠使用RPC樞紐420的發布-訂閱能力與集中的基于web的控制器(即,控制和狀態模塊408)進行雙向通信。圖5示出了依據圖4所示并且在以上描述的部署的表示將客戶端應用與設備102的設備平臺上的web應用實例404進行集成的處理的流程圖。在步驟S502,(多個)Π模塊406被從服務器114下載并且嵌入(多個)應用實例404。UI模塊406使用基于web的技術所實施。在步驟S504,在中央應用后臺程序416上實施客戶端應用的原有部分。客戶端應用的原有部分被安裝在設備102上(例如,存儲在存儲器108中)并且使用設備平臺原有的技術所實施。在步驟S506,在中央應用后臺程序406上實施控制和狀態模塊408。控制和狀態模塊408在中央應用后臺程序416的JavaScript引擎424上使用基于web的技術所實施。使用兩個一般示例將本發明的操作屬性解釋清楚。圖6示出了一個消息序列圖,其示出了第一示例中設備102中的組件之間的消息通信。如圖6所示的第一示例圖示了用戶104使用UI小部件406y所發起的交互的一般情形。該交互涉及基于web的控制器408以及客戶端應用412的原有庫。依據圖6的示圖在第一示例中實施以下步驟1.響應于一些用戶動作,Π小部件406,在存在于Π小部件406,被加載的瀏覽器402y中的RPC插件414y上發起JavaScript調用。2.該調用的效果是通過TCP連接從RPC插件414y向位于中央應用后臺程序416的原有分段418中的RPC樞紐420傳輸補充JSON消息。3. RPC樞紐420將該消息中繼至控制器408 (即控制和狀態模塊408),這是由控制器408 (根據發布-訂閱協議)所訂閱的通道所指示的,并且其由UI小部件406y所選擇。4.指向控制器408的JSON消息被存在于中央應用后臺程序416的JavaScript引擎424中的RPC插件422所接收并且隨后被送至控制器408。
5.控制器在其自己的RPC插件422上發起JavaScript調用,這使得向中央應用后臺程序416的原有庫412組件傳輸補充JSON消息。這等同于遠程調用該原有庫416的服務。6.原有庫通過執行其自己的原有代碼來實施來自控制器408的JSON消息中所包含的請求(即,使用原有技術實施)。圖7示出了一個消息序列圖,其示出了第二示例中設備102中的組件之間的消息通信。該第二示例圖示了由原有庫412所發起的交互的一般情形。觸發原有庫412內的交互的事件的屬性并不影響第二示例的消息傳送序列。作為示例,該事件可以是接收到來自系統100的另一個元素的網絡消息,該部件是位于網絡112上某處的服務器或端點。依據圖7的示圖在第二示例中實施以下步驟1.在原有庫412內發生事件。2.原有庫412經由同處中央應用后臺程序416中的RPC插件422向控制器408(即控制和狀態模塊408)傳送補充JSON消息,即嵌入到運行控制器408的JavaScript引擎424中。3.控制器408的RPC插件422將事件消息經由JavaScript調用送至控制器408。4.控制器408基于JavaScript引擎424的HTML 5數據庫中所保存的狀態以及事件的內容運行以JavaScript進行編碼的適當事務邏輯。控制器408進行需要傳輸至UI小部件406y和406z的某些決策和狀態變換。5.控制器408 (經由RPC插件422)傳送指向RPC樞紐420的JSON消息,其包括在邏輯上選擇通知實體的發布-訂閱通道。6. RPC樞紐420在將其與UI小部件406y和406z的RPC插件414y和414z相鏈接的TCP連接上中繼消息,其通過在補充發布-訂閱通道上進行訂閱而表現出了對通知的興趣。圖7所示的示例示出了兩個這樣的接收通知的UI小部件406y和406z。可以有與406y和406z并發執行的其它UI小部件,但是其并沒有訂閱該特定通知。7. RPC樞紐420在將其與和UI模塊406y和406z同處一處的RPC插件414y和414z相鏈接的兩個TCP套接字上發送消息。8.每個RPC插件414y和414z進而在Π小部件406y和406z上進行補充JavaScript調用,傳遞消息的內容。9.每個UI小部件406y和406z例如在設備102的顯示器110上向用戶104傳遞事件的適當圖形表示。這里關于圖4描述的部署結合以上討論的圖2和3所示的現有技術部署的不同優點,而排除了他們的至少一些缺點。
特別地,圖4所示的部署繼承了圖2所示的第一現有技術部署中所展現出的控制和狀態模塊的基于web的屬性。然而,圖4的部署并沒有受到圖2的部署的缺陷的影響,其中每個合作伙伴的應用集成在用戶設備102上形成單獨井倉。相反,在圖4所示的部署中,基于web的控制和狀態模塊408具有設備上的集中位置。這是通過在中央應用后臺程序406上實施JavaScript引擎由此允許基于web的模塊(諸如控制和狀態模塊408)在中央應用后臺程序406上集中實施而促成的。實現這一目的的同時仍然允許客戶端應用的原有部分使用中央應用后臺程序416的原有分段418在設備102上集中實施。與圖3所示的第二現有技術部署相比,圖4所示的部署繼承了控制和狀態模塊在用戶設備上的集中位置,但是避免了針對該模塊的原有實施方式的約束。相反,本發明提供了使得控制器和狀態模塊處于設備中央并且面向于web的能力,即使用HTML 5工具開發并且從web服務器(處于域x. com的服務器114)下載。此外,本發明在回彈(resiliency)區域提供了一些非功能性優勢。圖2所示的第一現有技術部署在插件210中執行客戶端應用的原有部分,所述插件210處于運行合作伙伴的web應用204的瀏覽器202的進程之內。服務提供方的客戶端應用的原有部分的崩潰使得瀏覽器202與其一起癱瘓。在這種情況下,在合作伙伴的web應用實例204中展現出了服務器提供方實施方式的問題,因此由于服務提供方實施方式中的問題而導致了合作伙伴web應用實例204的不良用戶印象。與之相反,圖4所示的部署并沒有受到該問題的影響,因為僅在瀏覽器插件414中留下了客戶端應用的非常瘦的遠程過程調用(RPC)功能,而大部分原有代碼被移動到了中央應用后臺程序416的單獨進程中。因此,如果客戶端應用的原有代碼崩潰,其并不會導致瀏覽器402崩潰,由此與圖2所示的部署中客戶端應用的原有代碼崩潰時相比產生了 web應用實例404更好的用戶印象。圖3所示的第二現有技術部署將服務提供方的客戶端應用的所有非UI代碼在中央應用后臺程序316中組合在一處。客戶端應用的任意(非UI)組件的崩潰都會使得整個后臺程序進程316癱瘓。與之相反,在圖4所示的部署中,控制和狀態模塊408的代碼在中央應用后臺程序416中從原有庫412獨立出來,由此限制了每個單一組件崩潰的影響。換句話說,如果客戶端應用的一部分(例如,控制和狀態模塊408)崩潰,其并不會導致客戶端應用的其它的獨立出來的部分(例如,原有庫412)也崩潰,反之亦然。因此,描述了一種用于將客戶端應用與設備102上的web應用實例進行集成的部署,其提供了也能夠使用基于web的技術來實施的集中的控制和狀態模塊416。這是通過在中央應用后臺程序上實施JavaScript引擎424由此允許控制和狀態模塊408是集中且基于web的而實現的。圖4所示的組件(402至424)優選地以供設備102上的CPU 106執行的軟件所實施。例如,該組件可以通過記錄于非瞬時計算機可讀介質上的計算機程序產品來提供,其被配置為當在設備102上的CPU 106上執行時執行這里所描述的方法。可替換地,圖4所示的組件(402至424)以設備102上的硬件模塊來實施。設備102可以為能夠在其上實施這里所描述的應用的任意適當類型。例如,設備102可以是移動電話、個人計算機、膝上計算機、電視,或者能夠存儲并執行這里所描述的應用并且還能夠連接至網絡112并與之通信的任意其它設備。服務提供方的客戶端應用可以是用于通過網絡112例如與連接至網絡112的其它用戶設備進行通信的客戶端應用。如對于本領域技術人員顯而易見的,該客戶端應用可以是用于在設備102執行其它功能。此外,雖然已經參考優選實施例特別示出并描述了本發明,但是本領域技術人員將要理解的是,可以進行形式和細節方面的各種變化而并不背離如所附權利要求所確定的本發明的范圍。
權利要求
1.一種將與服務提供方相關聯的客戶端應用與設備的設備平臺上實施的至少一個web應用實例進行集成的方法,該方法包括 將客戶端應用相應的至少一個用戶接口模塊嵌入至少一個web應用實例,所述至少一個用戶接口模塊使用基于web的技術所實施; 以集中方式在設備上實施客戶端應用的原有部分,客戶端應用的所述原有部分被安裝在設備上并且使用設備平臺原有的技術所實施;并且 以集中方式在設備上實施客戶端應用的控制模塊,所述控制模塊使用基于web的技術所實施。
2.根據權利要求1的方法,其中一次僅在設備上實施客戶端應用的原有部分的一個實例。
3.根據權利要求1的方法,其中一次僅在設備上實施客戶端應用的控制模塊的一個實例。
4.根據權利要求1的方法,其中客戶端應用的原有部分與客戶端應用的控制模塊在設備上使用集中程序來實施。
5.根據權利要求1的方法,其中客戶端應用的原有部分包括以下的至少一個(i)服務提供方的原有庫,(ii)用于促成使用基于web的技術的設備上的組件之間的信令傳送的遠程過程調用樞紐,和(iii) JavaScript引擎的實例。
6.根據權利要求1的方法,其中針對每個web應用實例實施相應的瀏覽器插件,所述瀏覽器插件具有用于與客戶端應用的控制模塊和原有部分中的至少一個進行通信的遠程過程調用功能。
7.根據權利要求6的方法,其中遠程過程調用功能促成用于在至少一個web應用實例以及客戶端應用的控制模塊和原有部分中的所述至少一個之間中繼控制消息的傳輸控制協議連接。
8.根據權利要求7的方法,其中控制消息使用發布-訂閱通信進行中繼。
9.一種用于將與服務提供方相關聯的客戶端應用與設備的設備平臺上實施的至少一個web應用實例進行集成的計算機程序產品,該計算機程序產品記錄于非瞬時的計算機可讀介質上并且被配置為當在設備的處理器上執行時執行根據之前任一項權利要求的方法。
10.一種被配置為將與服務提供方相關聯的客戶端應用與設備的設備平臺上實施的至少一個web應用實例進行集成的設備,該設備被配置為 將客戶端應用相應的至少一個用戶接口模塊嵌入至少一個web應用實例,所述至少一個用戶接口模塊使用基于web的技術所實施; 以集中方式在設備上實施客戶端應用的原有部分,客戶端應用的所述原有部分被安裝在設備上并且使用設備平臺原有的技術所實施;并且 以集中方式在設備上實施客戶端應用的控制模塊,所述控制模塊使用基于web的技術所實施。
11.一種或多種其上存儲計算機可執行指令的計算機可讀存儲媒體,所述指令當由計算設備執行時,使得所述計算設備實現如權利要求1 一 8中的任一個所述的方法。
全文摘要
用于將與服務提供方相關聯的客戶端應用與在設備的設備平臺上實施的至少一個web應用實例集成的方法、計算機程序產品和設備,所述客戶端應用。客戶端應用相應的至少一個用戶接口模塊被嵌入至少一個web應用實例中,其中至少一個用戶接口模塊使用基于web的技術來實施。客戶端應用的原有部分以集中的方式在設備上實施,其中客戶端應用的原有部分被安裝在設備上并且使用設備平臺原有的技術來實施。客戶端應用的控制模塊以集中的方式在設備上實施,其中控制模塊使用基于web的技術來實施。
文檔編號G06F9/44GK103019712SQ20121051481
公開日2013年4月3日 申請日期2012年12月5日 優先權日2011年12月5日
發明者J.科里基 申請人:斯凱普公司