jackyrong

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
   临到年尾了,手上的工作基本完成,这几天忽然和旧同学聊天,他讲到当初咱们毕业设计时搞到的一个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  课件资源库的概况

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

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

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

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

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



 

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

  

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

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

 (2) .NET 对WEBSERVICE的支持
   
.NET平台内建了对WebService的支持,包括WebService的构建和使用。 与其它开发平台不同,使用.NET平台,不需要其他的工具或者SDK就可以完成WebService的开发。.NET Framework本身就全面支持WebService,包括服务器端的请求处理器和对客户端发送和接受SOAP消息的支持。

 (3) Java 对WebService的支持
     由于这次毕业设计我研究的部分设计到JAVA与.net上平台上的WebService的互连,因此我对JAVA中对WEBSERVICE的支持进行了研究。
 
   然而,在设计中,我发现如IBM,Sun,Bea,OracleApache等公司或组织都纷纷提出了基于WebService的开发标准和工具,而当中有的是很复杂的。有的虽然功能强大,但在和.NET平台上的WebService的互操作性上不强。最后,我选用了apache组织免费的开源项目Axis

  Axis(Apache extensible Interaction System)的前身是著名开源组织Apache开发的Apache Soap的最新一代产品,目前最新的版本是1.1Axis有以下特点:
 1 使用SAX解释器对XML进行解释,速度比用DOM解释快,灵活性高。
  2  
能自动对原有的Java文件生成对应的wsdl文件。
  3  
能方便地对发布的WebService部署。
  4  
具有十分良好的互操作性,能与其他语言编写的WEB服务进行相互操作调用。 
4.3  .NETWebService的设计

    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]

              public  XmlDataDocument Query(string querystring)

              {

            string str;

                     TextWriter writer = new StringWriter();

                     XmlDataDocument doc=new XmlDataDocument();

                     string sql="select * from kejiana"+" where "+querystring;

                     cnn.Open();

                     SqlDataAdapter da=new SqlDataAdapter(sql,cnn);

                   DataSet ds = new DataSet();

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

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

                     {

                            doc1=new XmlDataDocument(ds);

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

                   doc1.LoadXml(str);

                            return doc1;

                     }

                     else  //如果结果不为空

                     {

                      doc=new XmlDataDocument(ds);

                            XmlNode root1=doc.DocumentElement;

                            XmlNodeList roots=root1.SelectNodes("kejian");

                 foreach(XmlNode roota in  roots)  //XML增加结点fromnet

                            {

                                   XmlElement fromnet=doc.CreateElement("fromnet");

                                   XmlElement link=doc.CreateElement("A");

                                   link.SetAttribute("HREF","http://localhost/kejiana/");

                                   fromnet.AppendChild(link);

    roota.AppendChild(fromnet);

                            }

                          return doc;

                     }

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


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

 

 

 

 

 

 

posted on 2005-01-28 22:47  jackyrong的世界  阅读(7923)  评论(8编辑  收藏  举报