引言?
隨著科技的不斷發(fā)展,傳統(tǒng)的面授教學(xué)已遠(yuǎn)遠(yuǎn)不能滿足當(dāng)今社會教育的需要。Internet的不斷發(fā)展與普及,為改革教育模式提供了契機(jī)。傳統(tǒng)的面授教育模式受到地理空間,優(yōu)秀教員人數(shù)與其他資源短缺等的限制。遠(yuǎn)程教育作為教學(xué)的一種輔助手段,是教學(xué)形式的一場革命。它利用現(xiàn)代網(wǎng)絡(luò)技術(shù),實(shí)現(xiàn)了教與學(xué)的交互性,遠(yuǎn)距離授課及有效的利用各種有限資源的能力。在遠(yuǎn)程教學(xué)過程中,教員與學(xué)員在空間上是分離的,因此需要通過Internet來實(shí)現(xiàn)這種交流。在傳統(tǒng)教學(xué)中,一位優(yōu)秀教員一次只能對幾十個(gè)學(xué)員進(jìn)行授課,而通過遠(yuǎn)程教學(xué),全國各地成百上千個(gè)個(gè)學(xué)員都能有幸聽到他精彩的講課。要是實(shí)現(xiàn)以上目的,必須開發(fā)一個(gè)遠(yuǎn)程教學(xué)平臺,以提供各種遠(yuǎn)程教學(xué)支持。?
1? 系統(tǒng)設(shè)計(jì)原則?
系統(tǒng)設(shè)計(jì)首先應(yīng)當(dāng)符合實(shí)用性和通用性原則。也就是說開發(fā)出的系統(tǒng)應(yīng)當(dāng)符合用戶實(shí)際需求,操作界面簡單易用。而且應(yīng)當(dāng)采用最流行的開發(fā)平臺和軟件,和最通用的文件格式,使之具有通用性和實(shí)用性。?
系統(tǒng)設(shè)計(jì)應(yīng)當(dāng)符合的第二條原則是可擴(kuò)展性和易維護(hù)性。由于用戶需求有可能隨時(shí)間而發(fā)生變化,可能需要增加新的功能,需要將新的更先進(jìn)的技術(shù)融入其中,或某些地方需要予以完善和修正。具備可擴(kuò)展性和易維護(hù)性的系統(tǒng)才是一個(gè)具有較長生命周期的系統(tǒng)。?
此外,系統(tǒng)設(shè)計(jì)還應(yīng)符合安全性原則。對于運(yùn)行于網(wǎng)絡(luò)的系統(tǒng),安全性是絕不可少的。一個(gè)缺少安全性的系統(tǒng)很難保證用戶資源不受到破壞,用戶機(jī)密信息不被竊取,有時(shí)甚至連系統(tǒng)正常運(yùn)行都有困難。安全性是企業(yè)和用戶利益的保障。?
2? 為什么選用J2EE技術(shù)開發(fā)遠(yuǎn)程教學(xué)系統(tǒng)?
目前用于開發(fā)網(wǎng)絡(luò)平臺的技術(shù)有多種。比較著名的有微軟的.NET技術(shù)和Sun的SUN ONE。J2EE技術(shù)是SUN ONE的核心。.NET技術(shù)理論上可支持多種語言,但它只能在Windows上運(yùn)行。對于遠(yuǎn)程教學(xué)平臺需要很高的穩(wěn)定性與安全性,需要支持大量客戶并行訪問,此時(shí)客戶可能選擇Unix或Linux操作系統(tǒng)而非WindowsNT。而且雖然.NET中的有些技術(shù)(比如SOAP)是公開的機(jī)制,但它的核心技術(shù)都不公開。J2EE則可運(yùn)行于任何有JVM的平臺。J2EE的所有標(biāo)準(zhǔn)都是公開的,許多廠商都可提供兼容的產(chǎn)品和開發(fā)工具。在WEB應(yīng)用程序的開發(fā)中,人有選用JSP與JavaBean相結(jié)合來開發(fā),采用這種方法開發(fā)WEB應(yīng)用程序比較簡單,但它只適合用于開發(fā)中小型的應(yīng)用程序。對于大型WEB應(yīng)用系統(tǒng),需要考慮處理大量對數(shù)據(jù)庫并發(fā)訪問的高效性以及很高的安全性,穩(wěn)定性和可擴(kuò)展性。這些都是采用JSP與Jav-aBean技術(shù)無法很好的實(shí)現(xiàn)的。?
使用J2EE平臺開發(fā)具有以下優(yōu)勢:?
* 簡化的結(jié)構(gòu)和開發(fā)過程。?
* 適應(yīng)各種變化要求的可伸縮性?
* 與先有信息系統(tǒng)的集成。?
* 對服務(wù)器、工具和組件的選擇。?
* 靈活的安全模型。?
采用J2EE技術(shù)來開發(fā)遠(yuǎn)程教學(xué)平臺,能更好地實(shí)現(xiàn)安全性與可擴(kuò)展性,而且,所有EJB容器都提供對事務(wù)和EJB組件的生命周期管理的自動(dòng)化支持。所以,采用J2EE技術(shù)開發(fā)遠(yuǎn)程教學(xué)平臺是一個(gè)很好的選擇。?
3? J2EE程序設(shè)計(jì)簡介?
3.1J2EE平臺簡介?
J2EE的設(shè)計(jì)目的是提供對服務(wù)端和客戶端的支持從而推動(dòng)企業(yè)及企業(yè)眾多層應(yīng)用程序的發(fā)展。一般來說,這些應(yīng)用程序都有一個(gè)客戶層以提供用戶界面,一個(gè)或多個(gè)中間層模塊用來提供客戶服務(wù)以及應(yīng)用程序所要用到的商務(wù)邏輯,另外還有一個(gè)后端的企業(yè)信息系統(tǒng)用來提供數(shù)據(jù)管理。圖1描述了組成一個(gè)典型的J2EE環(huán)境的各種組件和服務(wù)。?
3.2 EJB的設(shè)計(jì)?
J2EE平臺的EJB層提供了一種標(biāo)準(zhǔn)服務(wù)器端分布式組件模型,它可以大大簡化編寫商務(wù)邏輯的任務(wù)。要使用J2EE平臺提供的服務(wù),商務(wù)對象必須由企業(yè)bean來實(shí)現(xiàn)。有兩種主要的企業(yè)bean:實(shí)體bean和會話bean。?
實(shí)體bean的特性:表示持續(xù)數(shù)據(jù)、提供多個(gè)客戶的并行訪問、表示一個(gè)數(shù)據(jù)的邏輯性紀(jì)錄、提供健壯的、可以長時(shí)間存在的持續(xù)性數(shù)據(jù)管理。?
??????
有狀態(tài)會話bean的特性:保存特定客戶的狀態(tài)、表示非持續(xù)性對象、表示商務(wù)對象間的工作流程。?
無狀態(tài)會話bean的特性:模型化可重用的服務(wù)對象、提供高性能、同時(shí)對多行進(jìn)行操作、提供數(shù)據(jù)的過程視圖。例如,課程目錄可設(shè)計(jì)為無狀態(tài)會話bean。它可以查找數(shù)據(jù)庫中有關(guān)課程目錄的表,得到相應(yīng)的課程目錄,并將其顯示給客戶。?
4? 使用MVC設(shè)計(jì)應(yīng)用程序?
4.1MVC結(jié)構(gòu)簡介?
開發(fā)遠(yuǎn)程教學(xué)系統(tǒng)時(shí),可采用MVC(Model-View-Controller)應(yīng)用體系結(jié)構(gòu)來分析分布式應(yīng)用程序的特性。該抽象有助于將一個(gè)應(yīng)用程序分割為更易于重構(gòu)的邏輯組件。這種設(shè)計(jì)體系結(jié)構(gòu)允許商務(wù)邏輯、數(shù)據(jù)和表示邏輯清晰地分離開來,也使內(nèi)容提供者和應(yīng)用程序開發(fā)者只需關(guān)注那些他們擅長的領(lǐng)域。?
* 模型是應(yīng)用程序數(shù)據(jù)和用來改變這些數(shù)據(jù)的商務(wù)規(guī)則的一種軟件抽象。一個(gè)模型可被所有的應(yīng)用程序客戶端共享。?
* 視圖用來顯示模型的內(nèi)容。它訪問來自模型的數(shù)據(jù),并指定如何顯示數(shù)據(jù)。?
* 控制器定義應(yīng)用程序的行為,它解釋用戶的行為并把他們應(yīng)射程可以由模型完成的動(dòng)作。每個(gè)呈現(xiàn)不同功能的客戶都需要單獨(dú)的控制器??刂破骶S護(hù)模型中的數(shù)據(jù),并確保視圖所表示的數(shù)據(jù)于相應(yīng)的模型一致。?
4.2使用MVC設(shè)計(jì)應(yīng)用程序功能模塊?
根據(jù)MVC設(shè)計(jì)思想,可設(shè)計(jì)跟學(xué)員有關(guān)的應(yīng)用程序功能模塊如圖2。?
?????
圖2當(dāng)中的Model部分包括了幾個(gè)企業(yè)javaBean。根據(jù)EJB的設(shè)計(jì)原則,可將課程目錄模塊設(shè)計(jì)為Entity bean。每個(gè)課程目錄實(shí)例對應(yīng)數(shù)據(jù)庫中課程表的一條記錄。在線學(xué)習(xí)以及網(wǎng)上考試都應(yīng)設(shè)計(jì)為有狀態(tài)Session bean。因?yàn)槊總€(gè)學(xué)員都是根據(jù)自己的需要選擇不同的內(nèi)容學(xué)習(xí),特定的用戶有自己特定的狀態(tài),而且該狀態(tài)只在用戶進(jìn)行該門課程學(xué)習(xí)時(shí)保持,當(dāng)用戶離開,也就是這一Session過程結(jié)束時(shí),該狀態(tài)不再有效,不需要將剛才的狀態(tài)保存到數(shù)據(jù)庫中,因此設(shè)計(jì)為Bession bean。網(wǎng)上考試同理。每個(gè)學(xué)員可根據(jù)自己的學(xué)習(xí)情況,選擇適合自己深度的不同測試試卷進(jìn)行測試。在線答疑模塊可設(shè)計(jì)為無狀態(tài)Session bean。不需要單獨(dú)對每個(gè)學(xué)員設(shè)計(jì)自己的答疑狀態(tài),每個(gè)學(xué)員登陸該界面后,應(yīng)該既可看到自己的答疑內(nèi)容,也可看到別的學(xué)員的的疑問及解答,也許別人的問題也正是自己的問題。用戶賬號應(yīng)當(dāng)保存到數(shù)據(jù)庫中,所以應(yīng)為Entity bean。?
View部分包含了呈現(xiàn)于客戶端的多個(gè)界面。用戶選擇不同的功能就會有不同的界面。這些界面可稱之為視圖。用戶視圖可用JSP來設(shè)計(jì)。在涉及時(shí),可將界面的共同部分設(shè)計(jì)為一個(gè)或多個(gè)單獨(dú)的模版,并使用JSP的include語句將其加入到界面相應(yīng)的位置。如:<%include file='beader.JSP'%> 究竟當(dāng)前應(yīng)該選擇顯示哪個(gè)界面,則是由Controller控制的。Controller部分有一個(gè)專門用于控制視圖的模塊View Controller,它接收來自客戶端的HTTP請求,將該請求的參數(shù)傳遞給另一個(gè)Controller模塊EJBController。該模塊根據(jù)參數(shù)調(diào)用Model中相應(yīng)的模塊,執(zhí)行相應(yīng)的動(dòng)作,再將結(jié)果參數(shù)傳遞給View Controller,由它調(diào)用相應(yīng)的JSP文件生成相應(yīng)的視圖。View Controller可由Servlet來實(shí)現(xiàn),因此它應(yīng)屬于Web tier中。Servlet可以通過HTTPSession和Servelet Context對象保存應(yīng)用程序狀態(tài),可以很方便的接收和傳遞來自客戶端的HTTP請求。?
由于Model中有多個(gè)模塊,使用Session Fa?ade可為客戶端的調(diào)用提供一個(gè)統(tǒng)一的接口,它使得Model中的各模塊的細(xì)節(jié)問題對于客戶端被隱藏,增加了安全性,并使EJBController操作更容易。?
當(dāng)跨層訪問數(shù)據(jù)時(shí),由于數(shù)據(jù)很多,會造成網(wǎng)絡(luò)交通繁忙。為了減輕大量數(shù)據(jù)對網(wǎng)絡(luò)線路造成的壓力,可采用粗粒度訪問數(shù)據(jù)的方法。即采用Value Object將相應(yīng)的多個(gè)數(shù)據(jù)封裝到一個(gè)值對象當(dāng)中。設(shè)計(jì)Value Object時(shí),應(yīng)使其實(shí)現(xiàn)Seriliable,并將它設(shè)計(jì)得相對小一些,以減少額外的類帶來的程序復(fù)雜度。?
目前數(shù)據(jù)庫有多種,訪問不同的數(shù)據(jù)庫有不同的策略,對數(shù)據(jù)庫的操作也有多種,比較復(fù)雜,尤其是當(dāng)采用BMP設(shè)計(jì)數(shù)據(jù)庫時(shí)更為復(fù)雜,應(yīng)此有必要設(shè)計(jì)一個(gè)單獨(dú)的類作為一個(gè)專門操縱數(shù)據(jù)庫的工具。DAO的作用就在于此。?
結(jié)束語?
遠(yuǎn)程教學(xué)系統(tǒng)有著非常廣闊的前景,必將對傳統(tǒng)教學(xué)模式產(chǎn)生深遠(yuǎn)影響?;贘2EE技術(shù)的遠(yuǎn)程教學(xué)系統(tǒng)在穩(wěn)定性,完全性和可擴(kuò)展性方面都有著使用其他技術(shù)不可比擬的優(yōu)勢。遠(yuǎn)程教學(xué)系統(tǒng)是一個(gè)系統(tǒng)工程,本文針對開發(fā)系統(tǒng)應(yīng)使用何種技術(shù)以及開發(fā)該系統(tǒng)的設(shè)計(jì)模式作了一些論述。本文僅在我們工作的基礎(chǔ)上對這一問題作了初步的探討,怎樣更好地利用網(wǎng)絡(luò)資源,怎樣使教員與學(xué)員、學(xué)員與學(xué)員、教員與教員間的交流更為方便、快捷,怎樣在遠(yuǎn)程教學(xué)中引入人工智能技術(shù)等等,這些問題還有待進(jìn)一步研究。對于如何更好地利用網(wǎng)絡(luò)資源,如何使遠(yuǎn)程教學(xué)實(shí)現(xiàn)智能化,使教員與學(xué)員、學(xué)員與學(xué)員、教員與教員間的交流更為方便,這些問題還有待進(jìn)一步研究。?
參考文獻(xiàn)?
1.Mark Johson J2EE Platform Design Patterns for Enterprise Applications JWEE BluePrints Sun Microsystems,Inc?