李興瑩
(華中師范大學武漢傳媒學院電子商務教研室 湖北 430205)
根據教育部印發的《關于加強高等學校本科教學工作提高教學質量的若干意見》文件,實踐教學對于提高學生的綜合素質、培養學生的創新精神與實踐能力具有特殊的作用。根據文件的要求,該系統注重更新實驗教學內容,提倡實驗教學和科研課題相結合,加強了統籌建設和科學管理,實現資源共享,提高了使用效率。
該系統所使用的網絡技術是現在已經應用非常成熟的技術,包括HTTP通訊、VOIP(IP語音技術)、DBMS(數據庫)技術、報表技術、網絡安全控制技術、搜索引擎技術、IM(及時通信)技術等,通過這些技術手段可以實現本系統的開發與應用。
整個系統主要包含后臺管理系統、實驗課協作平臺、答疑平臺三大子系統。
后臺管理系統提供對基礎數據的維護功能,比如學生/教師的資料管理、課堂進度管理、實驗報告管理、實驗答疑管理等等。
實驗課協作平臺提供實時遠程文字、白板、語音、視頻等多種多媒體教學方式,讓學生與教師可以充分互動。
答疑平臺提供類似留言板的問答機制,幫助學生與老師針對某個知識點或問題進行離線溝通。

圖1 系統功能架構圖
數據共享中心實現后臺管理系統、實驗課協作平臺和答疑平臺之間的數據共享與同步。
整個系統基于J2EE和相關開源技術實現,采用了開放的技術標準,具有良好的穩定性和擴展性,便于維護和進一步擴充功能。
本系統采用B/S架構設計,客戶端使用Web Browser與系統交互。
后臺管理系統采用Struts2+AJAX+MyBatis+MySQL實現
這套系統基于J2EE MVC框架進行設計,使用了Struts2、MyBatis等成熟的開源框架,性能和擴展性都能得到保障。

圖2 后臺管理系統的技術架構圖
在這套系統中,我將應用進行分層設計,分別為UI展現層、服務層、業務層和數據存儲層。UI層負責數據顯示和與用戶交互;服務層將各個獨立的功能進行抽象;業務層負責業務流程的實現;數據存儲層負責將各個實體對象映射成業務對象,并負責將數據存儲到數據庫中。分層處理以后的系統,結構更加清晰,便于后期維護和擴展。
UI層使用Struts和JQuery技術實現,充分利用了成熟的WEB2.0技術,使用戶的體驗得到保障。在設計Service時考慮了線程安全性,使用ThreadLocal存放數據庫連接以及其他只能在線程內訪問的資源。Business層將各個獨立的業務進行抽象,便于重用和擴展。數據庫持久層采用MyBatis實現,普通開發人員很容易上手,降低了后期開發和維護的成本。
實驗課協作平臺基于OpenMeetings(Openlaszlo+Red5+Ser vlet/JSP+Spring+Hibernate)實現。
OpenMeetings所采用的技術都是比較成熟的Java開源技術。OpenMeetings的開發語言是Java和LZX(Laszlo XML-based language,一種基于XML和JavaScript的語言),它的服務端運行依賴于開源的流媒體服務器 Red5,客戶端源代碼是基于OpenLaszlo的應用,即OpenMeetings是一個基于Flash前端的視頻會議解決方案。其中,OpenLaszlo是一個用于開發富客戶機應用程序的Web框架,這種應用程序可以很容易地編譯成Flash和DHTML。因此,OpenMeetings的最大特點是會議客戶端無需下載安裝,由于OpenMeetings系統將客戶端設置成swf形式,通過網頁瀏覽的方式自動加載,因此,所有能支持Flash的瀏覽器都可以使用OpenMeetings進行視頻會議或其他應用。
在這套平臺上,教師可以進行在線授課,使用白板、視頻等手段。只要是加入到課堂中的學生,都能看即時看到授課內容。這里的白板和視頻使用了ScreenVideo技術,可以向在線的學生共享當前授課教師的桌面內容。
遠程答疑平臺基于BBS技術實現。我們在BBS系統上根據課程設置相應的專欄,針對具體的課程為學生與老師進行遠程答疑提供交互支持。學生在系統上提出自己的疑問后,負責授課的老師會從系統收到提醒,然后對學生進行在線講解。
數據共享中心解決各個子系統之間的數據同步要求。數據共享中心對各個子系統的公共數據進行集中管理,并且亦能將某個子系統的私有數據開放給其他子系統。為了能夠支持未來的擴展,數據共享中心采用ESB技術實現。
本系統基于Red5 Media Server 1.0構建,提供了基于Adobe Flash Player的強大的視頻流媒體和多用戶解決方案。Red5基于RTMP / Servlet實現,能夠滿足本系統中的視頻教學要求。Red5支持ScreenVideo、On2 VP6、Sorenson H.263、H.264等多種視頻格式和ADPCM、NellyMoser、MP3、Speex、AAC等多種音頻格式。
遠程教學需要具備一定的實時性,學生能立刻看到老師的教學過程,這樣才能增強教學效果。在這個方案中,我們采用了基于Flash的實時流媒體技術,視頻/語音傳輸協議使用RTMP。
RTMP協議建立在TCP協議或輪詢HTTP協議之上。RTMP協議就像一個用來裝數據包的容器,這些數據可以是AMF格式的數據,也可以是FLV中的視/音頻數據。一個單一的連接可以通過不同的通道傳輸多路網絡流,這些通道中的包都是按照固定大小的包傳輸的。
RTMP的協議凈核是用AMF格式來描述,AMF格式本身的產生就是為了RTMP協議服務的,最初的RTMP采用XML的形式傳輸數據,但XML只是字符形式的值對的格式傳輸數據,而隨著應用的普及這完全不能滿足要求了,于是AMP代替了XML。AMF是采用二進制壓縮和傳輸數據,從而為Flash 播放器與Flash Remoting網關通信提供了一種輕量級的、高效能的通信方式。
RTMP協議中的消息包含兩個部分:包頭和消息體。包頭包含時間戳、消息長度、消息類型以及消息流ID。消息體包含了消息的實際數據。
例如下面是一段RTMP消息的樣本:

其中,“消息類型”占一個字節,“消息長度”占三個字節,這里指明消息體部分的有效長度。時間戳用于標識消息的生成時間。“消息流ID”是消息的唯一標識。
RTMP通信以握手開始,包含三個固定長度的消息塊。客戶端在和服務端在通訊中每次互相發送同樣三個消息塊。客戶端發送的消息塊被指定為C0、C1、C2;相對地,服務端發送的消息塊被指定為S0、S1、S2。握手以客戶端發送的C0和C1消息塊開始,客戶端在收到服務端發送的S1后再發送C2,并且在收到S2后再發送其他數據。相對地,服務端在收到C0后才能發送S0和S1,并且在收到C1后才能發送S2,在收到C2后才能發送其他數據。基于以上RTMP的傳輸機制,保證了服務端與客戶端在語音、視頻數據傳輸方面的實時性和可靠性。
系統將教師機上的操作畫面及語音信息通過RTMP共享到所有學生機上,并且在教師開放權限的條件下也允許學生操作教師機的屏幕。通過這樣師生在線互動的授課模式,能大大提高教學效果。
本系統采用了基于MyBatis的持久化方案。MyBatis是輕量級的O-R框架,接近于JDBC模式,使得開發人員更容易上手。由于MyBatis已能自動處理SQL數據類型到Object的轉換,所以開發速度要比JDBC快得多。而相比于Hibernate、JPA等技術,它的配置更加簡單,更重要的是設計人員可以直接對SQL進行優化,而不像Hibernate和JPA等技術對開發人員隱藏了SQL細節。通過使用MyBatis,可以將復雜的數據庫處理邏輯所形成的SQL定義在XML文件中,MyBatis能自動處理SQL與Java對象之前的轉換。這樣可以將數據實體處理與業務邏輯分離,后期還可針對SQL單獨優化。這樣即簡化了設計,又提高了系統的模塊化和健壯性。
為了減少開發人員的工作任務,還開發了一套自動化的模板程序。可以針對特定的系統進行模板定制。當我們需要開發新的模塊時,可以通過這套自動化程序生成類似Hibernate那樣的映射文件和相應的程序。以此模板為基礎,開發人員幾乎可以不用編寫額外代碼,只需做一些簡單的配置就能完成新模塊的開發。
本文結合現有的成熟的J2EE和Web 2.0技術,實現了一套切實可行的遠程實驗課教學系統,在遠程教學系統上進行了實驗課的初步探索,對遠程教學的發展具有一定的實踐指導意義。但還有一些問題沒有解決。比如,對于不同專業的實驗課,實驗課的開展方式和內容都會有很大差異,僅僅通過視頻和語音這些共享手段是不夠的。比如,對于計算機網絡學實驗,必須能夠虛擬出各種網絡設備,然后進行相應的實驗。所以如果能將實驗課件系統融合到本系統中,那么就能真正體現這套系統的價值。所以,在下一步探索中,我將繼續研究如何將課件系統建模并形成統一的接口,然后再與現有的實驗課件進行整合,到時將會形成一個完整的遠程實驗環境。
[1]http://forums.adobe.com/index.jspa Adobe技術論壇
[2]http://code.google.com/p/openmeetings/ OpenMeetings主頁(包含了全部源代碼)
[3]http://struts.apache.org/2.x/ Struts2主頁(包含源代碼和相關文檔)
[4]http://www.red5.org/ Red5主頁
[5]http://code.google.com/p/red5/ Red5主頁
[6]http://www.mybatis.org/java.html MyBatis主頁
[7]http://www.openlaszlo.org/ Openlaszlo主頁