用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技术正是适应了这一要求,同时它也代表了这一领域的发展趋
势。
参考文献
1. brian farrar 《special editor using activex》que cop. 1997,7
2.microsoft active server pages release note microsoft .. 1997,1
