摘要:為降低基于AG的共享應用程序的開發難度,在AG體系結構以及相關的API基礎上實現了一個開發框架#65377;利用此框架,能夠在很大程度上提高開發共享應用程序的效率并縮短開發周期#65377;此外,該框架還提供了一個通用訪問界面,方便用戶集成和調用相應的共享應用程序#65377;關鍵詞:網格; 訪問網格; 虛擬會議; 視頻會議; 共享應用程序
中圖分類號:TP39文獻標志碼:A
文章編號:1001-3695(2007)04-0223-03
Access Grid(AG)是由美國Argonne國家實驗室率先研究和開發的,其設計目的是提供一個支持大規模的組與組之間協同工作的平臺#65377;AG可以看作是用來支持組與組之間在網格[2]上進行交互的資源集合#65377;AG系統環境不影響各節點的本地管理和自主性,也不改變原有的操作系統#65380;網絡協議和服務等,同時它還保證用戶和遠程節點的安全性,允許遠程節點選擇加入或退出系統#65377;AG盡可能多地使用已存在的標準技術,以便與已有的應用兼容,并能提供可靠的容錯機制#65377;AG系統類似當前的Web服務,可以構建在當前所有硬件和軟件平臺上,給用戶提供完全透明的協作環境#65377;對用戶而言,它將眾多異構的資源變成了同構的虛擬協作環境#65377;AG由于其突破傳統的設計,視頻圖像#65380;聲音品質和遠距離影音互動等的很好表現,應用前景十分可觀#65377;自1999年AG首次亮相以來,一直是網格研究的重點,支持它的標準節點已經覆蓋47個國家和150多個研究機構#65377;
AG支持組與組之間的分布式交互和協同工作,允許在不同地點的人們之間進行聲音和圖像的實時交流,同時還可以在各種協同軟件的幫助下實現其他類型資源的遠程共享,如桌面#65380;特定的應用程序以及儀器設備等#65377;但AG提供的功能畢竟有限,不可能滿足人們所有的需要,因此有必要根據自己的需求來開發特定的AG擴展程序#65377;
1Access Grid
1.1AG的體系結構
AG是以Open Grid Service Architecture (OGSA)的網格體系結構為基礎設施的#65377;在OGSA框架中,一切都被抽象為服務,包括計算機#65380;程序#65380;數據#65380;儀器設備等#65377;這種觀念有利于通過統一的標準接口來管理和使用網格#65377;
AG作為一個對網格的擴展,是由許多參加會議的AG節點(AG Node)連接而成的#65377;AG節點一般包括多臺計算機,每臺計算機均實現某種特定的任務,這些任務協同起來,就形成了一套合作交流的環境#65377;在節點中每臺機器驅動一路或者多路媒體流,并將它們傳送到會議室,或者接收來自會議室的媒體流,所有的這些媒體流通過節點服務(Node Service)來管理#65377;
在每個節點中,視頻捕捉#65380;音頻捕捉#65380;網絡服務#65380;數據服務等也被描述為服務(Services)#65377;其中,視頻生產者服務(Video Producer Service)#65380;視頻消費者服務(Video Consumer Service)#65380;音頻服務(Audio Service)是組成一個節點所需要的基本服務#65377;視頻生產者服務實現對現場的多視角視頻的捕捉,視頻消費者服務用來解碼和播放會議中心傳遞過來的視頻流,音頻服務則是用來對本地節點進行音頻捕捉,同時還具有會議中心音頻流的本地回放功能[9]#65377;
AG的服務管理器(Service Manager)可以感知節點所擁有的很多種系統資源,包括音頻設備#65380;視頻設備#65380;節點身份#65380;用戶身份#65380;共享應用程序等#65377;所有這些也都被抽象為服務,它們可以分布在多臺機器上,由服務管理器統一管理#65377;節點服務正是通過服務管理器來管理這些服務的#65377;
因此,一個AG節點是由節點服務#65380;多個服務管理器和受其管理的多個服務組成,如圖1所示#65377;
AG的框架是對現實會議系統的仿真,因此除了參與會議的AG節點外,它還設有一個虛擬會議中心(Virtual Venue Server),里面包含了許多虛擬會議室(Virtual Venue)#65377;用戶參加會議時,需要連接會議中心,然后進入其中一個虛擬會議室參加會議#65377;用戶也只能與同一會議室里的其他用戶進行交流#65377;此外,每個會議室里都有入口和出口,用戶可以隨時離開一個會議室進入其他會議室#65377;為了讓視頻會議能達到傳統會議的效果,增加感觀信息,節點支持多路視頻演示#65377;多路媒體流通過使用流媒體傳輸協議在AG節點之間進行傳輸#65377;多個AG節點之間的通信是通過組播技術(Multicast)來實現的#65377;IP組播最大的一個特點是,發送方使用單一的信道傳輸數據到多個不同的客戶端,這樣能有效地節省帶寬#65377;所以IP組播是進行大規模群組協同的有效工作模式[8]#65377;另外,在虛擬會議室中還包括各種文檔和共享應用程序等,用戶可利用音頻#65380;視頻#65380;文本和共享應用程序進行全方位的交流和合作#65377;
圖1AG的體系結構
此外,AG采用GSI(Globus Security Infrastructure)用戶認證體系來保證安全性#65377;用戶注冊時,會生成本地的私鑰和證書請求,然后發送證書請求到AG組織的CA進行認證,由AG組織簽發后的用戶證書將作為用戶的唯一標志#65377;此后,會議中心就可以通過用戶證書對參會者進行身份識別#65377;
1.2AG節點的軟硬件環境
一個AG節點的硬件包括計算機#65380;攝像頭#65380;投影儀#65380;回波消除器#65380;麥克風等#65377;一般節點都配置多部計算機來分擔任務,提高性能,每臺計算機上可配置多個攝像頭#65380;麥克風等設備以達到特定的效果#65377;由于聲音的質量嚴重影響到會議的效果,可在AG節點中加入回波消除器,能有效地提高聲音的質量#65377;
支持AG視頻會議的軟件大多是開放源代碼的免費軟件#65377;其中最主要的軟件是用于視頻的VIC[5](Video Conferencing Tool)和用于音頻的RAT(Robust Audio Tool)[6],它們都是開源軟件#65377;其他的還包括共享式的PowerPoint軟件#65380;用于操作員之間進行后臺文字交流的MUD(MultiUser Dragons)#65380;用于桌面共享和程序共享的軟件VNC(Virtual Network Computing)#65380;監控組播網絡狀況的組播Beacon軟件以及支持虛擬會場的軟件等#65377;圖2是一張四個用戶連入自建會議中心的VIC#65380;RAT以及MUD的顯示效果圖#65377;
圖2AG之VIC#65380;RAT#65380;MUD的顯示截圖
圖中左側是VIC的視頻顯示窗口,中間是RAT音頻控制窗口,右側是會議客戶端(Venue Client),在其下部整合了MUD的文字交流窗口#65377;
2共享應用程序
2.1設計
AG共享應用程序即是建立在AG體系結構之上的軟件,它能夠使多人同時進行查看#65380;修改和增添信息,有很強的協同性#65377;AG Toolkit自帶了四個共享應用程序#65377;其中Shared Browser用來共同瀏覽網頁,Shared Presentation用來共同觀看Power Point文檔等#65377;更重要的是,AG Toolkit具有很好的擴展性,它提供了豐富的應用程序編程接口(API),開發人員可以在AG Toolkit體系結構上很方便地開發出自己的共享應用程序#65377;圖3是AG共享應用程序的體系結構圖#65377;
圖3AG共享應用程序體系結構圖
一旦一個共享應用程序在某一客戶端啟動,會議中就會產生出一個應用程序服務(Application Service)#65377;它提供了一個事件通道(Event Channel)和狀態存儲空間,共享應用程序可通過共享程序客戶端(SharedAppClient)類所包含的URL來連接此應用程序服務#65377;事件通道是各個連入會議的共享應用程序之間發送消息的場所,而狀態存儲是指存儲共享應用程序當前的狀態信息#65377;每當一個客戶端狀態發生改變,此改變消息將通過事件通道發送給其他客戶端通知它們作出相應改變,同時將此狀態信息保存到狀態存儲空間#65377;當有新的客戶端加入時,會先從狀態存儲空間取得當前的狀態信息,這樣可以保證所有客戶端的共享應用程序保持一致,實現協同操作的功能#65377;
2.2實現
AG是對現實會議系統的仿真,但是在AG中并沒有提供白板的功能#65377;白板在會議中是一個相當重要的工具#65377;因此下面將以白板程序為例,描述如何開發基于AG的共享應用程序#65377;所實現的白板程序的顯示界面如圖4所示#65377;
白板程序使用Python編程語言實現,有很好的跨平臺性,具有自由選擇畫筆粗細#65380;顏色等白板必需的功能;同時它是基于AG的共享應用程序框架開發,具有多人協同操作的功能#65377;
白板程序首先需要初始化一個共享程序客戶端實例,接著通過一個給定的應用程序服務地址連接到會議的應用程序服務,借助此實例還可以得到一個用于代表自己的ID#65380;參與者信息以及設置日志等#65377;白板程序主要有三種事件,分別是DrawLine#65380;ChangeColour和ChangeThickness;處理和發送這些事件的函數以回調函數的形式注冊到應用程序服務#65377;當鼠標移動進行繪畫時發生DrawLine事件,在本地進行繪畫,同時調用SendEvent函數將這一事件以及ID信息通過事件通道發送給所有的參與者,并且調用SetData改變當前應用程序服務處的狀態信息#65377;參與者接收到消息后,首先判斷收到的ID是否與自己的ID一樣,如果不一樣,則進行相應的繪制#65377;ChangeColour和ChangeThickness分別是代表改變畫筆顏色和粗細時所產生的事件,實現原理與DrawLine事件大致相同,不再贅述#65377;
2.3開發框架
在AG中,開發人員每開發一個共享應用程序,都需要如上述白板程序要初始化共享程序客戶端#65380;設置許多參數等工作#65377;通常在一個會議中,用戶經常會一次同時使用好幾個共享應用程序,也就意味著前面的初始化設置工作需要做好幾次,因為每個共享應用程序都有一個初始化設置過程#65377;此外,開發好的共享程序還需要打包并成功注冊為AG的插件才可以使用#65377;整個過程相當煩瑣,而且效率低下#65377;鑒于此,將提供一個在AG上開發共享程序的框架來解決上述問題#65377;
框架的用戶訪問界面為豎長條型(圖4)#65377;目前已經集成了前面介紹的白板程序#65380;Shared Browser以及Shared OpenSceneGraph[7]等共享應用程序#65377;Shared OpenSceneGraph是一個3D可視化程序,用戶可以用它對3D物件進行協同查看和操作#65377;
框架內部已經做好了所有的初始化工作,并把開發共享應用程序所需的信息都封裝在一個字典形式的數據結構中,因此用戶利用此框架上開發共享應用程序只需要取得這個字典獲得所需要的共享信息,剩下需要做的只是將處理協同事件的回調函數注冊到應用程序服務上#65377;
框架具有很好的擴展性#65377;開發者可以很方便地將開發好的共享應用程序加到框架中,這可通過一個向導來實現,所加入的共享程序將以圖形按鈕的形式顯示在框架界面上供用戶使用#65377;向導首先是用戶自定義添加到框架界面的按鈕,包括按鈕描述和按鈕圖標;然后要求指出所要加入共享應用程序的主文件和所有其他文件,向導會自動把這些文件注冊到AG中,所有文件只有注冊了才可以使用;最后是定義按鈕的觸發事件,在這里只需給出共享應用程序的主構造函數即可#65377;通過以上幾個簡單步驟,相應的圖標被加入到了框架的顯示面板中,方便用戶調用自己的共享應用程序#65377;
3結束語
首先介紹了AG系統的現狀#65380;體系結構及其關鍵技術;接著重點描繪了AG共享應用程序的體系結構,并通過一個白板實例說明了在AG上如何開發共享應用程序;最后,在總結AG開發共享應用程序的一些不便后,提出了一個全新的框架來快速開發AG共享應用程序,用戶可以通過提供的向導很方便地將共享應用程序集成到此框架上#65377;
目前,框架只集成了五個共享應用程序,以后將準備集成更多的實用程序以提供各種應用#65377;此外,將進一步完善框架的功能,使其不僅僅局限于開發共享應用程序,準備把AG的節點服務和數據存儲等功能都包裝進來,為開發各種AG擴展程序提供方便#65377;
本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。