一、ASP技术 ASP(Active Server Pages动态网页)是微软公司推出的一种用以取代CGI(Common Gateway Interface通用网关接口)的技术。目前,Internet上的许多基于Windows平台的Web站点已开始应用ASP来替换CGI。 简单地讲,ASP是一个位于服务器端的脚本运行环境,通过这种环境,用户可以创建和运行动态的交互式Web服务器应用程序,如交互式动态网页,包括使用HTML表单收集和处理信息,上传与下载等等。通常情况下,用户通过浏览器看到的网页大多是静态的,目前Internet 上的许多站点,仍然提供"静态"(static)的主页内容。 所谓"静态",指的就是站点的主页内容是"固定不变"的。 当浏览器通过Internet 的HTTP (Hypertext Transport Protocol)协议,向站点服务器(Web Server)要求提供主页的内容时,站点服务器收到要求后,就传送原已设计好的静态的HTML 的文件数据给浏览器。 一个"静态"的站点,若要更新主页的内容,必须手动的来更新其HTML的文件数据。而随着Web应用的发展,用户希望能够看到根据要求而动态生成的主页,例如响应用户查询数据库的要求、生成报表等。当在浏览器上填好表单(form)的输入数据,以提供HTTP要求时,可以在站点服务器中执行的应用程序,而不只是一个HTML 文件。站点服务器收到要求执行的应用程序,分析表单(form)的输入数据,将执行的结果以HTML的格式传送给浏览器。 根据用户请求生成动态主页的传统方法有CGI、ISAPI等。CGI是根据浏览器端的http请求激活响应进程,每一个请求对应一个进程。当同时有很多请求时,程序挤占系统资源,造成效率低下;ISAPI针对这一缺点进行改进,利用dll(动态链接库)技术,以线程代替进程,提高了性能和速度,但要考虑线程的同步问题,而且开发步骤烦琐。这两种技术和另一普遍使用的开发动态网页的技术Java都还存在着另外一个问题,那就是开发困难,程序的开发和HTML写作是两个完全不同的过程,需要专门的程序员开发。而较简单的开发技术如JavaScript和IDC(Internet Database Connector)等功能有限,不敷使用。 ASP使用的ActiveX技术基于开放设计环境,用户可以自己定义和制作组件加入其中,使自己的动态网页几乎具有无限的扩充能力,这是传统的CGI等程序所远远不及的地方。ASP与常见的在Client端实现动态主页的技术如Java applet、ActiveX Control、VBScript、JavaScript等不同,ASP中的命令和Script语句都是由服务器来解释执行的,执行结果产生动态生成的Web页面并送到浏览器;而Client端技术的Script命令则是由浏览器来解释执行。由于ASP是在服务器端解释执行,开发者可以不必考虑浏览器是否支持ASP;同时由于它在服务器端执行,开发者也不必担心别人下载程序从而窃取编程逻辑。 ASP通过后缀名为.asp的ASP文件来实现,一个.asp文件相当于一个可执行文件,因此必须放在Web服务器上有可执行权限的目录下。当用户从浏览器输入了.asp文件的地址后,浏览器就将这个URL请求发给Web Server,如果Web Server上装了ASP,就调用ASP。ASP读出相应.asp文件,解释并执行命令,动态生成一个HTML页面回传Web Server,然后Web Server再把结果发送给浏览器。ASP文件的制作和HTML类似,且和HTML开发集成,可以在同一个过程完成,利用ASP将可以执行的脚本嵌入到HTML文件中(将HTML文件的后缀名改为.asp),这使得HTML文件的编写与脚本的开发融合在一起。通过ASP内置的对象、服务器组件(Server Component)可以完成非常复杂的任务,而且用户还可以自己开发或利用别人开发的服务器组件完成专门的任务。ASP比较网关及服务器扩展模式有着以下优点:
(1)完全与HTML文件融合在一起;
(2)容易创建,不需要其它编译、链接程序;
(3)面向对象的并通过ActiveX Server对象可扩展。
二、电子商务数据访问方式
电子商务是指通过电子方式,并在网络基础上实现物资、人员过程的协调,以便商业交换的活动。在电子商务系统中,Web提供了与客户进行通信联络的有效手段,利用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不仅可以读取Access和 SQL Server的数据库,而且还可以读取其他ODBC(Open Database Connect 开放式数据库互联)兼容的数据库。在ASP中访问数据库是通过ADO(ActiveX Database Object活动数据对象)及事务处理语句来实现的。ADO是一种操作Microsoft所支持的数据库的方法,是一项容易使用并且可扩展的将数据库访问添加到 Web 页的技术。ADO对象的使用与DAO(数据访问对象)、RDO(远程数据对象)的方式相似。在ASP中,ADO可以看作是一个服务器组件,更简单点说,是一系列的对象,应用这些功能强大的对象,即可轻松完成对数据库复杂的操作。
三、ASP在电子商务中的应用
在电子商务中,对用户而言,进行网上信息查询的目的是寻找自己需要的产品或服务,而对于商品或服务提供者来说,其目的则是向用户推销自己的产品或服务。因此,让用户通过浏览器查询服务器的后端数据库是许多Web服务提供者必需有的服务,ASP通过内置的ADODB组件来实现这一功能。可以使用ADO去编写紧凑简明的脚本以便连接到ODBC 兼容的数据库和 OLE DB 兼容的数据源。具体的操作步骤可以归纳为以下几步:
① 创建数据库源名(DSN) ADODB通过ODBC工作,因此要在ODBC中设置DSN(数据源名)。打开Windows的"控制面板",双击"ODBC"的图标,然后选择"文件 DSN "的属性页,单击<添加>,选择数据库驱动程序,然后单击"下一步",按照屏幕的指示键入数据源文件的名称,然后单击"下一步",再单击"完成"创建数据源。
②创建数据库链接 链接用以保持一些关于正在访问的数据的动态信息,以及链接者信息。利用ADODB的成员函数Open和先前设定的DSN与数据库连接,其语法如下: SetConnect=Server.CreateObject("ADODB.Connection") '创建了链接对象Connect。 Connect.Open("DSN=dsnname;UID=userID;PWD=password") '打开链接。dsnname为数据源名;userID为用户名;password为用户口令。
③创建数据对象 ADO中的数据对象通常保存的是查询结果。RecordSet 是ADO中最复杂的对象,有许多属性和方法,灵活运用,可以达到许多好的效果。其创建方法如下: Set RecordSet =Connect.Execute(sqtStr) '创建并打开了对象RecordSet ,sqtStr是一个串,代表一条标准的SQL语句。例如: sqlStr="SELECT*FROM b1" Set RecordSet =Connect.Execute(sqlStr) 这条语句执行后,对象RecordSet中就保存了b1中的所有记录。
④操作数据库 可利用Execute方便地执行数据的插入、修改、删除等操作。如执行插入操作: sqlStr="Insert Into b1Values(1,2)" Connect.Execute(sqlStr)
⑤关闭数据对象和链接 在使用了ADO对象之后,一定要关闭数据对象和链接。在ASP中通过调用方法close实现关闭。 关闭创建的数据对象:Record Set .close Set Record Set=Nothing 关闭创建的链接对象:Connect. close Set Connect=Nothing 完整的程序片段: <% SetConnect=Server.CreateObject("ADODB.Connection")'产生组件实例 Connect.Open("DSN=dsnname;UID=userID;PWD=password") '连接数据库 SQL=select*fromtablename SetRS=Connect.Execute(SQL) '执行查询 %> <%DoWhile Not RS.EOF%>'显示结果 <%=RS(fieldname)%> <% Rs.MoveNext Loop %> 上述是用ASP访问数据库的全过程,由于应用面向对象思想,所有操作都比较简单,用户需要注意的仅是对数据结构的了解、当前所操作的对象及对象的属性等等,只要对这些有了清晰的认识,再加上ASP强大功能,在网络上使用数据库,实现用户与页面间交换信息,就再也不是什么难事了。
结束语:随着Web技术的发展,基于Intranet的电子商务系统无疑较传统商务有着更大的应用前景,如何提务系高这种电子商统中的数据访问效率及事务处理能力仍是当前人们所关注的问题。