摘要本文从Internet/Intranet及MIS系统的发展出发,在比较当前流行的数据存取技基础上,阐述了ASP的作用与优点及其在MIS中的应用。
关键词 ASP MIS Internet/Intranet CGI Web
一、MIS概述
管理信息系统(MIS)是集成了计算机网络技术、通信技术、信息处理技术,对信进行收集、传递、存储及加工处理,用于辅助决策进行事务管理的一种人机交互的智能化计算机系统。MIS的发展与计算机网络技术的发展是紧密相关的,随着Internet/Intranet技术的广泛应用,MIS的体系结构也发生很大的变化,从以往基于C/S结构的数据访问及安全体系发展到当前的基于B/S结构体系。
计算机网络技术的发展大体上经历了三个阶段:一是以Mainframe为中心的集中处理式网络,即主机棗终端模式;二是以Client/Server模式为中心的分布式计算处理网络系统,即客户/服务器模式;三是目前正兴起的Intranet模式,即Browser/Server模式,它是以基于WEB技术为特征的。现代管理信息系统即是建立在Intranet的基础之上。
二、Internet/Intranet
Internet起源于美国国防部的ARPANET网。目前Internet已成为一个巨大信息资源,1990年,我国正式向Internet管理中心注册了区域名CN,并于1994年开通了Internet的全功能服务。
Intranet并不是一种产品,而是一种思想和概念,它利用业以成熟的Internet技术,以TCP/IP协议为基础,以Web为核心应用,构成统一的信息交换平台。用户通过WWW工具能方便地浏览企业内部和Internet上的资源,并且可将电子邮件、电子新闻、电子表格和各种数据库应用的系统继承到浏览器界面中,同时又能较好地与传统地C/S系统相融合,使得Intranet大有取代传统的企业内部管理系统的趋势。图1给出了Intranet的基本框架结构:
图1 Intranet的基本结构
在Intranet中,最底层为网络硬件,中间层为网络操作系统,最上层为MIS应用,包括各种应用软件(如基于C/S的应用程序)。在这种新的MIS应用中,其数据访问较传统MIS的数据访问方式有了巨大的变化。
三、现代管理信息系统数据访问方式
在现代管理信息系统中,利用Web技术,实现Web服务器与数据库系统的连接,完成对数据的处理与查询,用户可以通过操作简单易学的浏览器来查询处理所需要的各种数据。
实现Web服务器与数据库的连接一般有两种方法:一种是利用中间件技术在两者之间建立连接和通信,如CGI(通用网关接口)和API(应用程序编程接口)。Web服务器通过调用CGI程序实现与Web浏览器的交互,即CGI程序接受浏览器发给Web服务器的信息,进行处理后,将相应结果再送回给Web服务器,通过Web服务器将信息传送给浏览器。但CGI程序在响应速度和资源利用等方面有较大局限性,客户端每请求一个CGI程序,服务器端便打开一个进程,当请求的数量较大时容易引起瓶颈现象,开发人员常利用API编程来扩展服务器功能,API程序占系统资源少,运行效率较高,但它的编程较CGI程序更为复杂;另一种是由浏览器中的Java小应用程序(Java Applet)通过浏览器访问Web服务器上的数据库,利用了JDBC(Java Database Connectivity)技术,它通过JDBC提供的API实现对Web Server的访问。由于Java Applet本身的局限性,目前大多数的应用是基于中间件技术的。ASP也是属于中间件的一种模式,但在Windows平台上它比较网关及服务器扩展模式有着较大的优点。
网关的最大特点是它的平台无关性,但网关程序通常较难编写和改变。网关程序通常是一个独立的程序,并不和HTML文件融合在一起,它需要用如C、C++、VB、Perl等语言来编写独立的应用程序,而ASP应用改变了这一点。利用ASP,将可以执行的脚本嵌入到HTML文件中(将HTML文件的后缀名改为.asp),这使得HTML文件的编写与脚本的开发融合在一起。ASP比较网关及服务器扩展模式有着以下优点:(1)完全与HTML文件融合在一起;(2)容易创建,不需要其它编译、链接程序;(3)面向对象的并通过ActiveX Server对象可扩展。
ASP是Microsoft Active Server Pages的缩写,标志了Web技术的一个显著的发展,它是一个服务器端脚本环境(Web Server Scripting Environment),可以用来创建、运行交互式高性能的Web Server应用程序。当脚本运行在服务器端而不是客户端时,Web Server处理所有的工作包括生成HTML页并传送给客户端的浏览器。因此,人们不用担心浏览器是否能接受Web页,Web Server已经做了所有的事情,浏览器所接受的只是通常的HTML页。ASP的处理模式为图2。客户端的Browser请求一个服务器端的.asp文件时(HTTP:Request),Web Server调用ASP,ASP处理客户所请求的.asp文件中的命令,然后将处理结果返回给客户(HTTP:Response)。
图2 ASP的处理模式
四、ASP在MIS中的应用
1.ASP的应用平台:
ASP做为一个中间件,它运行在Web Server端,它需要以下环境之一:
(1) Microsoft Windows NT 4.0 (5.0)、Microsoft Internet Information Server 3.0;
(2) Microsoft Windows NT Workstation、Microsoft Peer Web Services 3.0;
(3) Microsoft Windows 95 (98)、 Microsoft Web Personal Web Server。
2.ASP的编程环境:
利用ASP编写脚本可以用任何一种脚本语言,只要提供相应的脚本语言引擎,ASP本身提供了两种脚本引擎: VBScript与JavaScript,ASP是面向对象的,内嵌在ASP中的对象有五种:Application对象、Request对象、Response对象、Server对象、Session对象;ASP的命令语句是写在一对符号“<%”与“%>”中的,在Microsoft Visual InterDev工具中,在这一对符号中语句的颜色为黄色,以区别其他语句。
除了应用ASP缺省的对象外,还可以利用VB、VC++等工具创建自己的应用对象在 .asp文件中使用MyObject=Server.CreateObject(ObjectName)创建自己的对象实例即可应用MyObject的属性与方法。
3.ASP的应用实例:
在管理信息系统中,数据的存取及事务处理是主体,在当前基于Intranet与Web技术的现代管理信息系统中,数据的存取及事务处理的效率更为重要。
利用ASP进行事务处理是通过ADO(ActiveX Database Object)对象及事务处理语句来实现的,在ASP中,ADO对象包含在Database组件中。ADO对象的使用与DAO、RDO的方式相似。
作者利用ASP进行了网上交易系统的设计,由于篇幅关系,下面给出在这项应用中利用ASP进行的注册新用户部分的简单设计作为参考,本例使用了以下环境:
Microsoft Windows NT Server 4.0(with NT Service Pack 3)
Microsoft Internet Information Server 3.0、Active Server Pages(ASP)
Microsoft SQL Server 6.5(with SQL Server Service Pack 3)
Microsoft Visual InterDev、Microsoft Internet Explorer 3.0
首先要在SQL Server上利用Transact梤SQL(事务SQL)语句建立数据库User与相关的表,这里我们只建表UsersInformation,表中的域为:Name,Address,Phone,UserID,其中 UserID设为自动增值并作为主键。
接下来在Visual InterDev中利用Web Project Wizard建立工程StockCharge.dsw。在工程中创建新文本文件Visitors.txt与ASP文件NewUser.asp;在缺省的Global.asa文件中加入以下代码,以建立数据库连接及会话(Session)信息:
<Script language=VBScript Runat=Server>
SUB Application_OnStart
VisitorCounterFilename=Server.MapPath("/www")+"\visitors.txt"
Set FileObject=Server.CreateObject("Scripting.FileSystemObject")
Set Out=FileObject.OpenTextFile(VisitorCountFilename,1,False,false)
Application("visitors")=Out.ReadLine
Application("VisitorCounterFilename")=VisitorCounterFilename
END SUB
SUB Application_OnEnd
Set FileObject=Server.CreateObject("Scripting.FileSystemObject")
Set Out=FileObject.CreateTextFile(Application("VisitorCounterFilename"),Treu,false)
Out.WriteLine(Application("visitors")) '用来存放访问Server的客户数目
END SUB
</Script>
||||||<Script language=VBScript Runat=Server>
SUB Session_OnStart
'==Visual InterDev Generated - DataConnection startspan== Project Data Connection
Session("ConnectionString") =
"DSN=missql; Driver= {Microsoft SQL Server};DriverId=25; ImplicitCommitSync=Yes; MaxBufferSize=1024;MaxScanRows=8;PageTimeout=5;SafeTransactions=1;Threads=3;UID=admin;
UserCommitSync=Yes;"
Session("ConnectionTimeout") = 15
Session("CommandTimeout") = 30
Session("RuntimeUserName") = "admin"
Session("RuntimePassword") = ""
'==Visual InterDev Generated - DataConnection ==
Application.lock
Application("visitors")=Application("visitors")+1
Visitors=Application("visitors")
Application.unlock
Session("VisitorID")=Visitors '当前的访问者ID值,可用来生成计数器
if Visitors MOD 10=0 then
Set FileObject=Server.CreateObject(Application("VisitorCounterFilename"))
Set Out=FileObject.CreateTextFile(Application("VisitorCounterFilename"))
Application.lock
Out.WriteLine(Visitors)
Application.unlock
end if
' 检查用户是否为新用户
CustomerID=Request.Cookies("CustomerID")
IF CustormerID="" Then '新用户
CustormerID=0
END IF
Session("CustomerID")=CustomerID
StartPage="\default.htm"
currentPage=Request.ServerVariables("SCRIPT_NAME")
'防止用户未经许可转跳其他页,发生此情况时,强制返回首页
IF strcomp(currentPage,startPage,1) then
Response.Redirect("/Stock" & startPage)
END IF
END SUB
SUB Session_OnEnd
END SUB
</Script>
(1)注册新用户(NewUser.asp文件内容)
<SCRIPTLANGUAGE=VBScript RUNAT=Server>
FUNCTION ChangeString (s)
iPos = InStr(s, "'")
While iPos > 0
s = Mid(s, 1, iPos) & "'" & Mid(s, iPos + 1)
iPos = InStr(iPos + 2, s, "'")
Wend
ChangeString=" '" & s & "'"
END FUNCTION
</SCRIPT>
<%
msg=""
Action = UCase(Request("Action"))
If Action= "CANCEL" Then Response.redirect "\default.htm"
If Action = "ENTER" Then
If Request("UserName") = "" or _
Request("Address") = "" or _
Request("Zipcode") = "" or _
Request("e_mail") = "" or_
msg="<B><I>请填写所有给出的列项。</I></B>"
End If
If msg = "" Then
sql = "insert into UsersInformation(UserName,,Address,Phone,e_mail) VALUES (" &_
sql = sql & ChangeString(Request("UserName"))
sql = sql & ChangeString(Request("Address"))
sql = sql & ChangeString(Request("Phone"))
sql = sql & ChangeString(Request("e_mail"))
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Session("ConnectionString")
Conn.Execute(sql)
sql = "select @@UserID" 'UserID为建立Table时,自动增加数值的列
Set rs=Conn.Open(sql)
CustomerID=rs(0)
Conn.Close
Session("CustomerID")=rs(0) '用来标识客户断与服务器端的会话(Session)
Response.Redirect "/Stock/StockCharge.asp" '当新用户确认后,Web Server将使用户进入交易页
End If
End If%>
‘以上部分为ASP的预处理命令语句,以下部分是作为Web页的显示内容,在<%与%>中部分仍为
‘ASP语句
<HTML>
<HEAD><TITLE>New User</TITLE></HEAD>
<TABLE WIDTH=600 BORDER=0>
<TR><TD>
<TD COLSPAN=5><TR>
<TD ROWSPAN=4 ALIGN=RIGHT VALIGN=TOP>
<TD VALIGN=TOP ALIGN=LEFT>
<FONT SIZE=2 >
<FORM ACTION="/Stock/NewUser.asp" METHOD=POST>
<%= msg %>
<TABLE CELLPADDING=5 COLSPAN=2>
<TR><FONT SIZE=2>
用 户 名: <INPUT TYPE="Text" NAME="UserName" VALUE="<%=Request("UserName")%>" SIZE=31 MAXLENGTH=35><P>
通讯地址: <INPUT TYPE="Text" NAME="BillingAddress" VALUE="<%=Request("Address")%>" SIZE=36 MAXLENGTH=36>
电 话:<BR> <INPUT TYPE="Text" NAME="PhoneNumber" VALUE="<%=Request("PhoneNumber")%>" Size=21><BR>
Email Address: <BR> <INPUT TYPE="Text" NAME="EmailAddress" VALUE="<%=Request("EmailAddress")%>" Size=35><P>
</FONT></TD></TR><TR>
<TD><INPUT TYPE=SUBMIT NAME="Action" VALUE="注册">
<INPUT TYPE=RESET NAME="Cancel" VALUE="取消"</TD></TR>
</TABLE></FORM></TR>
<%REM Column Span Value %>
<%HTML_CS = 3 %>
<%HTML_INDENT = FALSE %>
</TABLE></BODY></HTML>
(2)从上面的例子中我们已经看出,利用ASP访问数据的方法:
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Session("ConnectionString")
Sql="select * from TableName"
Set rs=Conn.Open(sql)
While not rs.eof
'数据集处理语句
rs.movenext
Wend
(其他如Insert , Update ,Delete语句不返回结果集合时,用Conn.Execute(Sql))
这与我们利用DAO或RDO设计时极为类似,所不同的是在这里利用了Global.asa文
件中的ASP会话对象(Session Object)并将命令语句与HTML语句融合在一起,因此在进行B/S结构的MIS设计时,如果用户对Visual Basic、Java或VBScript、JavaScript较为熟悉的话,就会发现利用ASP进行Web应用的编程是比较容易的而且效率较高。
五、总结
随着Web技术的发展,基于Intranet的管理信息系统无疑较传统MIS有着更大的应用前景,如何提高这种MIS系统中的数据访问效率及事务处理能力仍是当前人们所关注的问题。
目前,Internet上的许多基于Windows平台的Web站点已开始应用ASP来替换CGI,在Windows平台上,将以往的C/S结构的MIS转化为基于Web技术的B/S结构的MIS,利用ASP将是目前最为有效的方法。