在前面的<<基于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。
主要算法:
<o:p></o:p>
初始化 WebService代理类,引入WebService;<o:p></o:p>
初始化xmldocument类,为解释xml做准备;<o:p></o:p>
将客户端的查询条件组合后形成sql查询语句;<o:p></o:p>
调用WebService;<o:p></o:p>
将返回的 WebService结果以字符串流的形式赋值给字符串;<o:p></o:p>
if (字符串为空)
{<o:p></o:p>
输出暂时没结果<o:p></o:p>
} <o:p></o:p>
else<o:p></o:p>
{
初始化dataset;<o:p></o:p>
用程序生成
将WebService返回的字符串读入dataset;<o:p></o:p>
读取xml中的<kejian>标记,形成结点集;
for (I=0;I<结点集个数-1;I++)<o:p></o:p>
{<o:p></o:p>
逐个结点解释 XML,将XML中的每个结点数据提取出来;<o:p></o:p>
<o:p></o:p>
}<o:p></o:p>
用程序动态生成新的数据表 kejian;<o:p></o:p>
将xml中已解释的每个结点映射到kejian表中;<o:p></o:p>
将 kejian表的数据源绑定到asp.net中显示数据的datagrid控件。<o:p></o:p>
显示搜索结果;
在上面的算法中,由于
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
去解决。
<o:p></o:p>
}<o:p></o:p>