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