DELPHI 6 抢先研究 -- Web 应用开发及调试
在 Delphi 5 中,强大的 Web 开发能力是一大亮点,特别是与 MIDAS 结合的 InternetExpress 技术。
在 Delphi 6 中,这一能力又被大大地加强了,除了从 InternetExpress 发展来的 WebSnap 技术外,
Delphi 6 还提供了以 SOAP/WebService 为核心的 BizSnap 技术,支持开发 DLL 方式的 Apache
Share Module , 提供了一个具有调试功能的轻量级 Web Server -- Web App Debugger ,支持服务端脚本,
集成 HTML 编辑并可以调用外部 HTML 开发工具,如 DreamWeaver 之类(关于这个,将在介绍 WebSnap 时予以说明)。
不论是标准的 Web Server Application , 还是新的 WebSnap
Application 和 SOAP Server Application 都可以使用 Web App Debugger 来进行开发调试。
Web App Debugger 提供了对请求的响应时间的统计,HTTP 请求/响应的日志,并可以通过双击日志列表中的记录来查看详细的请求/响应内容。
本文主要以一个简单的 Web Server Application 为例来介绍一下 Web App Debugger :
1.New|Web Server Application (如上图),选 Web App Debugger Executable ,输入一个 CoClassName 如: WADHello (如下图);
<img width="317" height="255" alt="" src="/images/illustrations/d6_webdevide2.jpg"/>
<p> 2.SaveAll, Unit2 命名为: MainWM , Unit1 并没有实际用途,只是必须的,所以就不改名了,就叫 Unit1
, Project1 则改为 TestCGI ;</p><p>
3.在 Object TreeView 窗口的 WebModule2\Actions 下增加一项: WebActionItem1
,设置其 Default := true ; <br/></p><p>
4.响应 WebActionItem1 的 OnAction 事件,在其中写如下代码: </p>
<pre> Response.Content := 'Hello World!';<br/></pre>
<p>5.编译运行,产生一个空白的窗口,点 Delphi 6 的 Tools|Web App Debugger ,点 Start 按钮,
再点那个变成深蓝色并带下划线的链接: http://localhost:1024/ServerInfo.ServerInfo (如下图),即可打开一个浏览器页面,
其中有一个列表,可以在其中找到: TestCGI.WADHello 一项,选中此项并点 Go 按钮,即可显示一个 'Hello
World!' 页面。 </p>
<img width="473" height="379" alt="" src="/images/illustrations/d6_webdevide3.jpg"/>
<p>如果要调试此程序,只需简单地在 Delphi 6 的代码窗口里放上断点, 再刷新浏览器即可在断点处停下来,然后可以进行单步调试,基本上与一般应用程序一样,这比以前调试必须先写成
ISAPI 再把 IIS/PWS 调入调试要好得多, 如果你曾经做过就会知道,那样做既麻烦又不稳定。而 Web App Debugger
则大大简化了 Web 应用程序的调试功能。 <br/></p><p>如果你熟悉 COM 编程,一定可以看出 Web App Debugger 是用
COM 的方法来实现的, 要调试的 Web Server Application 是作为一个 COM Server 在运行,这也是为什么一定要那个
Unit1 的原因, COM Server 必须要有一个 Form ,即使是一个空的 Form 。 Web App Debugger
在收到向 Web Server Application 发出的 HTTP 请求时, 是将其转为一个 COM 接口调用,去调用相应的
Web Server Application ,再将其返回内容发回浏览器。 <br/></p><p>调试完成后,应该首先将这个 COM Server 反注册掉,不然写的程序一多,
Web App Debugger 的默认页面里那个列表会越来越大,找起来也不方便。反注册 Web App Debugger Executable
也很简单, 与一般的 COM Server 一样,只要在 Delphi 6 的 Run|Parameters 里设置 Parameters
为 -unregserver ,再运行一次即可, 这时窗口将闪现一下就退出。注意,在此操作前最好停止 Web App Debugger
! <br/></p><p>然后要将此 WAD Executable 改为你要的 CGI/ISAPI 或新的
Apache Share Module , 方法是新建一个 Web Server Application ,选择你要的类型,然后保存为你要的工程名,
再把 WAD Executable 里除了 Unit1 以外的其它单元加入新的工程,重新编译即可产生你要的最终 Web Server
Application 。 <br/></p><p>WAD 的出现,大大简化了 Web 应用程序的调试工作,大幅度提高 Web
应用的开发效率。 不过她还是有一点不足:如果你的 Web Server Application 有 Bug ,如没有响应,会造成
Web App Debugger 很长时间没有响应 (不能停止,也不能退出),这大概是因为用 COM 的方法造成的,只有小心一点了,尽可能避免这种情况发生,如果出现这种情况,
只能将 Web App Debugger 进程强行终止掉才能解决。<br/></p><p style="text-align: right;">猛禽 Jul.29, Aug.17-01 <br/></p></div>