[返回]
中国计算机报2000年第59期
Web与数据库的接口技术是各网站提供Internet信息服务的关键技术。除了常使用的CGI方式外,微软先后推出了IDC、ISAPI、ASP等方式,此外,Java-Applet也是Web与数据库接口的常用方法。
概 述
CGI(Common Gateway Interface:公共网关接口)定义了一种有关环境变量的组合、标准输入流和标准输出流的接口规范。当浏览器向Web服务器发出请求时,服务器通过执行一个外部程序来处理这一应用要求。
IDC(Internet Database Connector:Internet数据库连接器)使用IDC文件与HTX文件,IDC文件负责查询数据库,HTX文件负责把查询结果格式化之后,再输出到客户端。
ISAPI(Internet Server Application Programming Interface:Internet服务器应用程序接口)由两类组件组成:提供纵向功能层的ISAPI应用程序与提供横向功能层的ISAPI过滤器。当接收到一个客户端的请求时,服务器执行一个对应的ISAPI应用程序。ISAPI过滤器则可以实现所有请求所共有的某些功能要求,当过滤器中定义的事件在进程中发生时,服务器调用过滤器中相应的函数进行处理。
ASP(Active Server Pages:动态服务器页)是服务器端的脚本文件,可以是HTML,也可以是VBScript或JavaScript,ASP的目的是提供可编程HTML页来响应Web请求。
Java-Applet(Java小应用程序)与其它方式不同,当浏览器访问页面时,客户机要从Internet上下载附在网页上的Applet,其中包括能访问数据库的Applet。
为了进行这五种接口方式的性能与瓶颈分析,本文作者进行了大量的对比性测试,测试方法如下:
五种接口方式的评测都采用Windows NT操作系统平台及IIS的Web服务器。数据库采用SQL
Sever 7.0与Oracle 8.0(以下分别简称“数据库S”和“数据库O”)。两种数据库中建有相同的数据表,每张表含有14个字段,并建立索引,且都有48218条相同的记录。数据来源于“上海证券交易所”的股票数据。测试时系统只运行所需测试的Web请求,无其它负荷。计算机配置为PentiumⅡ400、64M
SDRAM内存以及33.6K/ISDN(64K)Modem。测试分为单机测试、远程测试(通过普通电话网与ISDN进行)与局域网测试三个步骤,其中局域网测试是用来研究并发访问的。由于在真正的Internet上,网络环境复杂,干扰因素多,故采用10Mbps的局域网环境替代。
性 能 分 析
接口速度
在50个并发访问、数据库精确查询13条记录的情况下,CPU的总处理时间如图1所示。

图1 速度对比
可见,这五种接口方式由快到慢依次为Java-Applet、ISAPI、ASP、IDC、CGI。在CGI方式下,对于每一个用户请求,CGI都要求服务器执行一个外部程序,这涉及到在操作系统中创建一个新进程。而ISAPI不同,它对于每一个请求创建的是线程,而不是进程,故系统开销小、速度快。其次,由于CGI方式在两个调用之间进程不能保持,所以CGI在每次调用时,数据库连接资源必须重建。而ISAPI通过扩展与过滤器的结合,可以实现数据库资源的驻留,所以ISAPI的速度要比CGI快许多。IDC、ASP均是线程级的开销,其速度都比CGI快,但IDC、ASP无法实现数据库资源的驻留,所以速度不如ISAPI。Java-Applet的速度是最快的(这里Java-Applet的速度是指Java-Applet下载到客户端后,与数据库连接的速度),这是因为它不用在服务器端运行程序,只需数据库系统提供查询结果即可。以上评价是针对多用户,且数据库是精确查询的情况,对于用户较少和模糊查询的情况,经测试,各接口方式的接口速度差别不大。
系统开销
是在50个并发访问、数据库精确查询13条记录,各接口的系统资源开销测试。CPU执行任务期间的平均负荷、内存的最高额外开销及CPU工作量分别如表1、表2和表3所示。其中,CPU执行任务期间的平均负荷的单位为CPU满负荷的百分比,内存的最高额外开销是系统处理50个并发访问期间内存使用量的增长额,单位为M(兆),CPU的总工作量是CPU平均负荷乘以完成任务的时间所得,它反映了为完成任务所消耗的CPU资源。
|
方式 |
cgi |
idc |
asp |
isapi |
java-applet |
|
数据库s |
46.23 |
46.68 |
97.52 |
75.85 |
86.34 |
|
数据库o |
34.29 |
29.64 |
42.20 |
30.23 |
9.32 |
|
方式 |
cgi |
idc |
asp |
isapi |
java-applet |
|
数据库s |
8.60 |
4.17 |
5.66 |
2.67 |
0.17 |
|
数据库o |
63.35 |
32.18 |
17.57 |
6.58 |
0.93 |
|
方式 |
cgi |
idc |
asp |
isapi |
java-applet |
|
数据库s |
6.66 |
1.82 |
2.58 |
0.91 |
0.57 |
|
数据库o |
100.13 |
10.82 |
6.54 |
1.87 |
0.39 |

|
页面名称 |
等待延时 |
传输的字节数 |
文件字节数 |
|
sample13.htm |
1.2 |
2669 |
19381 |
|
sample13e.htm |
16 |
45425 |
61800 |
|
sample86.htm |
4.6 |
12410 |
110958 |
|
sample86e.htm |
25.8 |
77363 |
153523 |
|
sample700e.htm |
35.8 |
349873 |
349569 |
|
samplegra.htm |
96.8 |
133100 |
921239 |
|
方 式 |
25个并发访问 |
50个并发访问 |
|
|
cgi |
数据库s |
9.8 |
14.4 |
|
数据库o |
157 |
292 |
|
|
idc |
数据库s |
2.35 |
3.9 |
|
数据库o |
18.5 |
36.5 |
|
|
asp |
数据库s |
1.70 |
2.65 |
|
数据库o |
11.0 |
15.5 |
|
|
isapi |
数据库s |
0.85 |
1.2 |
|
数据库o |
2.8 |
6.2 |
|
|
java-applet |
数据库s |
0.58 |
0.66 |
|
数据库o |
1.7 |
4.2 |
|
|
|
适用场合 |
|
cgi |
unix环境下,用户并发访问数量较少。 |
|
idc |
windows nt环境下,用户并发访问数量不多,且web应用程序功能简单。 |
|
isapi |
windows nt环境下,可满足用户并发访问数量较多、应用程序功能复杂、灵活性与安全性要求较高的情形。 |
|
asp |
windows nt环境下,用户并发访问数量不太多,能满足一些复杂的功能。适用于大多数中小型网站。 |
|
java-applet |
宽带环境下,用户并发访问数量大,web应用程序功能要求较高。 |
