delphi7现在开发webservice的估计不多了,所以有些资料还是很难找的,我经实际开发,并整理了一些,放到一起供参考。 | ||
Delphi7支持五种部署方式来开发Webservice,分别介绍: Isapi是在IIS下运行; CGI是可以在IIS和apache下运行;我自己只在iis下部署了,没试apache。 Apache 1.x需要部署到apache1的版本下; Apache2.x需要部署到apache2; Debugger 是可以在方便Delphi中继承调试的; 以上可以在编写完业务代码后,再根据部署环境的不同,可以单独建立项目来实现,在开发时完全一样。 以下是我在应用碰到的问题和解决方式: 一、首先 我以Isapi部署项目,在Xp Professor下能够运行,但不稳定,经常出现Xml不是正确的格式。其次我在windows2000 server下部署,通过浏览器可以看到提供了接口的服务,但当应用程序调用时,长时间没反应,最后没找见问题原因。这时,我不想让服务器依赖于操作系统的版本,决定放弃IIS,选择apache作为服务器;具体部署过程如下: IIS setup --------- Goto the IIS ControlPanel.....控制面板 Rt.Click on My computer and select Manage Expand the "Servers and applications" node Expand the "Internet Information Server" node Select "Default WebSite" RightClick on "Default WebSite" Select New--> Virtual Directory Next Set Alias to "EchoService" Next Set Directory to <DelphiPath>\Demos\WebServices\EchoService\server Next Check {Read, Run, Execute, Browse} Next, Finish From a webBrowser Go to http://localhost/echoservice/ You should see the contents of the Server directory Click on EchoService_CGI.exe Expect: Default webPage Click on the IEchoService wsdl link (if in IE or NS6) you should now see the WSDL 二、第二 因为当前最新版的apache是 项目的目标文件可以分为两种:一种是.dll文件,另外一种是.so文件; 请在编写完项目后,千万注意,因为delphi7的版本不能支持apache2.2,所以一定要打开你的HTTPD2.pas文件,进行如下修改 MODULE_MAGIC_COOKIE =$041503232; (* "AP22" *) 第一种:dll文件的项目
ModuleName:=' // Handler :='lvyepiao2'; //该行在我的环境下要不得
第二种方式:so文件 Note: you can also use the Application page of the project options dialog to change the extension and prefix. The other change here was to update the default exported module record name from Project1_module, resulting in:
最后就是在apache的配置了,用文本编辑器打开apache 目录下的conf目录里面的httpd.conf,
The bits you customise are:
比如我刚才建立的项目可以在配置文件中加入:
然后http://localhost/delphi.可以访问,表明一切正常。 然而我还有一个问题没有解决:我本来想在使用系统初始化时在 后台createThread创建并启动该线程,结果线程一运行就报错。后来不得已把该线程毙了,有知道的请帮我回复下。 三、第三在apache1下就简单的多了,不存在版本问题,其它的步骤跟apache2相同,那时候apache1早就出来了,支持的挺好。我使用的apache的版本为apache 在apache1的好处就是我在apache2下不能运行的线程在这里运行跟预想的结果一致,不知道为什么?可能是2做了一些什么变动。 四、 第四就是调试方式的部署了,参考delphi的demo下 <DelphiPath>\Demos\WebServices\EchoService\read.txt文件中详细描述; 需要注意的是要进行调试服务器端的程序时,先设置断点后,在delphi中直接运行服务器上的程序,然后用客户端调用时就可以进行断点调试了。 WebAppDebugger Setup -------------------- First run the Server to register it Goto Windows Explorer and run <DelphiPath>\Demos\WebServices\EchoService\server\EchoServer_WAD.exe Close the app Start the WebAppDebugger From the DelphiIDE: Tools| WebAppDebugger Press Start From a WebBrowser goto http://localhost:1024 select EchoService_WAD.test_app and press go Expect: Default webPage Click on the IEchoService wsdl link (if in IE) you should now see the WSDL 我在实际开发和实施中不断出现问题,后面会陆续把相关的资料发布上来,以供后来参考。 |