基于WEBSERVICE的课件系统(三)

系统 1667 0

在前面的<<基于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>

 

 

 

 

基于WEBSERVICE的课件系统(三)


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

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

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

【本文对您有帮助就好】

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

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