ASP 3.0中的新特性(2)
发布时间:2008-02-27 13:28:00
对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服务器帐号都没有与文件的访问控制列表相比较。在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:允许任何脚本和可执行文件在这个虚拟应用程序中运行。


猜你喜欢
- 本文实例讲述了Python中xml和json格式相互转换操作。分享给大家供大家参考,具体如下:Python中xml和json格式是可以互转的
- 再看继承真正的大餐来之前,还是来点儿开胃菜!回顾一下关于类的继承的知识:我们先看上面的代码,这是一个简单的类继承,我们可以看到父类Base和
- chatGPT已经爆火一段时间了,我想大多数的开发者都在默默的在开发和测试当中,可能也是因为这个原因所以现在很难找到关于开发中遇到的一些坑或
- 如果要在应用程序中周期性地进行某项操作,比如周期性地检测主机的CPU值,则需要用到QTimer定时器,QTimer类提供了重复的和单次的定时
- 一、分支结构为了限定用户正规操作,也为了更好的控制程序的逻辑,必须在适当时引入条件结构。Python 条件语句是通过一条或多条语句的执行结果
- 在深度学习中,如果我们想获得某一个层上的feature map,就像下面的图这样,怎么做呢?我们的代码是使用keras写的VGG16网络,网
- Linux/Unix的系统上,一般默认的 python 版本为 2.x,我们可以将 python3.x 安装在 /usr/local/pyt
- 300来行python代码实现简易版学生成绩管理系统,供大家参考,具体内容如下使用链表来实现class Node(object): def
- 定义变量什么是变量?在程序运行过程中,其值可以改变的量变量的定义?在 python 中,每个变量在使用前都必须赋值,变量赋值以后该变量才会被
- 代码如下:<% '隐藏并修改文件的最后修改时间的aspshell '原理:通过FSO可以修改文件的
- 使用Python语句,读取Linux远端服务器上的文件打印到控制台的代码实现:下载包:paramikoimport paramiko#服务器
- 简介 在SQL SERVER中,数据库在硬盘上的存储方式和普通文件在Windows中的存储方式没有什么不
- #/usr/bin/env/python#coding=utf-8import sys,re,time,osmaxdata = 50000
- 不久之前,笔者一个在企业中从事网管工作的朋友向我求助关于SQL Server服务器内存升级后遇到的问题。原来,他们企业准备上一个企业邮箱系统
- 一、字符串与字节数组?字符串是 Go 语言中最常用的基础数据类型之一,本质上是只读的字符型数组,虽然字符串往往都被看做是一个整体,但是实际上
- 下面先给大家介绍下Python3 执行系统命令并获取实时回显最近在改造一些打包的逻辑,原来在 Windows 下是基于批处理制作的,由于批处
- 本文实例讲述了Python实现微信中找回好友、群聊用户撤回的消息功能。分享给大家供大家参考,具体如下:还在好奇好友撤回了什么消息吗?群里撤回
- 引言对MySQL数据库的查询,除了基本的查询外,有时候需要对查询的结果集进行处理。例如只取10条数据、对查询结果进行排序或分组等等。一、常用
- 由于并不清楚服务器具体地址,只有jupyter 连接的情况下,上传文件。方法一:用Linux命令直接用linux命令,在jupyter中只需
- 在程序出现bug时一般不会将错误信息显示给用户,而是现实一个提示的页面,通俗来说就是不让用户看见大黄页!!!有时候我们写程序的时候,会出现一