随着网络技术的发展和网络应用的普及,远程教育被认为是网络时代新的教育模式,正在迅速发展。在该教育模式下,教学活动突破了学习时间和空间的局限性,教师与学生之间的关系发生巨大改变,教学和学习过程体现为教师一学生和学生一学生之间的资源共享和交流互动。然而,当今主要使用的基于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原理
评论