下载 第1章ASP基础 Microsoft的动态服务器网页( Active Server Pages,ASP技术目前已发展到了30版。对很 多人来说,用ASP来创建 Windows服务器平台上的动态Web网页、整个站点和基于Web的应用 程序已经成为极其自然而然的方法。在浏览器地址栏中,文件扩展名asp同表示动态创建的网 页的文件扩展名pl或cegi一样,已被浏览者所接受。事实上,对于在微软的操作系统上工作的 Web程序员来说,ASP正在变成一种不再令人激动的技术,而仅是一种工作方式。 这种看法的改变体现了一种技术的逐步成熟。由于ASP的应用程序的数量日益增多, ASP的工具也在日益增加,同时有越来越多的第三方开发商开发出一系列基于ASP或使用 ASP的附加功能模块、 ActiveX服务器组件,甚至成套的“自己做(do- it-yoursel”web站点 工具。人们几乎不再关注微软公司最初使用的奇特的名字。现在ASP在行业内已经成为一个 公认的名词。 这是一本关于ASP成熟技术最新版本的书,其目的是期望读者在一定程度上熟悉ASP的组 成,了解ASP能够做什么及如何使用它。本书的目的不仅是使读者开始使用ASP,并且还要使 读者了解ASP新版本的变化和它能够做到而早期版本不能做到的事情 假如你想了解以前版本的ASP,可以阅读《 Beginning active server pages2.0》, 该书由 Brian francis、 John Kauffman、 Juan t Llibre、 David sussman和 Chris ullman 编写,Wrox出版社出版,书号为ISBN1861001347。 这并不意味着读者必须成为专家才能阅读本书,但希望读者已了解Web工作的基本方式 和脚本语言的相关知识,如Ⅴ SCript或 JavaScript 本书将更多地从研究和技术的角度讨论ASP,使读者对ASP如何工作有个更好的理解,有 助于读者编写的ASP代码达到更高的水平。ASP30核心可能没有很多本质上的改变,但有很 多令人激动的使用方法 本章将主要探讨: ·ASP的简介。 ASP与IS如何相互联系。 ·设置问题和管理 ·ASP3.0对象模型的概述 ·对象环境的概念 ASP30中的新内容 本章所采用方法的重要特点是:着重于用ASP页或应用程序的前后关系来研究ASP结构 而不是孤立地研究ASP对象。但是,最初将快速浏览ASP本身使读者能够理解基本概念。 1.1ASP的起源 本节先简单回顾一下ASP是如何产生的,以及ASP为什么能够在Web程序开发人员中流行
下载 第1章 ASP 基 础 M i c r o s o f t的动态服务器网页(Active Server Pages,A S P )技术目前已发展到了3 . 0版。对很 多人来说,用A S P来创建Wi n d o w s服务器平台上的动态 We b网页、整个站点和基于 We b的应用 程序已经成为极其自然而然的方法。在浏览器地址栏中,文件扩展名 . a s p同表示动态创建的网 页的文件扩展名. p l或. c g i一样,已被浏览者所接受。事实上,对于在微软的操作系统上工作的 We b程序员来说,A S P正在变成一种不再令人激动的技术,而仅是一种工作方式。 这种看法的改变体现了一种技术的逐步成熟。由于 A S P的应用程序的数量日益增多, A S P的工具也在日益增加,同时有越来越多的第三方开发商开发出一系列基于 A S P或使用 A S P的附加功能模块、 A c t i v e X服务器组件,甚至成套的“自己做 ( d o - i t - y o u r s e l f )”We b站点 工具。人们几乎不再关注微软公司最初使用的奇特的名字。现在 A S P在行业内已经成为一个 公认的名词。 这是一本关于A S P成熟技术最新版本的书,其目的是期望读者在一定程度上熟悉 A S P的组 成,了解A S P能够做什么及如何使用它。本书的目的不仅是使读者开始使用 A S P,并且还要使 读者了解A S P新版本的变化和它能够做到而早期版本不能做到的事情。 假如你想了解以前版本的 A S P,可以阅读《Beginning Active Server Pages 2.0》, 该书由Brian Francis、John Kauff m a n、Juan T Llibre、David Sussman和Chris Ullman 编写,Wr o x出版社出版,书号为ISBN 1861001347。 这并不意味着读者必须成为专家才能阅读本书,但希望读者已了解 We b工作的基本方式 和脚本语言的相关知识,如 V B S c r i p t或J a v a S c r i p t。 本书将更多地从研究和技术的角度讨论 A S P,使读者对A S P如何工作有个更好的理解,有 助于读者编写的A S P代码达到更高的水平。 ASP 3.0核心可能没有很多本质上的改变,但有很 多令人激动的使用方法。 本章将主要探讨: • ASP的简介。 • ASP与I I S如何相互联系。 • 设置问题和管理。 • ASP 3.0 对象模型的概述。 • 对象环境的概念。 • ASP 3.0中的新内容。 本章所采用方法的重要特点是:着重于用 A S P页或应用程序的前后关系来研究 A S P结构, 而不是孤立地研究A S P对象。但是,最初将快速浏览 A S P本身使读者能够理解基本概念。 1.1 ASP的起源 本节先简单回顾一下A S P是如何产生的,以及A S P为什么能够在We b程序开发人员中流行
2 ASP3高级编程 下载 首先从了解web的基础和动态web页面的发展开始。把ASP与其他许多能够提供这种动态化的 技术相比较,由此深入了解ASP的发展情况,同时了解Web应用程序的发展,而不仅限于了解 单纯的动态Web站点 11.1HTML的起源 万维网( World wide web,WWW)起源于设在瑞士的CERN实验室。 Tim berners-Lee及其 开发小组,花费大量的时间,研究建立了一种以一定格式传输信息的方法,这就是众所周知 的超文本传输协议(简称为HTTP)。该协议使用了超文本标记语言(HTML)。HTML设计简单 结构灵活,允许在Web浏览器及其他兼容的应用程序中显示文本及图像。文档的某些部分 以成为超链接,即当其被选择时,可以显示不同的页面或同一页面的不同部分。 标记语言是由特定字符分隔的基本元素,指定基本元素中所包含的文本或其他 条目如何显示。例如<EM> This is some Emphasized text</EM>。HIML是一种广泛基 于标准通用标记语言( Standard Generalized Makeup Language,SGML)的标记语言 SGML是描述语言的一种方法,其本身并不是用来创建网页的语言 HTML语言从简单开始,不断增加一些附加的功能,直至形成了今天所用的HTML40版 本。这些新增的特性提供了更灵活的文本字体风格(例如<FONT>元素),以及对输出页面布局 的更多控制(如窗体和帧的使用)。 早期的网页所缺乏的是动态的内容。刚一开始时,这还不是一个问题,因为HTML的开 发是为了在计算机、网络及操作系统之间显示和传送信息(特别是技术和科学信息)。这种标准 化的文档仅是一种简单的文本和标记,其中的图像和其他非文本的内容以单独文件形式存放, 它们可以在各种网络上自由传送。另外,由于信息的格式是固定的,其组成元素的含义也是 在HTML中定义好的。对于一个“阅读器”或浏览器应用程序,用任何程序语言在任何平台 或操作系统中相对来说是比较容易实现的。 只要建立这些信息网页,文本文件和图像可通过web服务器应用程序传送给用户,web服 务器应用程序简单地从磁盘中读取它们并且把输出转换成能够在网络中传送的正确HTTP协 议。在客户或用户端,浏览器接收传送到的信息流,并转换成为能够显示的页面。 HTML和HTTP除了具有跨平台特性之外,其最主要的长处就是其文档可以包含有关内容 的相关信息、作者意欲表达的方式等。它可以被应用程序阅读而不一定显示出来:例如盲人 可以使用特殊的程序把它转换成为语音。同样,其内容可以特殊方式显示出来,以便那些视 力差或有其他缺陷的人们更容易进行访问。因此,技术界经常用“用户代理”( user agent)这 通用术语代替“浏览器”( browser) 1.1.2动态页面的起源 对于新类型的文档内容,特别是那些设计成为允许在页面上输入信息的文档(例如HTML 中< CINPUT>等的窗体控件),开发一种能够读取这种信息并加以利用的应用程序成为必然。很 明显,传递从其他应用程序中得到的内容,特别是特定类型的数据库的内容,需要一种新的 方法。每次都需要重写一个基于文本的页面,对于提供实时性很强的信息当然不是一个理想 的方法
首先从了解We b的基础和动态We b页面的发展开始。把 A S P与其他许多能够提供这种动态化的 技术相比较,由此深入了解 A S P的发展情况,同时了解We b应用程序的发展,而不仅限于了解 单纯的动态Web 站点。 1.1.1 HTML的起源 万维网( World Wide We b,W W W )起源于设在瑞士的C E R N实验室。Tim Berners-Lee及其 开发小组,花费大量的时间,研究建立了一种以一定格式传输信息的方法,这就是众所周知 的超文本传输协议 (简称为H T T P )。该协议使用了超文本标记语言 ( H T M L )。H T M L设计简单, 结构灵活,允许在 We b浏览器及其他兼容的应用程序中显示文本及图像。文档的某些部分可 以成为超链接,即当其被选择时,可以显示不同的页面或同一页面的不同部分。 标记语言是由特定字符分隔的基本元素,指定基本元素中所包含的文本或其他 条目如何显示。例如<EM>This is some Emphasized text</EM>。H T M L是一种广泛基 于标准通用标记语言 (Standard Generalized Makeup Language,S G M L )的标记语言。 S G M L是描述语言的一种方法,其本身并不是用来创建网页的语言。 H T M L语言从简单开始,不断增加一些附加的功能,直至形成了今天所用的 HTML 4.0版 本。这些新增的特性提供了更灵活的文本字体风格 (例如< F O N T >元素),以及对输出页面布局 的更多控制(如窗体和帧的使用)。 早期的网页所缺乏的是动态的内容。刚一开始时,这还不是一个问题,因为 H T M L的开 发是为了在计算机、网络及操作系统之间显示和传送信息 (特别是技术和科学信息)。这种标准 化的文档仅是一种简单的文本和标记,其中的图像和其他非文本的内容以单独文件形式存放, 它们可以在各种网络上自由传送。另外,由于信息的格式是固定的,其组成元素的含义也是 在H T M L中定义好的。对于一个“阅读器”或浏览器应用程序,用任何程序语言在任何平台 或操作系统中相对来说是比较容易实现的。 只要建立这些信息网页,文本文件和图像可通过 We b服务器应用程序传送给用户, We b服 务器应用程序简单地从磁盘中读取它们并且把输出转换成能够在网络中传送的正确 H T T P协 议。在客户或用户端,浏览器接收传送到的信息流,并转换成为能够显示的页面。 H T M L和H T T P除了具有跨平台特性之外,其最主要的长处就是其文档可以包含有关内容 的相关信息、作者意欲表达的方式等。它可以被应用程序阅读而不一定显示出来:例如盲人 可以使用特殊的程序把它转换成为语音。同样,其内容可以特殊方式显示出来,以便那些视 力差或有其他缺陷的人们更容易进行访问。因此,技术界经常用“用户代理” (user agent)这 一通用术语代替“浏览器” ( b r o w s e r )。 1.1.2 动态页面的起源 对于新类型的文档内容,特别是那些设计成为允许在页面上输入信息的文档 (例如H T M L 中< I N P U T >等的窗体控件),开发一种能够读取这种信息并加以利用的应用程序成为必然。很 明显,传递从其他应用程序中得到的内容,特别是特定类型的数据库的内容,需要一种新的 方法。每次都需要重写一个基于文本的页面,对于提供实时性很强的信息当然不是一个理想 的方法。 2计计ASP 3 高级编程 下载
hinapub.com 第章ASP基础 3 载 对于web服务器来说,提供一个接口使其他应用程序能够与之相连成为一种常用的方法 过这个接口,定制的可执行程序能够接收来自客户端的信息,包括通过点击超链接或在浏 览器中键入统一资源定位符(URL)所提出的页面请求的细节。应用程序对客户端的请求能够生 成相应的响应,而不是从服务器磁盘上读取文本或标记文件。从这些早期方法开始,逐渐形 成一套完整的系列方法动态创建网页,以响应用户的请求或信息的变化 用于这些应用程序的接口仍然在使用,并被称为公共网关接口( Common Gate way Interface,CGI),这是一种可用任何语言(如C语言)实现的标准。它产生于那些使用cgi-bin目 录的应用程序(这里“bin”代表二进制代码,而不是文本)。早期的应用程序都是编译后的程 序,通常用C或C++编写。然而这自然要求懂得C语言的编程方法,并且每当对程序做很小的 文字上或标记上的变动,都必须重新编译、重新生成可执行文件,这就限制了CGI和动态页面 的使用。 取而代之的是开发了一种用脚本语言创建网页的方法,这种语言就是实用摘要和报告语 ( Practical Extraction and Reporting language),或简称为Perl,它允许信息的创建者以一种 非常类似于简化版C或C++的语言编写代码。在Perl脚本中,可以“写”文本和标记,用标准 输入( stdin)和标准输出( stdout)函数通过CGI与Web服务器通信,输出到浏览器。 Perl在Web上仍然是一种流行的语言,特别是在基于UNX或 Linux的系统上。然而这种语 言掌握起来不是很容易,特别是对于那些没有C或C++语言基础的Web开发人员更是如此。现 在,一些新的脚本语言出现了,使创建网页更加容易。我们主要看一下它们如何使开发人员 的工作变得更加容易 1.服务器端脚本技术 对于服务器端的脚本需要用某种类型的中间应用程序,或插件程序来连接。它必须能够 接受用户请求,读取并解释合适的基于服务器的脚本文件,接着创建输出页,并传送给web 服务器,在那里作为响应发送给客户端 在某些情况下,这个任务划分为两个部分: 个应用程序或插件程序处理与web服务器的往来通信(一般通过CGI)。 ·另一个处理解释和执行脚本。 这就是ASP中的情况,脚本引擎的使用与在其他环境下相同。 Perl是第一个流行的服务器端脚本语言,但是目前已经出现很多其他的语言。在UNIX及 基于 Linux的系统上,一种新的称之为PHP( Personal Home page)的语言正变得越来越流行。还 有一些语言的目标是一些特定类型的用户,例如TCL就是一种在科学环境下使复杂的数学运 算简单化的语言。 2.微软的动态页面创建技术 微软随 Windows nt3.51推出了他们的web服务器软件— Internet Information Server(IS) 0。这是一个提供了很多功能的相当标准的软件,它支持CGI。然而微软也提供了另外一个 接口,允许使用C和C艹+等编译语言生成可执行文件,使操作更加高效。这就是 Internet服务器 应用编程接囗( Internet Server Application Programming Interface, ISAPI)。它能够提供比传统 Perl引擎和其他技术所依赖的 stdin和 stdout更为广泛的对Web服务器的访问 此后微软和其他第三方开发商推出了许多能通过ISAP连接到IS的应用软件,这也就是为 什么ASP能够连接到IIS以及其他微软服务器端动态技术。在ASP以前,用得最广泛的是
对于We b服务器来说,提供一个接口使其他应用程序能够与之相连成为一种常用的方法。 通过这个接口,定制的可执行程序能够接收来自客户端的信息,包括通过点击超链接或在浏 览器中键入统一资源定位符 ( U R L )所提出的页面请求的细节。应用程序对客户端的请求能够生 成相应的响应,而不是从服务器磁盘上读取文本或标记文件。从这些早期方法开始,逐渐形 成一套完整的系列方法动态创建网页,以响应用户的请求或信息的变化。 用于这些应用程序的接口仍然在使用,并被称为公共网关接口 (Common Gateway I n t e r f a c e,C G I ),这是一种可用任何语言 (如C语言)实现的标准。它产生于那些使用 c g i - b i n目 录的应用程序 (这里“b i n”代表二进制代码,而不是文本 )。早期的应用程序都是编译后的程 序,通常用C或C + +编写。然而这自然要求懂得 C语言的编程方法,并且每当对程序做很小的 文字上或标记上的变动,都必须重新编译、重新生成可执行文件,这就限制了 C G I和动态页面 的使用。 取而代之的是开发了一种用脚本语言创建网页的方法,这种语言就是实用摘要和报告语 言(Practical Extraction and Reporting Language),或简称为P e r l,它允许信息的创建者以一种 非常类似于简化版 C或C + +的语言编写代码。在 P e r l脚本中,可以“写”文本和标记,用标准 输入( s t d i n )和标准输出( s t d o u t )函数通过C G I与We b服务器通信,输出到浏览器。 P e r l在We b上仍然是一种流行的语言,特别是在基于 UN I X或L i n u x的系统上。然而这种语 言掌握起来不是很容易,特别是对于那些没有 C或C + +语言基础的We b开发人员更是如此。现 在,一些新的脚本语言出现了,使创建网页更加容易。我们主要看一下它们如何使开发人员 的工作变得更加容易。 1. 服务器端脚本技术 对于服务器端的脚本需要用某种类型的中间应用程序,或插件程序来连接。它必须能够 接受用户请求,读取并解释合适的基于服务器的脚本文件,接着创建输出页,并传送给 We b 服务器,在那里作为响应发送给客户端。 在某些情况下,这个任务划分为两个部分: • 一个应用程序或插件程序处理与 We b服务器的往来通信(一般通过C G I )。 • 另一个处理解释和执行脚本。 这就是A S P中的情况,脚本引擎的使用与在其他环境下相同。 P e r l是第一个流行的服务器端脚本语言,但是目前已经出现很多其他的语言。在 UN I X及 基于L i n u x的系统上,一种新的称之为 PHP(Personal Home Page)的语言正变得越来越流行。还 有一些语言的目标是一些特定类型的用户,例如 T C L就是一种在科学环境下使复杂的数学运 算简单化的语言。 2. 微软的动态页面创建技术 微软随Windows NT 3.51推出了他们的We b服务器软件—Internet Information Server(IIS) 1 . 0。这是一个提供了很多功能的相当标准的软件,它支持 C G I。然而微软也提供了另外一个 接口,允许使用C和C + +等编译语言生成可执行文件,使操作更加高效。这就是 I n t e r n e t服务器 应用编程接口(Internet Server Application Programming Interface,I S A P I )。它能够提供比传统 P e r l引擎和其他技术所依赖的s t d i n和s t d o u t更为广泛的对We b服务器的访问。 此后微软和其他第三方开发商推出了许多能通过 I S A P I连接到I I S的应用软件,这也就是为 什么 A S P能够连接到 I I S以及其他微软服务器端动态技术。在 A S P以前,用得最广泛的是 第1章 ASP 基 础计计3 下载
ASP3高级编程 Chinaopub coM 下载 Internet数据库连接器( Internet Database Connector,IPC)。ASP为web开发者使用微软的平台 开辟了一个新的天地,这使采用数据库中的数据创建动态网页更加容易。特别是它引入了模 板( ( template),即包含了带有能够插入数据库查询结果的文本和标记的模板文件 现有的(或将过时的)其他微软服务器端页面创建技术有 db web和 OLEISAP。事实上 db web就是 OLEISAPI的实现,而对于多数人来说,迄今只是证实了这一技术在实际应用中的 不适应性。 OLEISAPI是通过特殊版本的 ISAPI接口与IS通信的一些COM对象。Web服务器软 件调用COM对象中单个指定函数并以参数为用户的请求提供细节。COM对象返回的是作为字 符串的页面的文本和标记,然后作为响应发送给客户端 OLEISAPI首创了COM对象的动态Web页面创建,为编程人员提供通过编译的 Active x DLL创建动态页面的能力。然而它所使用的特定的实现和数据通信技术对于较小的任务和内 部网( intranet)工作缺乏有效性和可扩展性。同时,每当改变页面的文本和标记时,也需要重 新编译动态链接库。图1-1给出了到目前为止所讨论的技术的相互关系 Web服务器 ISAPI OLEISAPI 链接库 喳询文件 定义 数据库 板文件 脚本引擎 数据库 图1-1主要页面创建技术的相互关系 3.动态Web页面创建方法的比较 比较动态页面创建技术是一个既困难又敏感的任务,然而理解各种接口和与之相关联的 应用程序的差异性又是很重要的。当创建与Web服务器交互的应用程序时,涉及到的两个主 要的问题是它们对Web服务器本身稳定性的影响,以及处理多发或并发页面请求的效率。这 两个问题是相互联系的,又是相互排斥的。 应用CGI和ISAP的编译的可执行应用程序(不是DLL文件),通常在服务器计算机上以进 程外(out-of- process)方式运行,这就意味它们要作为单独应用程序运行,占有单独的与Web服 务器应用程序不同的内存空间。操作系统将其作为一个单独的进程进行管理,禁止它们访问 本身所占内存以外的内存 因此,如果一个进程外应用程序失败,不会影响到Web服务器。同样,假如应用程序包 含错误,企图直接写入Web服务器的内存,会因一般性保护错误停止运行。进程外应用程序 也会因用户或操作系统的命令而中止,这时代码会从内存中自动卸载 因为运行进程外程序意味着访问Web服务器内存的请求被禁止,所要求的或产生的输出 结果值不能直接传送给Web服务器。所以必须执行一种跨进程调用,但这比在同一进程内访 问内存要多花费几倍的时间。对于可执行文件的装载和卸载时间还有一定的影响
I n t e r n e t数据库连接器(Internet Database Connector,I P C )。A S P为We b开发者使用微软的平台 开辟了一个新的天地,这使采用数据库中的数据创建动态网页更加容易。特别是它引入了模 板( t e m p l a t e ),即包含了带有能够插入数据库查询结果的文本和标记的模板文件。 现有的 (或将过时的 )其他微软服务器端页面创建技术有 d b We b和O L E I S A P I。事实上, d b We b就是O L E I S A P I的实现,而对于多数人来说,迄今只是证实了这一技术在实际应用中的 不适应性。O L E I S A P I是通过特殊版本的I S A P I接口与I I S通信的一些C O M对象。We b服务器软 件调用C O M对象中单个指定函数并以参数为用户的请求提供细节。 C O M对象返回的是作为字 符串的页面的文本和标记,然后作为响应发送给客户端。 O L E I S A P I首创了C O M对象的动态 We b页面创建,为编程人员提供通过编译的 Active X D L L创建动态页面的能力。然而它所使用的特定的实现和数据通信技术对于较小的任务和内 部网( i n t r a n e t )工作缺乏有效性和可扩展性。同时,每当改变页面的文本和标记时,也需要重 新编译动态链接库。图1 - 1给出了到目前为止所讨论的技术的相互关系。 图1-1 主要页面创建技术的相互关系 3. 动态We b页面创建方法的比较 比较动态页面创建技术是一个既困难又敏感的任务,然而理解各种接口和与之相关联的 应用程序的差异性又是很重要的。当创建与 We b服务器交互的应用程序时,涉及到的两个主 要的问题是它们对 We b服务器本身稳定性的影响,以及处理多发或并发页面请求的效率。这 两个问题是相互联系的,又是相互排斥的。 应用C G I和I S A P I的编译的可执行应用程序 (不是D L L文件),通常在服务器计算机上以进 程外( o u t - o f - p r o c e s s )方式运行,这就意味它们要作为单独应用程序运行,占有单独的与 We b服 务器应用程序不同的内存空间。操作系统将其作为一个单独的进程进行管理,禁止它们访问 本身所占内存以外的内存。 因此,如果一个进程外应用程序失败,不会影响到 We b服务器。同样,假如应用程序包 含错误,企图直接写入 We b服务器的内存,会因一般性保护错误停止运行。进程外应用程序 也会因用户或操作系统的命令而中止,这时代码会从内存中自动卸载。 因为运行进程外程序意味着访问 We b服务器内存的请求被禁止,所要求的或产生的输出 结果值不能直接传送给 We b服务器。所以必须执行一种跨进程调用,但这比在同一进程内访 问内存要多花费几倍的时间。对于可执行文件的装载和卸载时间还有一定的影响。 4计计ASP 3 高级编程 下载 Web服务器 CGI ISAPI OLEISAPI d b We b动态 链接库 A S P动态 链接库 I D C动态 链接库 编译的可执 行程序 P e r l 解释器 P e r l脚本 数据库 数据库 I D C 查询文件 I D C 模板文件 脚本引擎 A S P脚本 d b We b 定义
第章ASP基础 5 下载 相反,应用进程内(in- process)程序——通常是能够使用 ISAPI或 OLEAPI接口的DLL(不是 单独的可执行文件),因为其运行在web服务器的内存空间中 妾访问Web服务器内存 中的值,这可提供更快的访问和响应。然而其代码的错误或失败会影响到Web服务器。例如 DLL文件中的代码直接写入包含Web服务器操作代码的内存空间,可能引起web服务器的失败。 其关系如图1-2所示。 web服务器内存空间 独立内存空间 跨进程访问 变量 进程外可执行程序 Web服务器内存空间 直接访问 变量 进程内的 件或DDL 图1-2不同类型程序占用内存的情况 进程外应用程序实例是Per脚本解释器和使用 ISAPI接口的exe文件。进程内组件的实例 有 db Web、IDC以及ASP技术。然而,ASP和IS相互连接的方式还有许多种。因此,先把其他 相关技术放在一边,进一步研究ASP 1.2ASP如何与ⅢS连接 ASP本身包含了一个DLL文件,名字为 asp. dll,缺省安装在 Winnt\System32 C\inetsrv目录下 这个DLL文件负责得到一个ASP页面(由文件扩展名asp标识),然后对它进行分析,寻找服务 器端脚本内容。这个脚本传送给相应的脚本引擎,脚本的执行结果与ASP页中的HTML和模板 文本结合在一起。完整的页面会送到web服务器,从那里送往原先提出请求的客户端。 1.2.1关于应用程序的映射 为了更好地理解这个过程,需要研究一下 Windows2000中的应用程序映射的工作方式。 对于每一个在IS下设置好的web站点,服务器上都有一个根目录。安装IS时,缺省的Web站 点通常是 C: \Inet PublWWwRoot,除非在安装过程中改变了路径。对于这个目录以及其中的子 目录(这个我们稍后再讨论),有一组定义目录如何配合IS的属性 从 Start菜单中的 Administratiⅳ ve Tools打开 Internet Services Manger,将运行微软管理控制 台( Microsoft Management Console,MMC),显示IS的情况。 用鼠标右击 Default Web site,选择 Properties(属性),然后出现 Home Directory选项卡,如 图1-4所示 可以看到缺省的站点被设置成为一个虚拟的应用程序。在选项卡的下半部有 Application name、 Execute Permissions和 Application Protection选项。IS使用虚拟应用程序的方式来隔离 面集和所使用的组件的实例,以失败影响到防止Web服务器。正如早先所看到的,这是通 过在单独的内存空间中执行页面和进程外组件实现的。我们将在本章后面讨论这个问题
相反,应用进程内( i n - p r o c e s s )程序—通常是能够使用I S A P I或O L E A P I接口的D L L (不是 单独的可执行文件 ),因为其运行在 We b服务器的内存空间中,可以直接访问 We b服务器内存 中的值,这可提供更快的访问和响应。然而其代码的错误或失败会影响到 We b服务器。例如 D L L文件中的代码直接写入包含 We b服务器操作代码的内存空间,可能引起We b服务器的失败。 其关系如图1 - 2所示。 图1-2 不同类型程序占用内存的情况 进程外应用程序实例是 P e r l脚本解释器和使用 I S A P I接口的. e x e文件。进程内组件的实例 有d b We b、I D C以及A S P技术。然而,A S P和I I S相互连接的方式还有许多种。因此,先把其他 相关技术放在一边,进一步研究 A S P。 1.2 ASP如何与I I S连接 A S P本身包含了一个D L L文件,名字为a s p . d l l,缺省安装在Wi n n t \ S y s t e m 3 2 \ i n e t s r v目录下。 这个D L L文件负责得到一个 A S P页面(由文件扩展名. a s p标识),然后对它进行分析,寻找服务 器端脚本内容。这个脚本传送给相应的脚本引擎,脚本的执行结果与 A S P页中的H T M L和模板 文本结合在一起。完整的页面会送到 We b服务器,从那里送往原先提出请求的客户端。 1.2.1 关于应用程序的映射 为了更好地理解这个过程,需要研究一下 Windows 2000中的应用程序映射的工作方式。 对于每一个在I I S下设置好的We b站点,服务器上都有一个根目录。安装 I I S时,缺省的We b站 点通常是C : \ I n e t P u b \ W W W R o o t,除非在安装过程中改变了路径。对于这个目录以及其中的子 目录(这个我们稍后再讨论),有一组定义目录如何配合 I I S的属性。 从S t a r t菜单中的Administrative To o l s打开Internet Services Manger,将运行微软管理控制 台(Microsoft Management Console,M M C ),显示I I S的情况。 用鼠标右击Default Web Site,选择P r o p e r t i e s (属性),然后出现Home Directory选项卡,如 图1 - 4所示。 可以看到缺省的站点被设置成为一个虚拟的应用程序。在选项卡的下半部有 A p p l i c a t i o n n a m e、Execute Permissions和Application Protection选项。I I S使用虚拟应用程序的方式来隔离 页面集和所使用的组件的实例,以失败影响到防止 We b服务器。正如早先所看到的,这是通 过在单独的内存空间中执行页面和进程外组件实现的。我们将在本章后面讨论这个问题。 第1章 ASP 基 础计计5 下载 变 量 变 量 直接访问 跨进程访问 Web服务器内存空间 Web服务器内存空间 独立内存空间 进程外可执行程序 进程内的 组件或DDL