基于WEBSEVRICE的课件搜索系统(一)
4.1.1 课件资源库的概况 在远程教育系统中,教师可以在用Powerpoint,Flash,Authorware等软件在制作课件后予以上传到服务器,以供下载使用。传统的远程教育站点课件资源库就是采用简单的“上传――搜索-下载”的模式实现的。但随着Internet技术的不断发展,互联网上的优秀课件资源变得越来越丰富,教师在进行教学备课,学生在学习中,不再单单局限在某一站点上搜索课件教学资源,因为单一站点上的课件资源不能满足要求。教师或者学生往往要通过其他搜索引擎(如google,yahoo等),但往往搜索出来的结果可以说是海量的,要再次在其中逐一查找,浪费了时间,而且现在的搜索引擎搜索出来的结果,很多都不是十分准确的,包含了其他无用的信息。 其中,在本人的设计中,使用C#,asp.net分别模拟构建了另外两个远程教育网站的课件资源库部分,分别为网站A,网站B,它们分别提供了其自身的课件资源库的WebService接口,接收来自其他网站发送的查询请求,而称这次我们毕业设计小组设计的JSP网站为本地网站。系统的整个工作流程概述如下: (2) 在UDDI注册中心中,注册了A,B两个网站的WebService的有关信息,当收到本地网站的请求后,UDDI中心调用A,B两个网站的Webservice,将用户的请求分别发送到它们的WebService。 (4) A,B网站分别将数据库搜索出来的结果以XML的形式返回到UDDI注册中心的课件WebService课件代理。而UDDI中心的课件代理则将A,B网站返回的XML加以整理,再返回给本地网站。 上面的流程用结构图表示如下: 4.2 .NET和Java 的WebService概述 .NET的最终目的就是让用户在任何地方、任何时间,以及利用任何设备都能访问他们所需要的信息、文件和程序。而用户不需要知道这些东西存在什么地方,甚至连如何获得等具体细节都不知道。他们只需发出请求,然后只管接收就是了,而所有后台的复杂性是完全屏蔽起来的。 (2) .NET 对WEBSERVICE的支持 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; } }
其实,我们当初为了学习JAVA/JSP,所以多提出了很多要实现的东西。而在毕业设计完成后,也惊奇的发现,我们这个系统里,可谓用到了很多技术点,如jsp,javabean,servlet,asp.net,xml,webservice,第三方组件,mobile开发,而至于什么关于JAVA/JSP的技术应用也汇集了,
比如什么树型结构,文件上传,聊天室,论坛,JSP的图形,日历,JAVAMAIL。。。,唯一实现失败的是利用JAVA搞语音聊天室失败了。
二 基于XML WebSerivce的课件搜索系统
其实,现在看来,当初搞这个系统,根本只是纯粹应老师要求,加上自己爱好,想研究WEBSERVICE的,实际上至少目前为止,还不会这样使用。下面就详细讲下,摘录原论文的部分。我当初的目的时,通过JAVA和。NET的WEBSERVICE互相调用,了解其实现方法,以体现WEBSERVICE的跨平台特性,可惜现在看回来,当初我的实现方法出现很多错漏和明显的问题,但毕竟还是初步实现了,嘿嘿,所以打算原始呈现给大家。
4.1.2 新系统解决方案概述
在新系统的解决方案中,本人提出了使用XML WebService技术构建共享课件资源库。就是使用当今最新的XML WebService技术,从而可以使即使是不同平台(unix/liux,Widows nt/server平台),使用不同语言(asp.net,jsp)构建的远程教育网站站点之间,能够互相访问对方的课件资源库的资源。
(1) 当用户要搜索课件时,首先将查询的请求格式化为SQL语句。之后将请求发送到WebService课件代理中心(UDDI)
(3)A,B网站的WebService分别收到了用户的请求,并调用自己的搜索方法,再将请求发送到各自的数据库A,B。
(5) 本地网站将返回的XML加以解释,提取结点的内容,再以一定的样式显示在用户面前。
(1) 微软.NET简介
2000年6月22日,微软正式推出了其.net战略,2002年,VS.NET 2002 正式推出。
.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]
在上面的代码中,在查询出数据库的内容之后,首先要判断数据集的内容是否为空,如果数据集的内容为空,则返回空的XML。如果数据集不为空,则首先将数据集转化为xmldatadocument,xmldatadocument是xmldocument的子类,它的功能是实现XML和DATASET的转化。同时,由于最后要告诉用户,课件是来自于哪一个网站的,所以要在生成的xml中加入一个结点fromnet,表示搜索出来的结点来自于哪一个网站。
编译该WebService,可以看到如下界面:
上面的界面中,就是WebService的初始界面,其中querystring就是要输入的参数,该参数实际上是来自外部系统的。比如,在这里,输入sql语句的一部分kname like ‘%vb%’,表示要查询的是课件名中包含VB字样的所有记录,在提交请求后,WebService便会调用数据库查询,将查询的结果以XML的形式返回。
优质内容筛选与推荐>>