桌面虛擬化可以減少企業數據中心的花費和管理難題。然而IT管理人員不得不去面對這些不成熟的技術,不一致的虛擬化術語等等,搞得大家對這些都很反感。不過還好,你可以用集中化的工具管理這些虛擬化技術。
無論是基于服務器模式還是客戶端模式的虛擬化,應用程序的虛擬化都是桌面虛擬化的一個重要組件。畢竟,一個沒有程序的系統桌面能干啥呢? 總的來說,你應該認識到應用程序虛擬化對你總體計劃的重要性和認識到應用程序虛擬化能讓你事半功倍。
什么是應用程序虛擬化?
總的來說,虛擬化就是把物理環境和邏輯環境分離。相似的,應用程序虛擬化就是把物理客戶端設備從應用程序的管理里面分離出來。這個技術使得IT技術人員可以從不同的客戶端設備集中化管理用戶可用的應用程序。
基于服務端運行的程序或遠程程序
對于終端服務,你也許比較熟悉,現在終端服務被微軟改名為遠程桌面服務。這個技術起初發展于90年代,用于用戶可以像本地計算機一樣使用服務器上的桌面,不過這個技術現在改進了,可以用于允許用戶連接一個單獨的遠程應用。(最初是思杰公司,現在很多公司都推出這個應用,包括微軟自己)
換句話說,用戶所看到的是一個獨立的連接,而不是像以前一樣連接到一個完整的遠程服務器桌面,有著相同的墻紙,開始菜單等等。微軟稱之為遠程應用。對于思杰公司的產品來說,這應該說是一個桌面了。換句話說,這是應用程序虛擬化的一部分。
一些人可能會說,這種基于遠程服務器運行的模式不能被稱為應用程序虛擬化,主要因為基于服務器運行的程序的工作模式比應用程序虛擬化這個術語出現的時間還早。呵呵,只是因為過去行業把叫法用于這個技術,這絲毫不會減低應用程序虛擬化的適用性范圍。基于遠程的運行模式,只要你在服務器上安裝一個程序在自己的數據中心里,用戶不經過任何配置,安裝等就可以在本地設備運行。這就是應用程序虛擬化的本義。
基于客戶端運行的應用程序虛擬化
另一個重要的應用程序虛擬化組成部分涉及到運行在客戶端的程序。(簡單的解釋,就是客戶端運行的程序實際上在服務器上的,而不需要在客戶端操作系統上安裝所要運行的程序。)如果你確實想了解這種工作模式,你需要深入明白Windows程序在非虛擬環境的傳統運行模式。
當你要安裝一個Windows應用程序的時候,你一般都是先運行一個setup的實例程序--如一個EXE或MSI文件的實例程序。這個setup的實例程序會檢查已安裝的組件和解決一些組件依賴的問題。你應該知道,許多的Windows應用程序都嚴重依賴客戶端本地的系統。安裝程序會把文件寫入Program Files文件夾(這是系統路徑默認的安裝文件夾,可以在系統屬性里修改)。也可能拷貝文件到Windows文件夾,而DLL(動態鏈接庫文件)則一般放在Windows文件夾里面的System32文件夾。
另外,安裝程序也會安裝共享的組件,如瀏覽器插件、屬性文件、菜單擴展、驅動還有其他各類文件等這些,它們散布在磁盤的各個地方。而且安裝程序還會把必要的注冊表項寫入注冊表,包括系統項和用戶項,以確保應用程序正常運行。
當然,如果應用程序的所有文件都在一個文件夾里(如綠色軟件),上面所說的那些復雜過程就如浮云。這樣的綠色應用程序很好,因為你只需要在已經安裝好程序的機器上把整個程序文件夾拷貝到一個新的機器,就可以正常使用了。
基于客戶端的應用程序虛擬化把試圖把所有的Windows應用程序都便攜化了,就算這些程序的功能有所增減或者升級。
而目前這些的目標還難以完全實現,因為現在的應用程序需要DLL(動態鏈接庫文件)、系統文件、驅動程序、注冊表設置還有其他一些零碎的東西,所以你沒辦法靠單純拷貝安裝完程序所在的文件夾到另一個計算機來直接運行這些應用程序。(好吧,你要這么做也可以,但就大多數程序而言,你如此拷貝到另一個計算機之后是沒法用的。)現在基于客戶端的系統試圖把一個應用程序所需要的所有東西都捕捉下來,然后打包成一個文件(如許多業余計算機程序員打包的綠色軟件)。然后讓大家可以自由的拷貝解壓到其他計算機直接運行。
這看起來很好很美。玩這些的電腦高手也不是一天兩天做這些程序了,然而,就算你把一個程序的所有東西都找齊了,放到另一個計算機系統的相應位置,你也不能保證它就能正常運行。難道是程序沖突?DLL缺失?驅動不對還是怎么的?有時候你怎么也想不明白為啥就不能運行,因為它就要折騰你。
為了避免這一系列的潛在問題,應用程序虛擬化產品通常把應用程序和Windows桌面環境相隔離。它們把每一個應用程序都創建成一個程序包,而且運行在一個位于應用程序和Windows之間的透明的虛擬系統,這些應用程序不需要去了解運行環境的結構,它們和本來安裝運行的一樣,認為把文件寫入了Windows的系統文件夾(System32),而實際上文件可能寫入的是虛擬化平臺的其他合適位置。
在虛擬環境中,復雜的補丁也不再是難題。因為虛擬應用程序都是集中升級的,然后再慢慢推送到每一個客戶端里面的應用程序包,再確保不會有沖突。
使用應用程序虛擬化
如果你在你的桌面虛擬化項目里要搞點應用程序虛擬化(不用我說你也會這么做吧),你就要明白哪種技術適合你的項目。
想想你的桌面環境里的那些特定程序。用戶們是否需要離線運行這些程序?這些程序是否需要客戶端修改許多資源?(這么多客戶端一個個改起來我可受不了)這些都會讓你盡快實施基于客戶端的應用程序虛擬化。
如上所述的話,你可以考慮一下一些產品,如:Microsoft的App-V,Ctrix的XenApp Streaming,VMware的ThinApp,Symantec的Workspace Virtualization等等。這些產品其實都異曲同工,但又些許不同,當一個產品不適合你環境的時候,你也可以試一試另一個產品,有一些只是兼容性問題,在另一種產品上又好好的運行了。
另一方面,如果你的應用程序需要一個后臺的網絡連接,而你又不想非Windows的客戶端去訪問,或者你有安全和性能方面的顧慮,你應該考慮一下在服務器上運行這些程序。你可以讓用戶通過遠程連接去連接服務器,從而使用這些程序。 Microsoft的Remote Desktop RemoteApp, Citrix的XenApp, Quest Software的vWorkspace都可以滿足你以上的要求。
應用程序虛擬化是你整個桌面虛擬化部署的一個重要部分??上驳氖牵F在你有許多產品來選擇部署,而不會束手無策了。