在前面的<<基于WEBSERVICE的课件系统(1)>>(http://www.cnblogs.com/jackyrong/archive/2005/01/28/99025.html)
和<<基于WEBSERVICE的课件系统(2)>>(http://www.cnblogs.com/jackyrong/archive/2005/01/28/99027.html)中,回顾了当初
自己毕业设计中,自己实现的一个课件搜索系统的情况,这是为了模拟实现。NET和JAVA的WEBSERVICE互操作性而搞的,下面继续贴出其他部分,以反省当初自己设计的不足。
4.5 .NET客户端――Java端WebService的设计
反过来,我也设计了一个用Java写的WebService和一个由asp.net写的.Net客户端,其中用Java写的WebService对外提供WebService接口,供查询课件所用。而由asp.net写的.Net客户端则模拟其他网站的课件搜索模块。
主要设计方法思想:
1)Java端WebService的设计
利用Axis,可以很方便地将一个Java的类文件发布为WebService,只需要将Java的类文件改后缀名为.jws,之后运行,Axis就会将类文件编译,生成相应的wsdl。其设计思想为:
,首先在数据库中对输入的参数进行数据库查询,如果找到结果, 则对记录集中的每条数据提取出来,生成指定格式的XML。如果没有找到任何结果,则返回一个空的字符串。由于在WebService中,XML是传播的最好介质,所以我用字符串组合xml的形式,避免了用Java或者.Net中各种复杂的数据类型在WebService中传递遇到的不一致性和复杂性的问题。
编译程序,就可以用http://localhost:8080/axis/msearchjavaws.jws生成WSDL文件。
2) .Net客户端的设计
首先使用vs.net 2002中的UDDI自动搜索工具,将由Java端生成的WSDL文件导入,系统自动生成代理类。之后就可以利用该代理类来调用WebService。
主要算法:
初始化WebService代理类,引入WebService;
初始化xmldocument类,为解释xml做准备;
将客户端的查询条件组合后形成sql查询语句;
调用WebService;
将返回的WebService结果以字符串流的形式赋值给字符串;
if (字符串为空)
{
输出暂时没结果
}
else
{
初始化dataset;
用程序生成
将WebService返回的字符串读入dataset;
读取xml中的<kejian>标记,形成结点集;
for (I=0;I<结点集个数-1;I++)
{
逐个结点解释XML,将XML中的每个结点数据提取出来;
}
用程序动态生成新的数据表kejian;
将xml中已解释的每个结点映射到kejian表中;
将kejian表的数据源绑定到asp.net中显示数据的datagrid控件。
显示搜索结果;
在上面的算法中,由于asp.net中使用的是服务端控件datagrid,所以绑定到它上面的是dataset类型的数据。在读取Java端的WebService返回的xml字符串后,必须将字符串流用.Net中的xmldocument类读取,转变为.Net中能够接受的dataset形式。其中比较关键的是要将XML中的每个结点映射为数据表中的每一条记录
5.1 在移动设备中使用WebService
WebService的使用十分广泛,在移动设备中也可以通过调用WebService实现很多功能。在这次的设计中,我将原来系统中的日历事件提醒功能移植到移动设备(手机),使得用户通过在手机上登陆,就可以查看当天有哪些事件需要提醒。具体设计如下:
在原先我们小组设计的系统中,有一项是事件日历提醒功能。用户可以在登陆系统后,选择日历中某天后,可以设定某天中需要提醒的事件,设定需要提前几天提醒。这样,当用户再次登陆系统后,如果当天有事件提醒,就会在系统中显示出来,提醒用户要注意。而由于远程教育的特殊性,以及科技通讯技术的日益发达,用户可以通过手机登陆系统,输入自己的用户名和密码,在登陆后,如果当天有事件需要提醒的话,就会在手机上显示。系统的架构图为:
由于条件的限制,这次我只能采用Nokia 6210模拟器进行模拟,该模拟器能完全模拟实际手机的尺寸大小和显示效果。客户端的开发全部采用微软的VS.NET 2002及移动工具开发包。而整个过程都是调用Java端的WebService的,由于WebService传递的是XML,因此十分适宜在移动设备上使用。下面是有关的主要界面:
当用户在手机上输入地址后,会出现图1的界面。之后用户输入用户名和密码,此时客户端会调用登陆验证的WebService,如果用户输入正确,就会继续调用日历提醒的WebService,该WebService调用后台数据库,查看该用户当天是否有事件提醒,如果有的话则返回要提醒的事件。由于手机屏幕比较小的缘故,所以每屏只显示一到两条,用户可以通过手机翻页功能查看下一条事件。当查看每件事件的具体内容时,会出现图2的界面。
由此可以看出,WebService的精髓在于,通过XML,可以实现不同信息设备之间的资源共享。特别是在于移动设备方面,通过XML WebService,可以使编程变得简单,而且扩展性十分好,能适应不同设备的大小。因为移动设备是“瘦”客户端的缘故,所以就应该把逻辑计算等重要部分放到服务端去做。而服务端系统操作平台的多样性,开发语言的多样性使得问题变得复杂。这些只有通过WebService去解决。
}