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