【Guacamole中文文档】二、用户指南 —— 1.实现和架构
實現和架構
Guacamole不是一個獨立的web應用程序,它由許多部分組成。Web應用程序實際上意在簡單和最小化,大部分繁重的工作都由底層組件執行。
用戶通過web瀏覽器連接到Guacamole服務端。JavaScript編寫的Guacamole客戶端通過Guacamole服務端的Web服務向用戶提供服務。加載后,該客戶端通過HTTP方式使用Guacamole協議連接回服務端。
部署在Guacamole服務上的Web應用程序讀取Guacamole協議,并將其轉發給guacd和本地的Guacamole代理。該代理實際解釋Guacamole協議的內容,并代表用戶連接任意數量的遠程桌面服務。
Guacamole協議與guacd的結合提供了協議不可知性:Guacamole客戶端和Web應用程序都不需要知道實際使用的是什么遠程桌面協議。
Guacamole協議
Web應用程序完全不理解任何的遠程桌面協議。它不包含支持VNC、RDP或任何其他Guacamole協議棧支持的協議。它實際上只能理解Guacamole協議,這是一種用于遠程顯示渲染和事件傳輸的協議。雖然具有這些屬性的協議自然具有與遠程桌面協議相同的功能,但遠程桌面協議和Guacamole協議背后的設計原則是不同的:Guacamole協議并不旨在實現特定桌面環境特性。
作為一種遠程顯示和交互協議,Guacamole實現了現有遠程桌面協議的超集。因此,在Guacamole中添加對特定遠程桌面協議(如RDP)的支持需要編寫一個中間層,用以在遠程桌面協議和Guacamole協議之間進行“轉換”。實現這種轉換與實現任何本地客戶端沒有什么區別,只是這個特定的實現是呈現給遠程顯示的,而不是本地顯示。
處理這個轉換的中間層是guacd
guacd
guacd是Guacamole的核心,它動態加載對遠程桌面協議(即“客戶端插件”)的支持,并根據從Web應用程序接收到的指令將它們連接到遠程桌面。
guacd是一個隨著Guacamole一起安裝的后臺運行的守護進程,監聽來自Web應用程序的TCP連接。guacd同樣不理解任何特定的遠程桌面協議,而是實現了足夠多的Guacamole協議,以確定需要加載哪些協議支持,以及必須向其傳遞哪些參數。一旦加載了客戶端插件,它將獨立于guacd運行,并完全控制自己與Web應用程序之間的通信,直到客戶端插件終止。
guacd和所有客戶端插件都依賴于一個公共庫,libguac,使得通過Guacamole協議進行通信更容易,更抽象一點。
Web應用程序
用戶實際與Guacamole交互的部分是web應用程序。
如前所述,Web應用程序不實現任何遠程桌面協議。它依賴于guacd,只實現了一個漂亮的Web界面和身份驗證層。
我們選擇用Java實現Web應用程序的服務器端,但也可以用其他語言編寫。事實上,因為Guacamole是一種API,我們鼓勵這樣做。
RealMint
雖然Guacamole現在是一種通用的遠程桌面網關,但情況并非總是如此。Guacamole最初是一個純基于文本的Telnet客戶端,用JavaScript編寫,名為RealMint(RealMint是terminal的一個字謎)。主要是作為一個演示而寫,雖然它的目的是有用的,但它出圈主要是因為它是純JavaScript實現的。
RealMint使用的隧道是用PHP編寫的。與Guacamole的HTTP隧道不同,RealMint的隧道只使用簡單的長輪詢且效率低下。RealMint有一個不錯的鍵盤實現,現存于Guacamole的部分鍵盤代碼中,但實際上是RealMint的功能和可用性范圍。
考慮到它只是一個遺留協議的實現,并且存在其他一些JavaScript終端模擬器,其中大多數都是成熟且穩定的,因此該項目被放棄。
VNC客戶端
當開發者了解到HTML5畫布標記,并看到它已經在Firefox和Chrome中實現的時候,就開始了JavaScript VNC客戶端的概念驗證工作。
該客戶端純粹是帶有Java服務器組件的JavaScript代碼,并通過將VNC轉換為基于XML版本來工作。它的開發自然是出于VNC的功能,其用處僅限于將單個連接轉發給一組用戶。雖然相對較慢,但概念驗證工作得很好,因此需要一個在線場地繼續維持項目,所以在SourceForge上作為一個HTML5 VNC客戶端注冊了“Guacamole”。
隨著Guacamole的成長,變得不再只是一種概念驗證,對速度的需求也在增加,舊的RealMint風格的長輪詢被放棄,XML的使用也被放棄。
由于WebSocket當時無得到信任支持,而且Java沒有針對servlet的WebSocket標準,因此開發了一個等效的基于HTTP的隧道。如果WebSocket因任何原因無法使用,該隧道至今仍可以使用。
遠程桌面網關
一種更快的基于文本的協議被開發出來,它可以呈現多種遠程桌面協議的功能,而不僅僅是VNC。整個系統被重新構建成一個標準的守護進程guacd和一個公共庫libguac,前者驅動了守護進程和協議支持,后者變得可擴展。
該項目的能力從一個合適的VNC客戶端擴展到了一個高性能的HTML5遠程桌面網關和通用API。在當前狀態下,Guacamole可以用作中央網關,以訪問運行不同遠程桌面服務器的任意數量的機器。它提供了可擴展的身份驗證,如果你需要更專業的東西,還提供了一個用于基于HTML5的遠程訪問的通用API。
總結
以上是生活随笔為你收集整理的【Guacamole中文文档】二、用户指南 —— 1.实现和架构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10浏览器闪退_win10内置浏览
- 下一篇: 网络游戏外挂编写基础一