基于WEBSEVRICE的课件搜索系统(一)

系统 1430 0
   临到年尾了,手上的工作基本完成,这几天忽然和旧同学聊天,他讲到当初咱们毕业设计时搞到的一个JSP搞的远程教育系统,因为他最近要搞JSP,想进行深化。我想,这也是个好办法呀,1年多前的毕业设计,时间仓促,很多东西都来不及深入和展开,理解不透彻,何不现在拿回来研究呢。于是,今晚我将当初的东西重新翻出来,看了一次。当大致看完一次后,我忽然发现,当初身为组长的我,在很多设计方面考虑的是多么可笑,有的地方现在看来还是相当幼稚(毕竟1年多了,技术也进步了,了解的东西也多了)。想当初,我做组长,和其余6个组员,真正编码才2个月左右,搞出的东西居然还被评为优秀,哈哈,真的不知道是什么回事了。不过,现在总结下当初的设计经验,我觉得还是很有收获的。接下来,打算将原本的一些我们的设计方法拿出来给大家批评指点下,主要介绍的是webservice部分和我有关的,来源来自我的论文部分,如果哪位需要转载的话,麻烦先通知声,注明出处,谢谢。

一 设计概述
    其实整个设计为学校服务,包括


  A 学生的自主个性化学习系统
     将智能理论引入教学系统,模仿教师的教学思想有选择地提供路径供学生学习,并且
实现学生与教师的双向选择。教材和教程的安排是提高教学质量、激发学习兴趣的关键。系统分为以下几个部分:
    1 学生自主学习:系统根据学生的学历,生成不同的学习章节安排,分为强制学习和自由学习两种方式。强制学习是指学生在浏览课程内容的时候,必须按照章节的指定顺序从头开始学习,在学习完一章后通过自我检测后再进入到下一章的学习;而自由学习方式中,学生可以按任意的顺序浏览课程的内容。
    2 事件提醒功能:
该模块可以让学生在日历中设置自己的事件提醒,学习计划定制,还可以随时记录自己感兴趣的内容,做学习笔记;可以做书签,标记所感兴趣的内容,以后再查看。学生可以通过系统提供的webmail电子邮件功能向教师发送邮件,提问问题。
 B 学习答疑系统
    答疑系统分为实时答疑系统和非实时答疑系统。
   非实时答疑系统设计为一个论坛,学生在学习中遇到问题的时候,可以提出问题,可以上传问题的附件。老师可以很方便地解答学生的各种问题,并反馈给学生;学生可以对教师解答的问题予以投票评价,
    实时答疑系统是一个聊天室,教师和学生可以在指定的时间内在聊天室中进行问题交流。
 C  在线自我测试系统 
    学生在学习完一定课程后,将可以进行测试,系统提供自动组卷和手动组卷两种方式供教师进行组卷。学生在进行自我测试后可以立即查看成绩答案,可以知道自己在某个知识领域方面的掌握情况,教师可以对学生的测试成绩进行简单的统计,以图表形式展示。
  D 教案管理系统
     教师可以上传教案,教案可以是纯文本输入的方式,可以是已经做好的ppt,还可以利用系统本身的简单网页编辑器进行教案的编辑,修改,可以上传到服务器指定位置。
  E 课件管理系统
教师可以将自己制作的优秀课件上传到课件资源库,供学生下载,此外,该系统通过XML WebService的方式,将该系统与其他不同平台的系统相连;教师可以在查询教学资源时,可以将请求发送到不同站点的系统中,不同的系统通过xml的方式返回结果,从而缩小了搜索的范围,大大方便了教学资源的网上共享。

 

 


        其实,我们当初为了学习JAVA/JSP,所以多提出了很多要实现的东西。而在毕业设计完成后,也惊奇的发现,我们这个系统里,可谓用到了很多技术点,如jsp,javabean,servlet,asp.net,xml,webservice,第三方组件,mobile开发,而至于什么关于JAVA/JSP的技术应用也汇集了,
比如什么树型结构, 文件上传 ,聊天室,论坛,JSP的图形,日历,JAVAMAIL。。。,唯一实现失败的是利用JAVA搞语音聊天室失败了。


二 基于 XML WebSerivce的课件搜索系统
    其实,现在看来,当初搞这个系统,根本只是纯粹应老师要求,加上自己爱好,想研究WEBSERVICE的,实际上至少目前为止,还不会这样使用。下面就详细讲下,摘录原论文的部分。我当初的目的时,通过JAVA和。NET的WEBSERVICE互相调用,了解其实现方法,以体现WEBSERVICE的跨平台特性,可惜现在看回来,当初我的实现方法出现很多错漏和明显的问题,但毕竟还是初步实现了,嘿嘿,所以打算原始呈现给大家。

4.1.1   课件资源库的概况<o:p></o:p>

在远程教育系统中,教师可以在用 Powerpoint,Flash,Authorware等软件在制作课件后予以上传到服务器,以供下载使用。传统的远程教育站点课件资源库就是采用简单的“上传――搜索-下载”的模式实现的。但随着Internet技术的不断发展,互联网上的优秀课件资源变得越来越丰富,教师在进行教学备课,学生在学习中,不再单单局限在某一站点上搜索课件教学资源,因为单一站点上的课件资源不能满足要求。教师或者学生往往要通过其他搜索引擎(如google,yahoo等),但往往搜索出来的结果可以说是海量的,要再次在其中逐一查找,浪费了时间,而且现在的搜索引擎搜索出来的结果,很多都不是十分准确的,包含了其他无用的信息。        
   4.1.2   新系统解决方案概述
   
在新系统的解决方案中,本人提出了使用XML WebService技术构建共享课件资源库。就是使用当今最新的XML WebService技术,从而可以使即使是不同平台(unix/liux,Widows nt/server平台),使用不同语言(asp.net,jsp)构建的远程教育网站站点之间,能够互相访问对方的课件资源库的资源。<o:p></o:p>

其中,在本人的设计中,使用 C#,asp.net分别模拟构建了另外两个远程教育网站的课件资源库部分,分别为网站A,网站B,它们分别提供了其自身的课件资源库的WebService接口,接收来自其他网站发送的查询请求,而称这次我们毕业设计小组设计的JSP网站为本地网站。系统的整个工作流程概述如下:
(1) 当用户要搜索课件时,首先将查询的请求格式化为SQL语句。之后将请求发送到
WebService 课件代理中心( UDDI

(2) UDDI 注册中心中,注册了 A B 两个网站的 WebService 的有关信息,当收到本地网站的请求后, UDDI 中心调用 A B 两个网站的 Webservice, 将用户的请求分别发送到它们的 WebService
(3)A
B 网站的 WebService 分别收到了用户的请求, 并调用自己的搜索方法,再将请求发送到各自的数据库 A,B。<o:p></o:p>

(4) A,B 网站分别将数据库 搜索出来的结果以 XML的形式返回到UDDI注册中心的课件WebService课件代理。而UDDI中心的课件代理则将A,B网站返回的XML加以整理,再返回给本地网站。
(5) 本地网站将返回的XML加以解释,提取结点的内容,再以一定的样式显示在用户面前。<o:p></o:p>

   上面的流程用结构图表示如下:



<o:p></o:p>

 <o:p></o:p>

 <o:p></o:p> 由于这次我们小组设计的系统是使用 Java技术构造的,通过WebService,可以成功地与其他两个.net架构的远程教育课件库系统相连。这样一来,当学生或教师要搜索课件的时候,搜索到的就不单单是一个网站的课件资源,而是有可能搜索到若干个同类型网站的课件资源,而搜索出来的结果是十分有效的,没有冗余的信息,十分方便并且有效。而且这种模式可以有效地推广到其他网站的经营模式上去。<o:p></o:p>

   <o:p></o:p>

  4.2   .NET和Java 的WebService概述
 
(1) 微软.NET简介
     2000年6月22日,微软正式推出了其.net战略,2002年,VS.NET 2002 正式推出。<o:p></o:p>

.NET的最终目的就是让用户在任何地方、任何时间,以及利用任何设备都能访问他们所需要的信息、文件和程序。而用户不需要知道这些东西存在什么地方,甚至连如何获得等具体细节都不知道。他们只需发出请求,然后只管接收就是了,而所有后台的复杂性是完全屏蔽起来的。<o:p></o:p>

  (2) .NET 对WEBSERVICE的支持
    
.NET 平台内建了对 WebService 的支持,包括 WebService 的构建和使用。 与其它开发平台不同,使用 .NET 平台,不需要其他的工具或者 SDK 就可以完成 WebService 的开发。 .NET Framework 本身就全面支持 WebService ,包括服务器端的请求处理器和对客户端发送和接受 SOAP 消息的支持。
  (3) Java 对WebService的支持
      由于这次毕业设计我研究的部分设计到JAVA与.net上平台上的WebService的互连,因此我对JAVA中对WEBSERVICE的支持进行了研究。
 
    然而,在设计中,我发现如 IBM,Sun,Bea,Oracle Apache 等公司或组织都纷纷提出了基于 WebService 的开发标准和工具,而当中有的是很复杂的。有的虽然功能强大,但在和 .NET 平台上的 WebService 的互操作性上不强。最后,我选用了 apache 组织免费的开源项目 Axis
Axis(Apache extensible Interaction System) 的前身是著名开源组织 Apache 开发的 Apache Soap 的最新一代产品,目前最新的版本是 1.1 Axis 有以下特点:
 1 使用 SAX 解释器对 XML 进行解释,速度比用 DOM 解释快,灵活性高。
  2   
能自动对原有的 Java 文件生成对应的 wsdl 文件。
  3   
能方便地对发布的 WebService 部署。
  4   
具有十分良好的互操作性,能与其他语言编写的 WEB 服务进行相互操作调用。  
4.3   .NET WebService 的设计
    4.3.1 .NET
端的 websevice
   
首先,我先讲下 .NET 端的 WebService 设计。在设计中, A 网站采用的是 ms sql server 2000 数据库,而 B 网站采用 access 2000 设计。对 A,B 网站的数据库的设计如下,分别命名为 kejiana,kejianb 其数字字典见附录的表 4。
    建立数
据库后,就可以建立 .Net 端的 Webservice ,下面以网站A为例介绍(网站B的构建类似):
主要编程思想:
1) 引入 .Net 中的有关 WebService 的类库,如 System.Web.Service 等;
2)
根据传入的 sql 语句,查询 Kejiana 的数据库,返回有关的查询结果。
3)
对查询的结果进行 xml 格式化,转化为统一的 xml
   
其中,在 asp.net 中,对数据库的操作的结果是以 dataset 来表示的。 DataSet 是在 ADO.NET 中的一个重要组成部分, ADO.NET让程序开发人员可以在下一代的Web上进行数据存取更为简单,并且更有效率。ADO.NET可以达成这些目的的最重要的两个改进为:Disconnected DataSet(离线数据集)和XML支持。简单来说,DataSet对象就是RecordSet的集合,ADO.NET Framework会提供所有的RecordSet数据库特性,例如排序、分页、检视表、关联性、索引,和主键等,它是一种简单的,驻留在内存中的数据存储方式,实际上它是以XML格式存储的,所以无论是哪种平台或者是哪种语言,都可以使用DATASET。在设计中,我充分利用了dataset的这个功能,先将数据库查询结果转化为dataset,然后再整理为XML。主要代码如下:
  [WebMethod]<o:p></o:p>

              public   XmlDataDocument Query( string querystring)<o:p></o:p>

              {<o:p></o:p>

             string str;<o:p></o:p>

                     TextWriter writer = new StringWriter();<o:p></o:p>

                     XmlDataDocument doc= new XmlDataDocument();<o:p></o:p>

                     string sql="select * from kejiana"+" where "+querystring;<o:p></o:p>

                     cnn.Open();<o:p></o:p>

                     SqlDataAdapter da= new SqlDataAdapter(sql,cnn);<o:p></o:p>

                    DataSet ds = new DataSet();<o:p></o:p>

                     da.Fill(ds,"kejian");// 以上代码将查询的结果放到 dataset 中去。 <o:p></o:p>

                     if (ds.Tables["kejian"].Rows.Count==0) // 如果数据集为空 <o:p></o:p>

                     {<o:p></o:p>

                            doc1= new XmlDataDocument(ds);<o:p></o:p>

                            str="<root>"+doc1.InnerXml+"</root>";<o:p></o:p>

              doc1.LoadXml(str);<o:p></o:p>

                            return doc1;<o:p></o:p>

                     }<o:p></o:p>

                     else // 如果结果不为空 <o:p></o:p>

                     {<o:p></o:p>

                     doc= new XmlDataDocument(ds);<o:p></o:p>

                            XmlNode root1=doc.DocumentElement;<o:p></o:p>

                            XmlNodeList roots=root1.SelectNodes("kejian");<o:p></o:p>

              foreach (XmlNode roota in   roots)   // XML 增加结点 fromnet<o:p></o:p>

                            {<o:p></o:p>

                                   XmlElement fromnet=doc.CreateElement("fromnet");<o:p></o:p>

                                   XmlElement link=doc.CreateElement("A");<o:p></o:p>

                                   link.SetAttribute("HREF","http://localhost/kejiana/");<o:p></o:p>

                                   fromnet.AppendChild(link);<o:p></o:p>

    roota.AppendChild(fromnet);<o:p></o:p>

                            }<o:p></o:p>

                     return doc;<o:p></o:p>

                     }<o:p></o:p>

              }
在上面的代码中,在查询出数据库的内容之后,首先要判断数据集的内容是否为空,如果数据集的内容为空,则返回空的 XML。如果数据集不为空,则首先将数据集转化为xmldatadocument,xmldatadocument是xmldocument的子类,它的功能是实现XML和DATASET的转化。同时,由于最后要告诉用户,课件是来自于哪一个网站的,所以要在生成的xml中加入一个结点fromnet,表示搜索出来的结点来自于哪一个网站。
  编译该WebService,可以看到如下界面: 
  <v:shapetype id="_x0000_t75"><v:stroke></v:stroke><v:formulas><v:f></v:f><v:f></v:f><v:f></v:f><v:f></v:f><v:f></v:f><v:f></v:f><v:f></v:f><v:f></v:f><v:f></v:f><v:f></v:f><v:f></v:f><v:f></v:f></v:formulas><v:path></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype>


上面的界面中,就是 WebService的初始界面,其中querystring就是要输入的参数,该参数实际上是来自外部系统的。比如,在这里,输入sql语句的一部分kname like %vb% ,表示要查询的是课件名中包含VB字样的所有记录,在提交请求后,WebService便会调用数据库查询,将查询的结果以XML的形式返回。<o:p></o:p>

 <o:p></o:p>

 

 

 

 

 

基于WEBSEVRICE的课件搜索系统(一)


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论