隨著網(wǎng)絡(luò)技術(shù)的發(fā)展和網(wǎng)絡(luò)應(yīng)用的普及,遠程教育被認為是網(wǎng)絡(luò)時代新的教育模式,正在迅速發(fā)展。在該教育模式下,教學(xué)活動突破了學(xué)習(xí)時間和空間的局限性,教師與學(xué)生之間的關(guān)系發(fā)生巨大改變,教學(xué)和學(xué)習(xí)過程體現(xiàn)為教師一學(xué)生和學(xué)生一學(xué)生之間的資源共享和交流互動。然而,當(dāng)今主要使用的基于B/S結(jié)構(gòu)的遠程學(xué)習(xí)系統(tǒng)暴露出許多缺陷:(1)只依靠服務(wù)器端存儲信息和根據(jù)用戶請求進行分發(fā),信息倉儲基本保持靜止;(2)以服務(wù)器為中心,容易產(chǎn)生服務(wù)器瓶頸問題;(3)用戶處于一種被動接受狀態(tài),而不能提供信息。
P2P(Peer-to-Peer)計算提供一種全新方式,P2P網(wǎng)絡(luò)認為所有節(jié)點在共享信息方面能力平等,每個用戶可提供分布信息倉儲,弱化了服務(wù)器客戶機的概念,這一特點符合現(xiàn)代教育模式中的教師一學(xué)生關(guān)系;從目前應(yīng)用看,P2P在大范圍的共享、搜索方面具有較大優(yōu)勢,不經(jīng)服務(wù)器就可實現(xiàn)對等節(jié)點間的資源傳遞,避免發(fā)生服務(wù)器瓶頸問題,這恰好符合了現(xiàn)代教育中的學(xué)生一學(xué)生關(guān)系。因此,將P2P技術(shù)引入到遠程學(xué)習(xí)系統(tǒng)可發(fā)揮其在協(xié)同、搜索方面的優(yōu)勢,擴展遠程學(xué)習(xí)系統(tǒng)在現(xiàn)代教育中的應(yīng)用,并能理想地解決傳統(tǒng)B/S結(jié)構(gòu)應(yīng)用系統(tǒng)的種種弊端。
2 基于JXTA技術(shù)的P2P網(wǎng)絡(luò)
JXTA項目是由SUN公司發(fā)起的開放源代碼項目,主要用于提供P2P系統(tǒng)所需的基礎(chǔ)服務(wù),由一系列簡單的、開放的協(xié)議組成。通過這些協(xié)議,連接到網(wǎng)絡(luò)的任何設(shè)備都能夠相互通信、協(xié)作和資源共享。JXTA技術(shù)致力于創(chuàng)建一個通用平臺,以簡單而有效的方式構(gòu)建特定的對等式和分布式服務(wù)與應(yīng)用,從而使開發(fā)者無需過多考慮如何解決對等計算的技術(shù)問題,集中精力實現(xiàn)和完善可擴展、互操作性強、可靠性好的高層應(yīng)用。
2.1 JXTA應(yīng)用程序的體系結(jié)構(gòu)
JXTA應(yīng)用程序的體系結(jié)構(gòu)如圖1所示,從下至上劃分為3個層次,分別為核心層、服務(wù)層和應(yīng)用層。
(1)核心層(JXTA Core)該層封裝了最根本的東西,為P2P服務(wù)和應(yīng)用提供核心支持。包括對等節(jié)點創(chuàng)建、對等組創(chuàng)建、Peer發(fā)現(xiàn)、Peer通信、Peer監(jiān)視和相關(guān)的安全原語。
(2)服務(wù)層(JXTA Services) 該層擴展核心層的功能,為P2P應(yīng)用程序提供可選通用服務(wù),如索引、文件共享、分布式信息檢索、對等節(jié)點認證、代碼緩存和內(nèi)容緩存機制。
(3)應(yīng)用層(JXTA Application)該層為創(chuàng)建各種類型的P2P應(yīng)用系統(tǒng)提供相關(guān)的應(yīng)用程序,主要有信息內(nèi)容管理、分布式存儲以及實時信息傳輸?shù)葢?yīng)用程序。
2.2 JXTA協(xié)議
JXTA協(xié)議采用XML標(biāo)準(zhǔn)的數(shù)據(jù)格式定義消息,獨立于具體的編程語言和傳輸協(xié)議,使得它更易于理解和獲得更多的支持。它可在TCP/IP、HTTP、 BlueTooth、HomePNA或其他傳輸協(xié)議之上建立一個虛擬JXTA網(wǎng),使得節(jié)點位于由防火墻和NAT設(shè)備分隔開的網(wǎng)絡(luò)的不同部分或者處于異構(gòu)網(wǎng)絡(luò)協(xié)議的環(huán)境之間都同樣可以相互通信。這一優(yōu)點正是當(dāng)前遠程學(xué)習(xí)系統(tǒng)最需要的。
3 遠程學(xué)習(xí)系統(tǒng)的設(shè)計與實現(xiàn)
3.1 遠程學(xué)習(xí)系統(tǒng)的架構(gòu)設(shè)計
構(gòu)建的基于JXTA的P2P遠程學(xué)習(xí)系統(tǒng)采用混合P2P模式,各個參與學(xué)習(xí)的站點分為3種不同角色:學(xué)生對等節(jié)點(Student Peer,SP)、教師對等節(jié)點(Teaeher Peer,TP)、教務(wù)管理對等節(jié)點(ManagerbPeer,MP)。MP在學(xué)習(xí)系統(tǒng)中起到管理、組織、協(xié)調(diào)各參與者的作用,并負責(zé)創(chuàng)建課程組,記錄各個課程組的資源索引,在課程組間提供搜索路由的功能,管理維護教學(xué)網(wǎng)站中的BBS、電子白板、聊天室、資源下載區(qū)、教師信息、學(xué)生信息、內(nèi)部電子郵件系統(tǒng)等欄目;TP節(jié)點從屬于某一課程組,主要協(xié)調(diào)、組織、評價本課程組內(nèi)參與學(xué)習(xí)者的學(xué)習(xí)過程,維護本課程組內(nèi)資源的索引信息,并將資源索引的變動信息傳遞給MP;SP找到相應(yīng)課程組后可加人到其中,利用課程組中提供的課件、參考資料等共享資料進行自主學(xué)習(xí);當(dāng)碰到疑難問題時,可與在線人員進行兩兩學(xué)習(xí)交流,或展開多人共同探討;若遇到難題無法解決時,可聯(lián)系課程組教師通過電子白板實現(xiàn)虛擬教室,進行及時在線輔導(dǎo)講課。整個遠程學(xué)習(xí)系統(tǒng)的架構(gòu)如圖2所示。
3.2 遠程學(xué)習(xí)系統(tǒng)的實現(xiàn)
系統(tǒng)應(yīng)用的開發(fā)工具是NetBeans5.5、JDK5.0、JXTA2.0、 Sun Java System Application Server Enterprise Edition 8服務(wù)器,數(shù)據(jù)庫采用由純Java語言編寫的小型數(shù)據(jù)庫PointBase,它對平臺的支持性強,并可直接過渡到其他數(shù)據(jù)庫。通過使用面向?qū)ο蟮某绦蛟O(shè)計方法,根據(jù)遠程學(xué)習(xí)系統(tǒng)的工作原理和主要功能設(shè)計以下3個主要的類:
(1)Manager類該類代表系統(tǒng)中的MP,負責(zé)為MP設(shè)置JXTA環(huán)境及完成與TP的通信連接,將加入對等網(wǎng)的TP分配至合適的課程組;能夠創(chuàng)建一個新的課程組,當(dāng)某一課程組資源點擊人數(shù)低于某值時,刪除該課程組。主要方法有:啟動JXTA環(huán)境startJXTA(),創(chuàng)建課程組createCourseGroup()、刪除課程組deleteCourseCroup()、發(fā)布提供的遠程學(xué)習(xí)服務(wù)discoverySvc()、獲取節(jié)點在線狀態(tài)pipeAdv()、創(chuàng)建一個通信管道inputPipe()、信息發(fā)送sendMessage()、發(fā)布節(jié)點的在線狀態(tài)publishPipeAdv(),創(chuàng)建信息發(fā)送管道 createInputPipe()和運行主方法main()等。
(2)Teaeher類該類代表系統(tǒng)中的TP,負責(zé)為TP設(shè)置JXTA環(huán)境以及建立到MP的通信連接,并完成在學(xué)習(xí)系統(tǒng)中教師的功能。主要方法有:啟動 JXTA環(huán)境startJXTA(),發(fā)現(xiàn)教務(wù)對等節(jié)點在線狀態(tài)discoverManagerPipeAdv(),創(chuàng)建連接到MP的管道 createManagerPipes()、發(fā)布TP節(jié)點的在線狀態(tài)pub-lishTeacherPipeAdv(),創(chuàng)建發(fā)送會話消息到MP的通信通道createTeaeherInputPipe()、MP確認TP發(fā)送的答案accept()、創(chuàng)建新會話requestNewSession()、讀取TP的輸入getUserRe-sponse()、獲取TP對MP的響應(yīng)sendToManager()、問題信息處理processMessage ()、獲取對等節(jié)點問傳輸信息中的文本字符串getElementValue()、建立與MP節(jié)點的連接connectMan-ager()、斷開與MP 節(jié)點之間的連接disconnectManager()、請求一個新會話run()和運行主方法main()等。另外,Teacher類的main()方法中還定義一個InputPipeMsgListener類實現(xiàn)PipeMsgListener接口來獲得管道中的消息。
(3)Student類該類代表系統(tǒng)中的SP,負責(zé)為SP設(shè)置JXTA環(huán)境以及建立與TP的通信連接,并完成在學(xué)習(xí)系統(tǒng)中學(xué)生的功能。主要方法有:啟動JXTA環(huán)境 startJXTA(),發(fā)現(xiàn)教師對等節(jié)點在線狀態(tài)discoverTeacherPipeAdv(),創(chuàng)建連接到,TP的管道 createTeacherPipes()、發(fā)布SP節(jié)點的在線狀態(tài)publishStudentPipeAdv(),創(chuàng)建發(fā)送問題答案到TP的通信通道 createStudentInputPipe()、TP確認SP發(fā)送的答案accept()、創(chuàng)建新會話requestNewSession()、讀取 SP的輸入getUserRe-sponse()、獲取SP對TP的響應(yīng)sendToTeacher()、問題信息處理processMessage ()、獲取對等節(jié)點間傳輸信息中的文本字符串getElementValue()、建立與TP節(jié)點的連接connectTeacher()、斷開與TP節(jié)點之間的連接disconnectTeacher()、請求一個新會話run()和運行主方法main()等。
(4)Agent類該類負責(zé)收集問題和答案,對學(xué)生對等節(jié)點收集的答案進行評估響應(yīng),并在“問題——答案”會話結(jié)束后根據(jù)該學(xué)生的回答給出相應(yīng)的學(xué)習(xí)建議。主要方法有:問題和答案集合創(chuàng)建initProblems(),獲得發(fā)送問題的總數(shù)get-TotalNumberOf Questions(),為SP提供下一個問題get-NextProblem(),處理答案processAnswer(),接收最后一個答案 getLastAnswer()、判斷問題是否結(jié)束hasMoreProblems(),獲得正確答案總數(shù)getTotalAnswersCorrect ()和獲得學(xué)習(xí)建議getSuggestions()等。此外,Agent類還定義了一個Problem類。這個類使用了三個方法:獲得特定問題編號的 getNumber()方法、獲得問題內(nèi)容的getQuestion()方法和獲得問題答案的getAnswer()方法。
(5)AgentFactory類 該類主要負責(zé)創(chuàng)建Agent對象。主要方法有:獲得Agent對象(getAgent)。系統(tǒng)開發(fā)完成后,進行了各種功能測試,證明該系統(tǒng)均能順利完成工作。
4 結(jié)束語
JXTA項目使得P2P應(yīng)用程序的開發(fā)者能將一個應(yīng)用程序中與P2P相關(guān)的特定功能交給JXTA去
p2p機相關(guān)文章:p2p原理
評論