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










評論