文/陶新權 杜爭 安翼
Web2.0的出現使互聯網更加人性化和開放化的同時,也給信息化教育的應用帶來了新契機和思維模式的變化,為教學改革創造良好的條件。教師在教學過程中需要加大應用知識和探求未知的比重,喚起學生的學習興趣,并培養學生自主研究的學習習慣;貫徹啟發引導原則,創新研究型課堂教學模式激發思維活力,提高學生問題解決能力;構筑信息化、開放式的研究型教學環境,為自主性學習提供有力支撐。
本文以北京航空航天大學圖書館為本科生開設的公共選修課《HP-UX系統基礎》的教學網站建設為例,展示Web2.0技術如何為自主性學習搭建良好的教學環境。
《HP-UX系統基礎》課程從最基礎的概念、操作命令開始,全面地介紹了HPUX系統基本結構、系統的使用與系統管理等專業知識。由于該課程面向的是不同年級、不同學科背景的學生,學生個體計算機水平參差不齊,且課程中的命令和選項多而雜、不易理解記憶、感性認識差等使很多初學者感到這門課程不易真正學懂弄通。這都影響了學生學習的主動性和積極性。
因此,研究課程教學網站的組織機制、技術實現及網站使用等問題,構建適合專業教學特點網站的基本模型成為教學改革關注的重要問題。該系統面向高校的學生、教師和管理員,應具備的功能包括:1. 為學生提供除課堂之外的輔助學習環境,展示更全面、豐富的課程信息。2.提供互動交流平臺,方便教師和管理員發布信息、管理相關資源。3.上機實踐環境。《HP-UX系統基礎》是一門操作性很強的課程,提供一個良好的上機實踐環境,有利于學生不斷提高解決問題的能力。4.在充分體現“以學生為主、教師為輔”的原則的基礎上,應激發學生學習的自主性和能動性,增強學生的學習興趣,促進學生潛能的發揮和個性的發展。5.教學內容是一個動態的、不斷變化的過程,系統應具有方便地對網上教學內容隨時進行更新的功能。因此,系統的設計開發應該基于開放性、交互性、動態性、共享性、引導性和可維護性等原則。
開源內容管理系統——Drupal
Drupal是基于PHP的開源內容管理系統,具有明顯的面向對象思想和Web2.0特征。Drupal的功能具有模塊化特點,其分為核心模塊、附加模塊及用戶定制模塊。核心模塊是安裝時自帶的模塊,如用戶管理、模塊管理、內容索引及搜索、博客、論壇等。附加模塊是Drupal社區開發者提供維護的模塊。用戶定制模塊是在應用中根據具體應用設計的模塊。Drupal提供了Hook機制來對已有的模塊功能進行擴充,并提供了數據庫層及數據庫層訪問的API,可方便地在用戶定制模塊中完成各種功能。Drupal具有很高的可配置性、可伸縮性和可擴展性。從個人站點到大型企業門戶、電子商務網站都可使用Drupal搭建。虛擬機

圖1 iVIC總體結構
虛擬機(Virtual Machine)是指通過軟件模擬的具有完整硬件系統功能的、運行在一個完全隔離環境中的完整計算機系統。iVIC(Internet based Virtual Computing Enviroment)是一個利用虛擬機構建的虛擬計算環境,通過在物理計算機集群上構建獨立、隔離、可定制的虛擬機網絡以實現硬件資源的復用,提高資源利用率,其結構如圖1所示。其功能模塊有:
1. 虛擬機容器(VM Container):安裝部署到每一臺連入虛擬計算環境的物理節點上,它封裝了節點的虛擬機監控器(VMM),并提供SOAP及RESTful Web服務接口的網絡控制能力。
2.虛擬資源信息服務(Vshedule):匯總和收集計算環境中的物理機及虛擬機狀態,并為資源分配等機制提供信息。
3. 虛擬網絡管理模塊(Vswitch):為虛擬計算環境提供虛擬網絡支持,定義了虛擬路由器、虛擬交換機等設備,按照用戶需要創建虛擬網絡拓撲,跨域連接虛擬機。
4. 調度器(Vstore):根據用戶提交的虛擬機、虛擬網絡和虛擬集群等虛擬資源的創建請求,在物理資源上綜合調度,分配資源并創建對應的網絡連接。
5. iVIC Portal及API:提供一個訪問iVIC功能的用戶界面,通過多種形式的API可將系統功能集成到第三方程序中。
SOAP通信
SOAP(Simple Object Access Protocol),即簡單對象訪問協議,是一種輕量的、簡單的、基于擴展的標記語言XML的協議。SOAP可以和現存的許多因特網協議和格式結合使用,包括超文本傳輸協議HTTP、簡單郵件傳輸協議SMTP、多功能因特網郵件擴充服務MIME等,它還支持從消息系統到遠程過程調用等大量的應用程序。SOAP消息的格式如下:
SOAP標頭
< SOAP ENV: Envelope A ttributes>< SOAP ENV: Body A ttributes>
< /SOAP ENV: Body>
< /SOAP ENV: Envelope>
功能模塊
該課程教學網站的主要功能有用戶管理、課程通知、博客、資源共享、課件下載、在線交流、站內搜索和上機實踐,見圖2。
1. 用戶管理:用于系統的安全控制和權限控制。用戶可填寫ID、郵箱和密碼進行注冊,通過認證的方式等待管理員確認或接受郵件認證。網站的管理員將用戶分配到不同的組,對其權限進行管理。
2. 課程通知:用于及時公布教學相關信息,如課程介紹、教學大綱、指定教材。教師或者管理員可以創建、修改、刪除通知信息,并將其發布到網站,供學生查看。
3. 博客管理:用戶可以在線撰寫博客,分享學習心得和感受。
4. 資源共享:用戶可將一些學習相關的學習資料發布在自己的博客或其他內容主題中,方便其他用戶下載使用和學習。
5. 課件下載:管理員或者教師可以將學習課件發布到網站對應欄目中,供學生下載學習。

圖2 系統功能
6. 在線交流:以論壇的形式提供了學生之間及師生之間學習交流的空間。
7. 站內搜索:用戶可以方便地搜索站內的信息和其他用戶。
8. 信息聚合:網站為用戶提供信息訂閱功能,可以訂閱網站提供的RSS、RDF和ATOM種子,這樣用戶就可以定期獲得網站內容的更新信息。
9. 互助問答:提供了一個問答平臺,提問者發布問題并可以設置期限,其他用戶可以為其解答,最后由提問者選擇一個最滿意的答案。
10. 在線情景幫助:根據用戶訪問的不同頁面為其提供不同的幫助文檔。
11. 上機實踐:教師根據課程要求,在操作系統虛擬鏡像中定制HP-UX,該虛擬機鏡像文件即為課程模板,然后通過iVIC搭建的虛擬集群,將課程模板存儲在iVIC的虛擬節點上。學生登錄后,可以看到教師為其開設的課程信息,并可以進行相關的教學實踐。Drupal擴展設計
采用虛擬機技術使虛擬服務器能夠在同樣的硬件資源下運行多個操作系統和應用程序,從而有效地提高服務器的利用率,減少服務器的數量,降低服務器的能耗,進而降低運營成本。本文擴展了Drupal對虛擬機的支持,提供了Drupal用戶和iVIC虛擬機的信息管理功能,可以實現虛擬機的創建、啟動、停止以及刪除。Drupal頁面通過創建HTTP連接,發送包含SOAP請求的HTTP報文實現對iVIC的SOAP接口調用。iVIC對PHP封裝的SOAP控件發送的消息無響應,因此采取直接建立HTTP請求發送SOAP報文的方法。SOAP調用iVIC接口如圖3所示。
上機實踐的具體操作流程如下:首先對用戶信息進行驗證,如果通過,則查詢數據庫中用戶的虛擬機列表信息,如果有虛擬機的記錄,就顯示各個虛擬機的使用狀態,如果沒有,用戶可以通過Drupal頁面創建虛擬機,創建后更新數據庫記錄。當用戶需要使用虛擬機時,系統會從iVIC后臺獲取該虛擬機的VNC(Virtual Network Computing)連接,從而獲得該虛擬機的遠程連接,用戶可以在虛擬機上進行教學實踐等活動。此外,用戶還可以根據需要刪除虛擬機,系統會刪除其數據庫中的相應記錄。

圖3 SOAP調用iVIC接口
開發環境
為了使系統具有良好的跨平臺性,并且和Drupal框架緊密耦合,本文中Drupal系統的擴展開發及與虛擬機交互部分的開發是基于Linux debian5.0的環境,選擇PHP作為開發語言,Web容器使用Tomcat,數據庫使用MySQL5.1。能夠較好地保證系統的可移植性和健壯性。Drupal固有功能的實現
用戶管理、博客、資源共享、在線交流、站內搜索、內容更新、問答平臺和幫助功能分別采用Drupal的自有功能模塊User、Blog、Upload、論壇、Search、Aggregator、Topic/Answers和Context Help實現。
課程通知主要包括了課程介紹、教學大綱、指定教材和教師介紹,這些信息的發布可以利用內容類型Page或者Story來實現。但是,為了方便構建自己的內容節點列表和它們在頁面中的顯示方式,可以引入CCK模塊為每種類型的信息創建一種新的內容類型。所有需要的內容類型設置完畢后,還需要通過Views模塊定義節點的顯示方式。Drupal擴展功能的實現
1. 創建虛擬機:解析虛擬機服務器地址,通過解析成功的服務器地址,建立與服務器的通信。拼接iVIC可以識別的SOAP報文格式,調用創建虛擬集群函數deployV,發送報文消息。創建成功后,返回被部署的虛擬機ID,將虛擬機名稱和用戶寫入數據庫。程序代碼如下:
$url ='http://219.224.171.69:8080/vsched'; //虛擬機服務器的IP地址$url2 = parse_url($url); //解析服務器地址
$fsock = fsockopen($url2['host'], $url2['port']); //與服務器通信
……
$SOAPBODY = '
$SOAPBODY.= '
$SOAPBODY.= ‘’.” ”; //虛擬機名稱
$SOAPBODY.= ‘’.” ”;//創建虛擬機所需參數
$SOAPBODY.= ‘’.” ”;
$SOAPBODY.= ‘’.” ”;……
$out = “”;
while($buff = fgets($fsock, 2048)){ //返回被部署虛擬機的ID
=$out .= $buff;
}
……
global $user;
db_query(“INSERT INTO {vcluster} (user, vm_uuid) VALUES(‘%s’,’%s’)”,$user->name,$re);//將虛擬機名稱和用戶寫入數據庫?>
2. 啟動虛擬機:從數據庫中查找當前用戶對應虛擬機的UUID,解析虛擬機服務器地址,并建立與服務器的通信。拼接iVIC可以識別的SOAP報文格式,調用啟動虛擬集群函數startV,傳入虛擬機的UUID,發送報文消息。啟動成功后,返回True值。程序代碼如下:
global $user;
$result = db_query("SELECT vm_uuid FROM {vcluster} WHERE user ='%s'", $user->name); //用戶認證
$o = db_fetch_array($result); //獲得虛擬機UUID值
$url ='http://219.224.171.69:8080/vsched';
$url2 = parse_url($url);
$fsock = fsockopen($url2['host'], $url2['port']);……
$SOAPBODY = '
$SOAPBODY.= '
$SOAPBODY.= ''." "; //傳入虛擬機的UUID值……
$in=$head.$SOAPENV.$SOAPBODY;
if(!@fwrite($fsock, $in, strlen($in))){fclose($fsock);
return false;
}
?>
停止虛擬機和刪除虛擬機與上述過程類似,區別在于需要調用停止虛擬集群函數stopV和刪除虛擬集群函數undeployV。
3. VNC連接:用來加載VNC的ActiveX控件,顯示遠程桌面。程序代碼如下:
function rsChange ()
{ var ax = document.all.vnc;
if ( ax.readyState == 4 )
{ if ( ax.IsInitialized == false )
{ window.setTimeout( "rsChange();", 100 ); } //設置VNC與服務器連接時間
else
{ ax.Server = "219.224.171.69:0"; //VNC所訪問的服務器地址
ax.Connect();} } }
通過構建Web2.0網站,利用課外作業引導和督促學生積極開展課外學習。通過在網站上發布課件和各種學習資料,輔助學生進行自我學習。基于虛擬機技術搭建網絡實驗平臺,使得學生的學習不受到實驗室安排的限制,可以根據自己的需要隨時隨地進行練習。構建論壇和互助問答功能,提供學生和學生、教師和學生之間暢通的交流渠道,及時對學生進行指導和幫助,從而達到較好的學習效果。
虛擬機技術不僅適用于本課程的上機實踐,而且它給出了一個改變學校現有實驗模式的方向,即學校不用建設多個實驗室和購買大量的服務器,只需要使用虛擬機技術配置不同的環境就可以滿足多門課程的上機需要。因此,本文對于未來學校的實驗課和實驗室建設也將起到很好的促進作用。