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&nbsp; <br/></p></div>