一種調(diào)用安裝于電子設備上的應用的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)云計算和虛擬化領(lǐng)域,尤其涉及一種調(diào)用安裝于電子設備上的應用的方法及裝置。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)云計算和虛擬化技術(shù)的發(fā)展,在虛擬桌面技術(shù)領(lǐng)域也取得了長足的進步,產(chǎn)生了桌面虛擬化,即VDI (Virtual Desktop Infrastructure,虛擬桌面基礎(chǔ)架構(gòu))的概念,其實質(zhì)是一種將個人計算機環(huán)境從物理設施上分離出來、基于服務器的Client/Server(客戶端/服務端)計算模式,而所有的數(shù)據(jù)都存放在數(shù)據(jù)中心內(nèi)的集中式大型存儲設備中,也可以理解為一種支持企業(yè)級實現(xiàn)桌面系統(tǒng)遠程動態(tài)訪問與數(shù)據(jù)中心統(tǒng)一托管的技術(shù)。其目標是實現(xiàn)可通過任何終端設備、在任何地點、任何時間,訪問互聯(lián)網(wǎng)上屬于用戶個人的桌面系統(tǒng)。而虛擬桌面系統(tǒng)的典型構(gòu)架,在后臺遠端一般是一個龐大的虛擬機集群,每個用戶都需要一個虛擬機為其服務;所有的終端設備通過互聯(lián)網(wǎng)最終都連接到一個網(wǎng)關(guān)的中繼設備上,然后對用戶進行虛擬機的分發(fā)工作。
[0003]虛擬桌面基礎(chǔ)架構(gòu)及技術(shù),帶來了兩方面的優(yōu)點:管理員可以將所有的桌面虛擬機在互聯(lián)網(wǎng)數(shù)據(jù)中心進行部署、托管,并進行統(tǒng)一的管理,降低運維成本;終端用戶能夠通過網(wǎng)絡訪問虛擬桌面,獲得與完整的物理PC(個人電腦)桌面相似的使用體驗,降低用戶端的物理硬件成本。
[0004]目前VDI所使用的關(guān)鍵技術(shù),是桌面?zhèn)鬏攨f(xié)議,也稱為網(wǎng)絡顯示協(xié)議,及其協(xié)議實現(xiàn)。一般來說基于兩條技術(shù)路線:首先是服務器渲染(Host Rendering):虛擬機桌面的所有圖形圖像處理工作,都在遠端服務器上完成,向用戶終端發(fā)送的僅是像素信息,終端無需進行大量的運算,剔除了對CPU和內(nèi)存資源要求較高的客戶端設計,保持了客戶端結(jié)構(gòu)簡潔,但是對網(wǎng)絡帶寬要求較大。其次是客戶端渲染(Client Rendering):客戶端具備一定的運算能力,承擔部分桌面圖像圖形計算工作,數(shù)據(jù)可以壓縮傳輸,節(jié)約網(wǎng)絡帶寬。
[0005]虛擬化技術(shù)的架構(gòu),見圖1。在X86架構(gòu)服務器主機上,基于Hypervisor虛擬化引擎(或稱為虛擬機管理器、虛擬機監(jiān)視器),可以創(chuàng)建并運行多臺虛擬機,每臺虛擬機都類似一臺物理PC機,完全獨立運行并相互隔離,可以安裝用戶所需的各種不同的客戶操作系統(tǒng)(Guest OS),如Windows XP、Windows7、基于Linux內(nèi)核的各種發(fā)布版或商業(yè)版本等。
[0006]在X86架構(gòu)物理服務器硬件的計算環(huán)境中,Hypervisor虛擬化引擎如Xen、KVM (Kernel-based Virtual Machine,基于 Kernel 的虛擬機)等,也稱為 VMM (VirtualMachine Monitor,虛擬機監(jiān)視器或管理器),是一種運行在基礎(chǔ)物理服務器和操作系統(tǒng)之間的中間軟件層,可允許多個操作系統(tǒng)及其上的應用程序共享硬件。Hypervisor是一種在虛擬計算環(huán)境中的“元”操作系統(tǒng),可以訪問服務器主機上包括CPU處理器、內(nèi)存、磁盤、網(wǎng)卡在內(nèi)的所有物理設備資源。Hypervisors不但調(diào)度協(xié)調(diào)這些硬件資源的訪問,也同時在各個虛擬機之間施加隔離和防護。當服務器啟動并運行Hypervisor時,可以給每一臺虛擬機分配適量的CPU、內(nèi)存,網(wǎng)絡和磁盤資源,同時加載虛擬機的客戶操作系統(tǒng)(Guest OS)。Hypervisor是所有虛擬化技術(shù)的核心,通過Hypervisor實現(xiàn)對虛擬機的生命周期進行管理,比如其基本能力之一就是支持非中斷的在線遷移虛擬機,使虛擬機從一個主機遷移到另一個主機上,而終端用戶在使用虛擬機的過程中不會有任何感知。
[0007]目前市場上主要的X86虛擬化Hypervisor的架構(gòu)類型,包括:1.虛擬機直接運行在系統(tǒng)硬件上,Hypervisor創(chuàng)建出硬件全仿真的實例,被稱為裸機型。2.虛擬機運行在傳統(tǒng)操作系統(tǒng)上,同樣創(chuàng)建的是硬件全仿真實例,被稱為托管型或宿主型。3.虛擬機運行在傳統(tǒng)操作系統(tǒng)上,創(chuàng)建一個獨立的虛擬化實例,比如容器,指向底層托管操作系統(tǒng),被稱為“操作系統(tǒng)虛擬化”。而其中最常見的仍然是裸機型的Hypervisor,虛擬化內(nèi)核直接安裝在硬件計算資源上,虛擬機及其客戶操作系統(tǒng)(Guest OS)安裝并運行在Hypervisor之上。其特點是軟硬件架構(gòu)和管理更高效、更靈活,硬件的效能能夠更好地發(fā)揮出來,從而提高物理服務器上計算資源、存儲資源和網(wǎng)絡資源的利用率,降低運營成本。
[0008]虛擬桌面技術(shù),是將Hypervisor創(chuàng)建和管理的虛擬機操作系統(tǒng)的桌面,拉遠到用戶的終端本地系統(tǒng)上進行顯示,同時將虛擬機的音視頻也重定向到終端輸出,而將終端用戶的鼠標、鍵盤等人體學輸入操作或錄音、攝像等音視頻輸入操作,重定向到虛擬機中去,再通過虛擬機的桌面反饋并呈現(xiàn)出來。一般采用VDI虛擬桌面?zhèn)鬏攨f(xié)議或稱為網(wǎng)絡顯示協(xié)議,來實現(xiàn)桌面拉遠和外設重定向。虛擬桌面的架構(gòu)和組件部署見圖2,通過安裝在用戶終端(如瘦終端、PC機或筆記本電腦)上的虛擬桌面客戶端程序,可以訪問企業(yè)的Hypervisor虛擬化服務器主機及其上的虛擬機。Hypervisor服務器主機創(chuàng)建并管理虛擬機,實現(xiàn)虛擬機的設備仿真。在虛擬機中,部署虛擬桌面代理程序、目標存根程序和其他驅(qū)動等組件,從而實現(xiàn)虛擬桌面與客戶端程序的消息交互和通信。
[0009]通過虛擬桌面技術(shù),可以為終端用戶提供操作、使用和維護虛擬機0S(0peratingSystem,操作系統(tǒng))、桌面系統(tǒng)及其上已安裝應用程序的途徑和方法,達到與物理PC機桌面完全相同的用戶體驗和使用效果。
[0010]不管現(xiàn)有技術(shù)中的哪一種虛擬化引擎或虛擬桌面協(xié)議,都存在一個問題,即虛擬機中的客戶操作系統(tǒng)(Guest OS)和用戶本地的終端操作系統(tǒng),各自獨立,用戶所需的各種應用程序,要么部署在虛擬桌面的客戶操作系統(tǒng)中并啟動運行(這是虛擬桌面大多數(shù)用戶的使用場景和方式),要么部署在終端本地系統(tǒng)中并啟動運行。所以目前的各種方案和產(chǎn)品,都不能從虛擬桌面中直接啟動一個原本安裝在終端本地的應用,也不能的從終端本地直接啟動一個原本安裝在虛擬桌面客戶操作系統(tǒng)中的應用。在某些有特定需求的應用場景下,就會給虛擬桌面的使用帶來不便,從而限制了虛擬桌面的應用場景。比如計劃安裝到虛擬機中的某些應用程序,運行時對資源的消耗和實時性要求較高,可能會顯著增加網(wǎng)絡壓力。在虛擬機配置較差或網(wǎng)絡帶寬不足的情況下,一旦虛擬桌面的延時超過50ms,就會產(chǎn)生卡頓感,直接影響虛擬機的性能表現(xiàn)以及應用程序的使用體驗,導致虛擬桌面用戶的體驗變差。所以把這類應用部署安裝在虛擬機中并不合適,而安裝在用戶終端本地系統(tǒng)中,更能滿足性能要求。此時只要能夠解決從虛擬桌面中直接快速啟動終端應用的問題,而不需要在虛擬桌面和終端本地桌面之間反復切換,就能極大提升桌面易用性。
【發(fā)明內(nèi)容】
[0011]有鑒于此,本發(fā)明提供一種調(diào)用安裝于電子設備上的應用的方法和裝置,提高從虛擬機桌面調(diào)用應用的便易性。
[0012]基于上述目的本發(fā)明提供的調(diào)用安裝于電子設備上的應用的方法,應用于虛擬機,包括下述步驟:
[0013]檢測用戶應用程序觸發(fā)指令;
[0014]確定所述應用程序觸發(fā)指令在電子設備上所對應的第一應用程序;
[0015]向電子設備發(fā)送所述第一應用程序的啟動通知消息,使得所述電子設備能夠根據(jù)所述啟動通知消息運行所述第一應用程序;
[0016]所述第一應用程序為安裝于電子設備上的應用程序。
[0017]可選的,檢測用戶應用程序觸發(fā)指令之前,還包括如下步驟:
[0018]接收從電子設備傳送的第一應用程序關(guān)聯(lián)消息;
[0019]處理所述應用程序關(guān)聯(lián)消息,在虛擬機桌面創(chuàng)建用于啟動所述第一應用程序的第一對象。
[0020]可選的,所述用于啟動第一應用程序的對象包括第一程序的桌面快捷方式對象;處理所述應用程序關(guān)聯(lián)消息,在虛擬機桌面創(chuàng)建用于啟動所述第一應用程序的第一對象的步驟具體包括:
[0021]保存所述第一應用程序關(guān)聯(lián)消息中的第一應用程序啟動信息;
[0022]弓丨用COM組件IWshRuntimeLibrary,聲明對應于第一應用程序的操作對象WshShell ;
[0023]調(diào)用CreateShortcut創(chuàng)建快捷方式方法創(chuàng)建第一應用程序的桌面快捷方式的IffshShortcut 對象;
[0024]保存所述桌面快捷方式對象的屬性信息,完成所述第一對象的創(chuàng)建。
[0025]可選的,向電子設備發(fā)送與所述應用程序啟動信息對應的啟動通知消息的步驟具體包括:通過虛擬機的目標存根程序調(diào)用Windows應用程序編程接口 API函數(shù)通知虛擬機的桌面代理程序,向電子設備發(fā)送與所述應用程序啟動信息對應的啟動通知消息。
[0026]可選的,所述Windows應用程序編程接口 API函數(shù)為PostMessage函數(shù)。
[0027]進一步,本發(fā)明還提供一種調(diào)用安裝于電子設備上的應用的方法,應用于電子設備,包括的如下步驟:
[0028]接收從虛擬機端發(fā)送的第一應用程序的啟動通知消息;
[0029]根據(jù)所述啟動通知消息運行所述第一應用程序;
[0030]所述第一應用程序與用戶在虛擬機端發(fā)出的應用程序觸發(fā)指令對應,并根據(jù)應用程序觸發(fā)指令確定。
[0031]可選的,接收從虛擬機端發(fā)送的第一應用程序啟動通知消息之前,還包括:
[0032]檢測到用戶的拖放動作;
[0033]判斷所述拖放動作的結(jié)束位置在虛擬機所對應的窗口區(qū)域內(nèi);
[0034]獲取被拖放的第一應用程序的屬性信息;
[0035]將對應于所述屬性信息的第一應用程序關(guān)聯(lián)消息發(fā)送到虛擬機端。
[0036]可選的,檢測到用戶的拖放動作步驟之前,還包括:
[0037]調(diào)用Windows應用程序編程接口函數(shù)DragAcceptFiles,使得所述電子設備程序窗口允許接受拖放文件的操作;
[0038]或,通過Windows集成開發(fā)環(huán)境設置電子設備程序窗口的Accept Files屬性,使得所述電子設備程序窗口允許接受拖放文件的操作;
[0039]所述電子設備程序窗口包括電子設備上的遠端虛擬機所對應的桌面客戶端程序窗P。
[0040]可選的,根據(jù)所述啟動通知消息運行所述第一應用程序的步