摘要:本文通过一个实例详细介绍了Web应用程序的原理,利用C++Builder开发Web应用程序的过程。
Web应用程序是运行在服务器端的可执行程序或动态连接库。它们可以响应用户要求,动态产生超文本页面,并将信息提供给客户浏览器。
一般来说,Web应用程序可分为五种类型,分别是ISAPI、NSAPI、CGI、WinCGI、Activex。这五种不同的方式都有各自的限制,也就是说,这些方式将会限制Web服务器和前端浏览器的类型。如下表所示:
| Web应用程序 | 后端操作系统 | Web服务器 | 前端浏览器 |
| ISAPI | Window NT | MS-IIS | 无限制 |
| NSAPI | 无限制 | Nescape Server | 无限制 |
| CGI | 无限制 | 无限制 | 无限制 |
| WinCGI | Window3.1 | 16位Web服务器 | 无限制 |
| Activex | Window NT | MS-IIS | MS-IE |
由于上述Web应有程序的标准定义并不相同,程序的写法各异,这样就给开发者造成不小的困挠,因为你不太可能了解每一种标准的写法。而C++Builder可以很好地解决这个问题。C++Builder将Web应有程序的做法封装成组件,让开发者面对的是一致的开发界面,一致的开发原理,唯一不同的地方在于开始产生程序时所选择的程序结构,至于程序的编写细节和方式都一模一样。
创建一个简单的Web应用程序
首先,点击C++Builder IDE 菜单File | New option 选中 Web Server Application 图标 (见图 1). 
图1
接下来,我们有如图2所示三种选择:
图2
CGI (Common Gateway Interface)运行时需要一个独立的进程,而ISAPI/NSAPI动态连接库运行时则映射到Web服务器进程中,比CGI需要较少的资源。ISAPI/NSAPI动态连接库的这个特点也造成了调试时的不方便,因此较好的办法是先创建一个CGI程序,调试它,然后再把它转化成ISAPI/NSAPI动态连接库。所以在这里我们选择"CGI Stand-alone executable"。
这样,我们就得到了一个TWebModule 对象, 如图3: 
图3 空白的Web模块
我们下面讨论一下Web应用程序是如何工作的。Web应用程序实际上是Web服务器在功能上的扩展,就好像Windows应用程序是Windows在功能上的扩展一样。当Web应用程序从Web服务器检索到一个HTTP请求消息时,就对HTTP请求消息进行分析,生成HTML页面传递给Web服务器,再由Web服务器传递给客户。
