网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计资源 > 时间与效率 > 正文

Delph6生成WebService及它时间效率问题

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

  Web Service 的测试报告(Delphi)

  说明:使用Delphi操作一个Web Service是不复杂的,而创建一个Web Service服务及生成客户端调用相对都不难,在delphi6中有几个现在的组件精灵的,我们用它便可以向导式的生成我们所需要的接口方法,只是开头摸索的过程有点费劲,等把架子弄好之后,再往里添加新的方法时就很容易了,我下面将结合一个例子描述一下我的创建过程,并简单说明一下它的执行效率的测试,最后再和孙一波交叉测一下,比较一下优劣(各方面)。

  测试环境:Web Service(以下简称WS)放在本机上,走IIS的Web服务。客户端也在本机上,两端都是用delphi6所编写的。

  时间效率:耗时主要费在两个方面,其一是WS的定位找寻;其二是数据库的连接及数据库的操作(主要耗在连接上,操作我认为几乎可以忽略)。

  执行一个操作(如:Select或Insert SQL操作)大概要半分钟左右,主要是第一次操作慢,如果你连着做几个动作,那个时间则要不了多久的。所以大头的时间都是耗在WS的定位网络时耗上。

  在数据库的连接上,我做了两个实例,其一是用ODBC连接做相关操作,其二是用ADO连接做操作,这两个实例给我的人为感觉上差不多时间,没有太大区别,等你们测再看看了。

  程序编写难度:除了那几个新组件要熟悉一下外,其余的都是delphi5里的东东,难度不是很大,也比较容易上手,如果有一个模式可以套的化。编第一个WS我花了一天多点的时间,主要是国内的站点上用C#讲的比较多些,用delphi的则很难找到现成的例子,我是结合《程序员》杂志上及一两个国外站点上找的资料而写的。

  下面我就把这个Test的思路流程及一些关键的技术给描述一下,给大家参考,希望能抛砖引玉,呵呵!

  一、服务器端实现

  1.New 一个Application

  2.在New Items页选择WebService中选择Soap Server Application,系统会自动给你生成一个Web Module,里含三个组件:一个TTPSoapDispatcher组件, 一个 HTTPSoapPascalInvoker组件, 和一个 WSDLHTMLPublish 组件,如下图:

  第一个组件响应到来的SOAP请求而后将它们发送给我们的Web模块.第二个组件将到来的SOAP请求翻译成对我们的Pascal对象方法的调用过程.第三个模块产生基于我们发布的可调用界面的WSDL,以便外界能够得知如何使用我们的Web服务,这些我们可以先不管,因为这都是自动产生的,如果不想深入研究WS的机制的化,这些可先抛在一边,因为它们的功能已全部自已产生,不用我们去操心了。

  3.然后生成二个比较重要的文件,来描述我们这个Test WS能对外提供哪些服务的,据我摸索,这两个文件只能手工写,它们也是WS在delphi中的架子。具体怎么写可参看我的源码,在王剑白的共享目录中有。

  4.再生成一个数据模块,它是用来和数据库打交道的,有TdataBase,TQuery(两个一个放有反馈结果的SeleSQL,一个是没有反馈结果的ExecSQL),这个DM在步骤三中接口实现中都会用上的。

  5.这些都做完后,编译生成Exe文件,一个Web Service就完全生成了,Pretty Cool ,HuH!,然后我们可以用Http://localhost/Service/test/Itest/wsdl/Itest,在Brower里就可以看到此WS的WSDL的描述了,一切就绪了,就等着调用了。

  二、客户端实现

  说明:使用delphi6开发调用Web Service的客户端应用程序更简单了,因为它提供的WebServices组件组中的THTTPRIO组件是很方便的,只要我们设它的欲调用的WS的WSDL,那么THTTPRIO组件便可以自动的处理所有调用的WS的细节了。

  步骤:

  1.  New 一个Project Application

  2.  在New Items页选择WebService中选择Web Service Importer,在提示框中输入Http://localhost/service/test/Itest/wsdl/Itest,也就是WSDL(Filename或URL),系统会自动产生一文件,来描述我们的WS,这个我们也可以先不管,打开一看,里头有我们所定义的函数说明。

  3.  New 一个Form,拽入THTTPRIO组件,设好它的属性WSDLLocation,同样是上面那个串,选好它的Port和Service属性,我们该做的预备工作都做好了

  4.  拽一个Button过来,写你想调用的方法就可以了。好了,全部完了!

  有几点注意的地方:

  1.  在WS方法实现文件中要创建数据模块,我的程序里用CreateDM私有函数来完成的,最后再FreeDM掉,千万不能在Project中用Application.CreatForm(TDM,DM)来完成,要不WS总会有错的。

  2.  在IIS虚目录中,一定要选上执行CGI的权利那一项,要不也是不行的。

  3.  在New Soap Server Application时,最好不要选择创建DLL形式的WS,要不编译时总要重起机子的,否则是不让编译的。

  还存在的问题:

  1.调WS时,不能跟踪进去,不知有没有好的办法。

  2.除了DM方式操作数据库外,不知还有没有别的途径来,因为我想把数据库操作或者说业务逻辑部分建立在WS之上一层,让它先运行,驻留在内存中,这样以后WS再调时,就不用再与数据库连接,因为已建好,这样可能会大大提高时间效率的,这些问题,我想以后再慢慢想吧!

  • 下一篇资讯: 时间效率管理
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师