用ASP开发基于Windows NT Server和IIS的Web应用
国防科工委指挥技术学院 韩正清 钱明
摘要: 本文比较了CGI ISAPI与ASP在结构和性能方面的差异,并介绍了用ASP开发
WEB 应用的一般过程。
关键词: ASP CGI ISAPI IIS
一、前言
Internet/Intranet和WEB技术的出现和发展,为信息的交换和共享提供了快捷有效
的方法,但Internet/Intranet上提供的信息多以静态网页为主,对于一个WEB应用
开发者来说,最关心的莫过于如何增强网页的动态性和交互性了。Active Server
Pages是微软开发的基于Windows NT Server和IIS的服务器端脚本运行环境,脚本
在Web服务器中运行,而浏览器并不处理脚本,它所面对的仅仅是一个完全符合HTML
格式的网页,这为更多的、不同类型的浏览器访问WEB服务器提供可能。
二、ASP的体系结构
通用网关接口CGI和Microsoft Information Server应用程序接口ISAPI是开发交互
式的WEB应用常用的两种接口方式,CGI是基于WEB服务器与数据库之间的联系的服务
器端进程,它可以完成对数据库的底层操作,客户通过GET/POST向WEB服务器提出服
务请求,服务器端的守护进程通过标准输入Stdin和环境变量将参数传送给指定的
CGI程序,执行结果将以HTML格式返回给客户。对于大多数Internet应用程序,CGI
为开发应用提供了一个很好的平台,但CGI在性能方面却有两个我们不可回避的缺
陷:
(1)一个CGI程序不能为多个客户共享,对于新的请求必须启动新的 进程,见
图.1 随着客户请求的增加,并行的进程也将越多,这对系统资源来说是一种极大的
浪费,同时也加重了服务器的负担,降低了性能。
(2 )不提供永久性的上下文信息。比如:用户需要查询一个大型数据库, 结果可
能是上千行的数据,如果用户想每次只显示10行的数据,但CGI在输出10行数据后就
停止执行,要再显示下10行的数据必须再执行一次CGI程序,这种方式显然效率不
高。
ISAPI有比CGI更好的性能,因为ISAPI应用以动态链接库形式存在,在其启动时被加
入内存、并且和WEB服务器进程处于同一个系统空间,见图.2,占用系统资源较少。
效率虽然提高了,但也带来了更大的风险,ISAPI进程和服务器进程处于同一系统进
程空间,因此,一个违规操作就有可能导致WEB服务器的崩溃。另外无论是CGI程序
还是ISAPI程序基本上是独立于HTML之外的,完全用另一种语言开发,工作量大,与
HTML结合得不够紧密。
ASP是基于Microsoft Windows NT 4.0和Microsoft Internet Information Server
3.0 (IIS3.0)的开放式脚本开发环境,它很好地把HTML和脚本开发融合在一起,
提高了编程的灵活性,降低了开发难度。ASP中的脚本在WEB服务器端运行,而不是
传统的在客户浏览器中运行,这一措施使客户的浏览器无须担心服务器端的网页使
用何种脚本,ASP都会生成一个符合HTML标准的网页送回客户端,ASP在性能方面的
优势体现在以下几点:
(1) 完全与HTML融合在一起;
(2) 创建简单,不需要编译和链接,脚本可以在ASP环境下直接运行;
(3) 面向对象,功能可以由Activex服务器构件扩展;
(4) 由于脚本在服务器端执行,因此它几乎可以支持任何一种浏览器。
ASP在性能和效率方面优于CGI、ISAPI,这主要源于它先进的体系结构,见图.3 ASP
直接建立于WEB服务器中,并且是作为WEB服务器的一个服务运行,支持多用户,多
线程。HTTP协议是一个无状态的协议,WEB服务器不能记忆客户浏览器过去曾发送过
的请求信息,客户的每次请求都是独立的,彼此之间没有联系,因而服务器的许多
时间都花费在处理请求上,服务效率受到了影响。ASP拥有强有力的会话管理机制,
它可以实现各请求之间的信息共享,提高了效率。ASP在安全性方面也作了细心的考
虑,包括:设定虚拟目录访问权限、用户身份检测、隐含脚本等措施。ASP支持多种
脚本,比较常用的有VbScript和JScript。
三、开发ASP应用
(1)系统要求:
在安装ASP之前,系统必须符合以下三个要求之一:
· Windows NT Server 4.0 +Service Pack 3 +IIS 3.0
· Windows NT WorkStation 4.0 +Peer WEB Server 3.0
· Windows 95 Personal WEB Server 1.0 a
(2)ASP应用程序的组成
一个ASP文件以 .ASP作为其扩展名,代替先前的.HTML或.HTM,.ASP文件中包括:文
本、HTML标签和脚本命令。但一个ASP应用程序不仅仅只有一个.ASP文件,它还包括
Global.asa文件、.inc文件以及其他一些资源文件。VbScript是ASP缺省的脚本语
言,VbScript中除了消息框(MsgBox)和输入框(InputBox)不可在ASP中使用外其
他脚本都可以在ASP环境下直接运行,另外,ASP还提供了五个内建对象,为客户访
问各种资源提供了极大的方便。这五个对象是:
ASP功能的扩展主要依赖于构件(Component)的支持,构件可以用VB,JAVA,和MFC
等工具开发。ASP已经为客户提供了五个构件,通过建立这些构件的实例,用户可利
用构件的特殊功能。这五个构件是:
· 数据库访问构件(Data Access Component)
· 广告翻转构件(Ad Rotator Component)
· 内容连接构件(Content Linking Component)
· 文件访问构件(File Access Component)
· 浏览器性能构件(Brower CapabilityComponent)
(3)应用实例
下面以电信局为客户提供电话纪录查询为例,介绍ASP访问ODBC数据库的一个WEB应
用。完成这一WEB应用只要包括以下两个部分:(1)建立WEB服务器端的.ASP脚本,
实现客户查询网页。(2)建立WEB服务器端的.ASP脚本,返回查询结果。数据库采
用Access数据库 ,DSN=phone,Table=phone_record,phone_record表中包括七项内
容:主叫号码、呼叫时间、被叫号码、被叫地点、通话时长、费率和话费。
查询网页源代码:
<HTML>
<HEAD><TITLE>用户信息查询</TITLE></HEAD>
<BODY BGCOLOR=#FFFFFF>
<CENTER><H3>计费系统用户信息查询</H3></CENTER>
<HR>
<FORM METHOD=POST ACTION="query.ASP">
<P>请选择查询的项目:
<SELECT NAME="section">
<OPTION SELECTED>主叫号码
<OPTION>被叫号码
<OPTION>被叫地点
</SELECT>
<P>等于
<INPUT TYPE=TEXT NAME=content><BR>
<P><INPUT TYPE=SUBMIT VALUE="Submit Form "><INPUT TYPE=RESET VALUE="Reset Form">
</FORM>
<BR>
</BODY>
</HTML>
查询结果网页源代码:
<HTML>
<HEAD><TITLE>用户信息查询</TITLE></HEAD>
<BODY BGCOLOR=#FFFFFF>
<CENTER><HI>用户信息查询</H1><CENTER><BR>
<%section1=request.form("section") '取查询参数
content1=request.form("content")
%>
<%set Conn=Server.CreateObject("ADODB.Connection") '建立数据库访问对象
Conn.Open "phone" '打开数据库
SQl="select * from phone_record where " & section1 &"='"& content1 &"'"
Set RS=Conn.Execute(SQL) '执行查询
%>
<p>查询时间:<%=now%>
<TABLE BORDER=2>
<FONT COLOR=#213554><TR>
<%FOR i=0 TO RS.Fields.Count-1%>
<TD><B><%=RS(i).Name%></B></TD> '填写表头
<%NEXT%>
</TR></FONT>
<%Do While Not Rs.Eof%>
<TR>
<%FOR i=0 TO RS.Fields.Count-1%>
<TD VALIGN=TOP><%=RS(i)%></TD> '填写数据
<%NEXT%>
</TR>
<%
RS.MoveNext
Loop
RS.Close
Conn.Close
%>
</TABLE>
<BR>
<BR>
</TR>
</BODY>
</HTML>
四、 结束语
WEB技术的出现和发展给当今世界信息产业的发展注入了强大的活力,但目前,WEB
的发展还受到各种主客观因素的影响,使WEB的发展并不象我们想象得那么顺利。
如:网络通讯效率不高,网络安全性问题,网上信息的泛滥等。在客观物理条件有
限的情况下,要提高信息在WEB中传递的效率,就得从提高WEB服务器的效率上想办
法。本文介绍的ASP技术正是适应了这一要求,同时它也代表了这一领域的发展趋
势。