1 引言

隨著網(wǎng)絡(luò)技術(shù)的發(fā)展和網(wǎng)絡(luò)應(yīng)用的普及,遠(yuǎn)程教育被認(rèn)為是網(wǎng)絡(luò)時(shí)代新的教育模式,正在迅速發(fā)展。在該教育模式下,教學(xué)活動(dòng)突破了學(xué)習(xí)時(shí)間和空間的局限性,教師與學(xué)生之間的關(guān)系發(fā)生巨大改變,教學(xué)和學(xué)習(xí)過(guò)程體現(xiàn)為教師一學(xué)生和學(xué)生一學(xué)生之間的資源共享和交流互動(dòng)。然而,當(dāng)今主要使用的基于B/S結(jié)構(gòu)的遠(yuǎn)程學(xué)習(xí)系統(tǒng)暴露出許多缺陷:(1)只依靠服務(wù)器端存儲(chǔ)信息和根據(jù)用戶請(qǐng)求進(jìn)行分發(fā),信息倉(cāng)儲(chǔ)基本保持靜止;(2)以服務(wù)器為中心,容易產(chǎn)生服務(wù)器瓶頸問(wèn)題;(3)用戶處于一種被動(dòng)接受狀態(tài),而不能提供信息。
P2P(Peer-to-Peer)計(jì)算提供一種全新方式,P2P網(wǎng)絡(luò)認(rèn)為所有節(jié)點(diǎn)在共享信息方面能力平等,每個(gè)用戶可提供分布信息倉(cāng)儲(chǔ),弱化了服務(wù)器客戶機(jī)的概念,這一特點(diǎn)符合現(xiàn)代教育模式中的教師一學(xué)生關(guān)系;從目前應(yīng)用看,P2P在大范圍的共享、搜索方面具有較大優(yōu)勢(shì),不經(jīng)服務(wù)器就可實(shí)現(xiàn)對(duì)等節(jié)點(diǎn)間的資源傳遞,避免發(fā)生服務(wù)器瓶頸問(wèn)題,這恰好符合了現(xiàn)代教育中的學(xué)生一學(xué)生關(guān)系。因此,將P2P技術(shù)引入到遠(yuǎn)程學(xué)習(xí)系統(tǒng)可發(fā)揮其在協(xié)同、搜索方面的優(yōu)勢(shì),擴(kuò)展遠(yuǎn)程學(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項(xiàng)目是由SUN公司發(fā)起的開(kāi)放源代碼項(xiàng)目,主要用于提供P2P系統(tǒng)所需的基礎(chǔ)服務(wù),由一系列簡(jiǎn)單的、開(kāi)放的協(xié)議組成。通過(guò)這些協(xié)議,連接到網(wǎng)絡(luò)的任何設(shè)備都能夠相互通信、協(xié)作和資源共享。JXTA技術(shù)致力于創(chuàng)建一個(gè)通用平臺(tái),以簡(jiǎn)單而有效的方式構(gòu)建特定的對(duì)等式和分布式服務(wù)與應(yīng)用,從而使開(kāi)發(fā)者無(wú)需過(guò)多考慮如何解決對(duì)等計(jì)算的技術(shù)問(wèn)題,集中精力實(shí)現(xiàn)和完善可擴(kuò)展、互操作性強(qiáng)、可靠性好的高層應(yīng)用。

2.1 JXTA應(yīng)用程序的體系結(jié)構(gòu)

JXTA應(yīng)用程序的體系結(jié)構(gòu)如圖1所示,從下至上劃分為3個(gè)層次,分別為核心層、服務(wù)層和應(yīng)用層。

基于JXTA的P2P遠(yuǎn)程學(xué)習(xí)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)


(1)核心層(JXTA Core)該層封裝了最根本的東西,為P2P服務(wù)和應(yīng)用提供核心支持。包括對(duì)等節(jié)點(diǎn)創(chuàng)建、對(duì)等組創(chuàng)建、Peer發(fā)現(xiàn)、Peer通信、Peer監(jiān)視和相關(guān)的安全原語(yǔ)。

(2)服務(wù)層(JXTA Services) 該層擴(kuò)展核心層的功能,為P2P應(yīng)用程序提供可選通用服務(wù),如索引、文件共享、分布式信息檢索、對(duì)等節(jié)點(diǎn)認(rèn)證、代碼緩存和內(nèi)容緩存機(jī)制。
(3)應(yīng)用層(JXTA Application)該層為創(chuàng)建各種類型的P2P應(yīng)用系統(tǒng)提供相關(guān)的應(yīng)用程序,主要有信息內(nèi)容管理、分布式存儲(chǔ)以及實(shí)時(shí)信息傳輸?shù)葢?yīng)用程序。

2.2 JXTA協(xié)議

JXTA協(xié)議采用XML標(biāo)準(zhǔn)的數(shù)據(jù)格式定義消息,獨(dú)立于具體的編程語(yǔ)言和傳輸協(xié)議,使得它更易于理解和獲得更多的支持。它可在TCP/IP、、 BlueTooth、HomePNA或其他傳輸協(xié)議之上建立一個(gè)虛擬JXTA網(wǎng),使得節(jié)點(diǎn)位于由防火墻和NAT設(shè)備分隔開(kāi)的網(wǎng)絡(luò)的不同部分或者處于異構(gòu)網(wǎng)絡(luò)協(xié)議的環(huán)境之間都同樣可以相互通信。這一優(yōu)點(diǎn)正是當(dāng)前遠(yuǎn)程學(xué)習(xí)系統(tǒng)最需要的。

3 遠(yuǎn)程學(xué)習(xí)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

3.1 遠(yuǎn)程學(xué)習(xí)系統(tǒng)的架構(gòu)設(shè)計(jì)

構(gòu)建的基于JXTA的P2P遠(yuǎn)程學(xué)習(xí)系統(tǒng)采用混合P2P模式,各個(gè)參與學(xué)習(xí)的站點(diǎn)分為3種不同角色:學(xué)生對(duì)等節(jié)點(diǎn)(Student Peer,SP)、教師對(duì)等節(jié)點(diǎn)(Teaeher Peer,TP)、教務(wù)管理對(duì)等節(jié)點(diǎn)(ManagerbPeer,MP)。MP在學(xué)習(xí)系統(tǒng)中起到管理、組織、協(xié)調(diào)各參與者的作用,并負(fù)責(zé)創(chuàng)建課程組,記錄各個(gè)課程組的資源索引,在課程組間提供搜索路由的功能,管理維護(hù)教學(xué)網(wǎng)站中的BBS、電子白板、聊天室、資源下載區(qū)、教師信息、學(xué)生信息、內(nèi)部電子郵件系統(tǒng)等欄目;TP節(jié)點(diǎn)從屬于某一課程組,主要協(xié)調(diào)、組織、評(píng)價(jià)本課程組內(nèi)參與學(xué)習(xí)者的學(xué)習(xí)過(guò)程,維護(hù)本課程組內(nèi)資源的索引信息,并將資源索引的變動(dòng)信息傳遞給MP;SP找到相應(yīng)課程組后可加人到其中,利用課程組中提供的課件、參考資料等共享資料進(jìn)行自主學(xué)習(xí);當(dāng)碰到疑難問(wèn)題時(shí),可與在線人員進(jìn)行兩兩學(xué)習(xí)交流,或展開(kāi)多人共同探討;若遇到難題無(wú)法解決時(shí),可聯(lián)系課程組教師通過(guò)電子白板實(shí)現(xiàn)虛擬教室,進(jìn)行及時(shí)在線輔導(dǎo)講課。整個(gè)遠(yuǎn)程學(xué)習(xí)系統(tǒng)的架構(gòu)如圖2所示。

基于JXTA的P2P遠(yuǎn)程學(xué)習(xí)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

3.2 遠(yuǎn)程學(xué)習(xí)系統(tǒng)的實(shí)現(xiàn)

系統(tǒng)應(yīng)用的開(kāi)發(fā)工具是NetBeans5.5、JDK5.0、JXTA2.0、 Java System Application Server Enterprise Edition 8服務(wù)器,數(shù)據(jù)庫(kù)采用由純Java語(yǔ)言編寫(xiě)的小型數(shù)據(jù)庫(kù)PointBase,它對(duì)平臺(tái)的支持性強(qiáng),并可直接過(guò)渡到其他數(shù)據(jù)庫(kù)。通過(guò)使用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,根據(jù)遠(yuǎn)程學(xué)習(xí)系統(tǒng)的工作原理和主要功能設(shè)計(jì)以下3個(gè)主要的類:

(1)Manager類該類代表系統(tǒng)中的MP,負(fù)責(zé)為MP設(shè)置JXTA環(huán)境及完成與TP的通信連接,將加入對(duì)等網(wǎng)的TP分配至合適的課程組;能夠創(chuàng)建一個(gè)新的課程組,當(dāng)某一課程組資源點(diǎn)擊人數(shù)低于某值時(shí),刪除該課程組。主要方法有:?jiǎn)?dòng)JXTA環(huán)境startJXTA(),創(chuàng)建課程組createCourseGroup()、刪除課程組deleteCourseCroup()、發(fā)布提供的遠(yuǎn)程學(xué)習(xí)服務(wù)discoverySvc()、獲取節(jié)點(diǎn)在線狀態(tài)pipeAdv()、創(chuàng)建一個(gè)通信管道inputPipe()、信息發(fā)送sendMessage()、發(fā)布節(jié)點(diǎn)的在線狀態(tài)publishPipeAdv(),創(chuàng)建信息發(fā)送管道 createInputPipe()和運(yùn)行主方法main()等。

(2)Teaeher類該類代表系統(tǒng)中的TP,負(fù)責(zé)為T(mén)P設(shè)置JXTA環(huán)境以及建立到MP的通信連接,并完成在學(xué)習(xí)系統(tǒng)中教師的功能。主要方法有:?jiǎn)?dòng) JXTA環(huán)境startJXTA(),發(fā)現(xiàn)教務(wù)對(duì)等節(jié)點(diǎn)在線狀態(tài)discoverManagerPipeAdv(),創(chuàng)建連接到MP的管道 createManagerPipes()、發(fā)布TP節(jié)點(diǎn)的在線狀態(tài)pub-lishTeacherPipeAdv(),創(chuàng)建發(fā)送會(huì)話消息到MP的通信通道createTeaeherInputPipe()、MP確認(rèn)TP發(fā)送的答案accept()、創(chuàng)建新會(huì)話requestNewSession()、讀取TP的輸入getUserRe-sponse()、獲取TP對(duì)MP的響應(yīng)sendToManager()、問(wèn)題信息處理processMessage ()、獲取對(duì)等節(jié)點(diǎn)問(wèn)傳輸信息中的文本字符串getElementValue()、建立與MP節(jié)點(diǎn)的連接connectMan-ager()、斷開(kāi)與MP 節(jié)點(diǎn)之間的連接disconnectManager()、請(qǐng)求一個(gè)新會(huì)話run()和運(yùn)行主方法main()等。另外,Teacher類的main()方法中還定義一個(gè)InputPipeMsgListener類實(shí)現(xiàn)PipeMsgListener接口來(lái)獲得管道中的消息。

(3)Student類該類代表系統(tǒng)中的SP,負(fù)責(zé)為SP設(shè)置JXTA環(huán)境以及建立與TP的通信連接,并完成在學(xué)習(xí)系統(tǒng)中學(xué)生的功能。主要方法有:?jiǎn)?dòng)JXTA環(huán)境 startJXTA(),發(fā)現(xiàn)教師對(duì)等節(jié)點(diǎn)在線狀態(tài)discoverTeacherPipeAdv(),創(chuàng)建連接到,TP的管道 createTeacherPipes()、發(fā)布SP節(jié)點(diǎn)的在線狀態(tài)publishStudentPipeAdv(),創(chuàng)建發(fā)送問(wèn)題答案到TP的通信通道 createStudentInputPipe()、TP確認(rèn)SP發(fā)送的答案accept()、創(chuàng)建新會(huì)話requestNewSession()、讀取 SP的輸入getUserRe-sponse()、獲取SP對(duì)TP的響應(yīng)sendToTeacher()、問(wèn)題信息處理processMessage ()、獲取對(duì)等節(jié)點(diǎn)間傳輸信息中的文本字符串getElementValue()、建立與TP節(jié)點(diǎn)的連接connectTeacher()、斷開(kāi)與TP節(jié)點(diǎn)之間的連接disconnectTeacher()、請(qǐng)求一個(gè)新會(huì)話run()和運(yùn)行主方法main()等。

(4)Agent類該類負(fù)責(zé)收集問(wèn)題和答案,對(duì)學(xué)生對(duì)等節(jié)點(diǎn)收集的答案進(jìn)行評(píng)估響應(yīng),并在“問(wèn)題——答案”會(huì)話結(jié)束后根據(jù)該學(xué)生的回答給出相應(yīng)的學(xué)習(xí)建議。主要方法有:?jiǎn)栴}和答案集合創(chuàng)建initProblems(),獲得發(fā)送問(wèn)題的總數(shù)get-TotalNumberOf Questions(),為SP提供下一個(gè)問(wèn)題get-NextProblem(),處理答案processAnswer(),接收最后一個(gè)答案 getLastAnswer()、判斷問(wèn)題是否結(jié)束hasMoreProblems(),獲得正確答案總數(shù)getTotalAnswersCorrect ()和獲得學(xué)習(xí)建議getSuggestions()等。此外,Agent類還定義了一個(gè)Problem類。這個(gè)類使用了三個(gè)方法:獲得特定問(wèn)題編號(hào)的 getNumber()方法、獲得問(wèn)題內(nèi)容的getQuestion()方法和獲得問(wèn)題答案的getAnswer()方法。

(5)AgentFactory類 該類主要負(fù)責(zé)創(chuàng)建Agent對(duì)象。主要方法有:獲得Agent對(duì)象(getAgent)。系統(tǒng)開(kāi)發(fā)完成后,進(jìn)行了各種功能測(cè)試,證明該系統(tǒng)均能順利完成工作。

4 結(jié)束語(yǔ)

JXTA項(xiàng)目使得P2P應(yīng)用程序的開(kāi)發(fā)者能將一個(gè)應(yīng)用程序中與P2P相關(guān)的特定功能交給JXTA去

p2p機(jī)相關(guān)文章:p2p原理



上一頁(yè) 1 2 下一頁(yè)