分享
 
 
 

Delph6生成Web Service及它时间效率问题

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

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再调时,就不用再与数据库连接,因为已建好,这样可能会大大提高时间效率的,这些问题,我想以后再慢慢想吧!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有