日期:2012-03-17  浏览次数:21266 次

    假如读者已经熟悉了ASP 2.0,并正在寻找3.0版本中的实际改变的列表,那么将在下面发现这些信息。假如读者是一个ASP的初学者,可以越过本章到下一章,那里循序渐进地介绍了ASP对象和它们的用法。
    ASP 3.0新特性概要
    在ASP 3.0中,有一些新的特性或经历较大的变化或改进的特性。
    1. 无脚本的ASP
    如早先提到的, ASP处理不包括任何脚本的.asp页的速度是很快的,假如你正在创建的站点或Web应用程序文件最终可能使用ASP,最好让这些文件使用.asp文件扩展名,而不用考虑它们是包含服务器端脚本还是仅仅包含静态( HTML和文本)内容。
    2. 新的流向控制能力
    到目前为止,假如想把执行转向另外的一个ASP页,不得不使用Response.Redirect语句,这个工作通过向客户端发送一个响应来指示其载入新的页面来实现。然而这对客户端来讲是费事的。而且当代理服务器用于客户端时,会引起错误的消息。ASP 3.0为Server对象提供了两个新的方法,允许在服务器上转换页面而不需要新的客户端的请求。
    Server.Transfer是转换执行到另一个页面;而Server.Execute是执行另一个页面,然后将控制返回原来的页面。在新的页面里可访问原来页面的环境,包括Response 和Request等所有ASP对象,但是不能访问页面范围的变量。假如原始的页面使用了一个事务标志(在开放的< % @ . . . % >元素中),事务的环境被传递到新的页面。假如第二个ASP文件的事务标志表明事务是受到支持的或需要的,则现有的事务将被使用,而不会开始一个新的事务。
    3. 错误处理和新的ASPError对象
    通过提供一个用Server.Transfer方法自动调用的定制的ASP页面,提供了可配置的错误处理。在这个ASP页面中,Server.Get Last Error可被用来返回一个ASP Error对象的实例,其中包含了错误的细节,例如错误的描述和相关的行号。
    4. 编码后的ASP脚本
    ASP脚本和客户端脚本现在可以使用BASE 64加密法进行编码。更高水平的加密计划将出现在ASP的未来新版本里(注意,这个特征是由VBScript 5.0和JScript 5.0脚本引擎实现的,因此在脚本被执行时要求这些引擎存在)。编码后的脚本将在运行时由脚本引擎解码。因此不必使用别的工具,尽管这不是很安全的加密方法,但能够保护脚本不被一般的用户浏览和拷贝。
    5. 包含脚本文件的一种新方式
    除了使用<!--#Include...-->元素使服务器端的IIS包含脚本代码文件, ASP 3.0也能够“包含”其自己。<SCRIPT >元素与RUNAT=“SERVER”和SRC =“path_and_filename”属性共同使用,来包含基于服务器的脚本代码文件。相对的物理路径或虚拟路径也可以用在SRC属性中:

    6. Server Scriptlets
    ASP 3.0支持一种强有力的新的脚本技术,称之为Server Scriptlets。这些是驻留在服务器上的XML格式的文本文件,可以像一般的COM对象(即Active服务器组件)为ASP所用。这样可以把Web应用程序的业务逻辑脚本过程更容易地实现为一个可重用的组件。
    7. 增强性能的Active服务器组件
    ASP中的许多Active服务器组件得到了改进,能够提供更好的性能和附加的功能,一个例子就是新的Browser Capabilities组件。除此之外,还有一些新的组件。例如, XML分析器使应用程序可以处理服务器上的XML格式的数据。同时,提供了ADO与XML更加紧密的集成
(通过Windows 2000所提供的新的ADO 2.5版),这为以XML格式存贮和获取数据,提供了新的机会。
    8. 性能
    为改善ASP和IIS的性能和可扩展性,新版本做了大量的工作。这包含ASP中的自我调整特征,它可以检测阻塞情况并自动增加可用线程的数量。当请求在执行中受到外部资源的阻塞时, ASP能够检测出来,并为同时执行附加请求和继续正常处理提供更多的线程。但是,
假如CPU变得超负荷, ASP会减小可用线程的数量,以便当过多的非阻塞请求同时执行时,将线程切换次数最小化。
    对ASP 2.0的改进
    下面的一些特征是从2 . 0版本中改进或升级来的。
    1. 缓冲缺省为打开状态
    ASP提供可选的输出缓冲。从IIS 4.0开始,这使得脚本执行得更快,并提供对流向浏览器的输出的控制能力。在ASP 3.0这个改进的性能通过改变Response.Buffer属性的缺省设置为True而反映出来。缺省状态下缓冲是打开的,这意味着最终的输出只有在进程完成时,或脚本调用Response.Flush或Response.End方法时,才送至客户端。
    注意,可以通过设置Response.Buffer属性为False,关闭缓冲。只有这样,才能发送XML格式化输出给客户端,让XML分析器在收到输出后开始工作。也可以使用Response.Flush发送大页面的一部分,这样使用户可以很快看到部分输出。
    2. Response.IsClientConnected的变化
    Response.IsClientConnected属性可以在没有任何内容发送给客户端的情况下被读取到。在ASP 2.0中,这只在至少有一部分内容被发送后才能返回准确的信息。这一改进解决了IIS必须响应每个客户的请求(即使客户可能已经转移到另一个页面或站点)的问题。同时如客户在3秒内没有再连接,服务器上创建的完整的输出信息将被丢弃。
    3. 带有默认文档的查询字符串
    假如一个用户访问一个站点而不提供所请求页面的名字,默认的文档(如存在的话)将被送往客户端。然而假如他们提供了附在URL后面的查询字符串,这在早先的ASP版本中是被忽略的,而在IIS 5.0 和ASP 3.0 中这个查询子符串将被送到缺省页面。例如,在一个URL为:http://www.wrox.com/store/的目录中缺省页面为default.asp,则下面这两种情况都将名称/值对Code=1274送往default.asp页面:

    4. 服务器端包含文件的安全性
    服务器端的包含文件常用于一些敏感的信息,如数据库连接字符串或其他访问细节。一个虚拟的路径(即URL而不是完整的物理磁盘文件路径)可以用来指定这些文件。在这种情况下,早先的ASP版本不核对文件的安全设置和用户的证书;换句话说,授权(验证后)的用户和匿名的Web服务器帐号都没有与文