ASP 3.0对ASP 2.0的改进

7/7/2001来源:ASP文摘人气:19023

asp 3.0对ASP 2.0的改进

下面的一些特征是从2.0版本中改进或升级来的。

1、 缓冲缺省为打开状态
ASP提供可选的输出缓冲。从IIS 4.0开始,这使得脚本执行得更快,并提供对流向浏览器的输出的控制能力。在ASP 3.0这个改进的性能通过改变Reponse.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页面:
http://www.wrox.com/store/?code=1274
http://www.wrox.com/store/default.asp?code=1274

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

5、 可配置项移到元数据库中
在IIS 5.0中PRocessorThreadMax和ErrorsToNTLog的注册项被移到元数据库中,所有有ASP可配置参数能够通过Active Directory和Active Directory服务接口(ADSI)在元数据库中修改。

6、 应用程序中的双线程对象的性能
为了常有多个并发请求的ASP中获得最佳性能,组件应是双线程的(Both-Threaded)——即单线程单元(Single Threaded Apartment,STA)和多线程单元(Multi-Threaded Apartment,MTA),并且支持COM Free-Thread Marshaller(FTM)。不支持FTM的双线程的COM对象假如被存储在ASP application状态对象中,将导致运行失败。

7、 更早释放COM对象
在IIS 5.0中,实例化的对象或组件可更早释放。在IIS 4.0中,COM对象只有在ASP处理完一个页面时才能释放。在IIS 5.0中,假如一个COM对象不使用OnEndPage方法,且对象的引用计数达到零,则这个对象在处理完成之前就被释放了。

8、  缺省时ASP允许进程外组件
定制的本地服务器组件现在可以从IIS中被实例化,而不需要改变数据库的设置。控制本地服务器实例化的元数据库属性AspAllowOutOfProcComponents缺省值为1,在IIS早期版本为0。

9、  COM对象的安全性
IIS使用了新的由COM+提供的cloaking特性,因此,从ASP实例化的本地服务器应用程序可以运行在原始的客户的安全环境中。在早期版本中,安全环境被指派到本地服务器COM对象,依赖于调用进程的身份。

10、缺省时组件运行在进程外
       在ASP早期版本中,所有在ASP页面环境中创建的组件缺省时运行在进程内。
       为在组件的性能和Web服务器安全性之间折衷,对于一个虚拟的应用程序,可以从Properties对话框中Application Protection的三个选项中选择:
       · Low(IIS Process)
       这种设置的ASP虚拟应用程序可执行文件和组件都运行在Web服务器可执行文件(Inetinfo.exe)的进程(即内存空间)中。因此,Web服务器就有受到可执行文件或组件失败影响的风险,然而这提供了最快的和最少资源的应用程序执行选项。
       · Medium(Pooled)——这是缺省设置
       这种设置的ASP虚拟应用程序的所有应用程序可执行文件和组件都运行在单个共享的DLLHost.exe实例的进程(即内存空间)中。这保护了Web服务器可执行文件(Inetinfo.exe)免受任何一个可执行文件或组件失败带来的风险。然而,可执行文件或组件的失败会引起DLLHost.exe进程失败,进而所有其他驻留其中的可执行文件和组件也会失败。
       · High(Isolated)
       这种设置的ASP虚拟应用程序的所有应用程序可执行文件和组件都运行在单个DLLHost.exe实例的进程(即内存空间)中,但是每个ASP应用程序都有自己的DLLHost.exe实例。DLLHost.exe对应用程序而言是独有的,这保护Web服务器可执行文件免受任何一个可执行文件或组件失败带来的问题。微软建议在任何一个Web服务器上最多驻留10个隔离的虚拟应用程序。
       推荐的配置是:在它们自己的进程中运行对于任务关键的应用程序,即High(Isolated);余下的所有应用程序在一个共享的进程中运行,即Medium(Pooled)。也可设置组成每个虚拟应用程序的脚本和组件的执行权限(Execute Permission),三个选项是:
1)    None:在这个虚拟的应用程序中不能运行脚本或可执行文件。在实际效果上,这提供了一个在必要时快速和简便地禁止一个应用程序的方式。
2)    Scripts only:仅允许脚本文件,诸如ASP、IDC或其他,能够在这个虚拟应用程序中运行,可执行文件不能运行。
3)    Scripts and Executables:允许任何脚本和可执行文件在这个虚拟应用程序中运行。