荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Jobs (温少), 信区: WinNT
标  题: IIS 5.0的新特性
发信站: BBS 荔园晨风站 (Sun Feb 13 09:49:15 2000), 转信



             IIS 5.0的新特性

MSDN开发者新闻   新闻目录
 最新更新:五月五日


本文假定你熟悉动态服务器页(Active Server Pages)和VBScript以及因特网信息
服务(Internet Information Services)5.0
Jeff J. Rodenburg


因特网信息服务5.0,Windows 2000的一部分,微软承诺这是至今最好的IIS(因
特网信息服务)。

微软因特网信息服务(IIS)5.0,下一代的微软网络服务器,计划是Windows
2000网络服务中的一部分。除了IIS,Windows 2000网络服务预期包含Windows NT
4.0选择包中发布的附加服务,例如,证书服务器(Certificate Server)和索引
服务器(Index Server)。IIS的安装简单易懂,使用带有微软管理控制台(
Microsoft Management Console ,MMC)的因特网服务管理器(Internet
Service Manager)给予IIS 5.0和IIS 4.0同样的外观。

让我们注视5.0版中实现的特殊的改进。我将评论和分析在ASP嵌入对象中发布的
最新方法。将注视动态数据对象(Active Data Objects ,ADO)中的改进,产业
标准协议的合并和IIS 5.0中最新的安全性方面的改进。


IIS 5.0的发展基于Windows NT 5.0服务器测试版2中装载的网络服务,但是
Windows 2000的最终发布日期至今没有决定。(Windows 2000 测试版3预期于
1999年春天发布。)组件的最终实现与我将在这儿讨论的可能不同。

微软强调IIS 5.0中的改进是在少数关键领域,特别是安全性和易用性方面。为满
足创作者和应用程序开发者,这个版本在存储方面包含了新的发布方法。ASP模型
的更新和其他有助于改进处理能力和提高效率的修改。

IIS 5.0带来新版本的网络服务(inetinfo.exe),ASP解析器(ASP.DLL)和二进制
脚本引擎(vbscript.dll和jscript.dll)。另外,Windows 2000预期包含ADO 2.1
版。你可以利用其中包含的每个新特征写应用程序,而这些应用程序又利用了
Windows 2000中计划包括的网络服务。

改进基于ASP的应用程序支持

一些建立到网络服务引擎中的功效应该使ASP应用程序便于开发者管理。一个好的
特征是无脚本的ASP处理,在没有服务器端脚本时该处理消除了一个对ASP解析的
调用。为了更加彻底的解释这个问题,我们首先讨论IIS怎样处理一个ASP请求。


当IIS接收到一个HTTP请求时,它的工作是返回被请求的资源,例如一个静态或动
态页(见图1)。注册入口映射文件,ISAPI扩展的扩展名(Internet服务器应用
编程接口)。当IIS接收到一个请求时,如果资源是可用的,IIS将检查被请求的
资源。取决于资源的扩展名,它将装入适当的ISAPI扩展,将请求转寄给它,接受
一个返回调用,将数据流返回到发出请求的用户浏览器。例如,当接收到一个对
ASP页的请求时,IIS将请求转寄给ASP.DLL、ASP解析。ASP.EXE),IIS简单的返
回数据到用户。


图1:IIS 接收一个请求

在早期的版本中,IIS会引导全部请求到指定的扩展上。例如,如果一个ASP也被
请求,IIS产生一个到ASP.DLL的调用去处理该页。然而,一个ASP也可以完全由客
户端HTML标识符和函数正确的组成。如果一个没有服务器端脚本的ASP页被请求,
仍产生一个调用到ASP.DLL。这是一个低效率的处理。为了避免到ASP解析的调用
,开发者不得不为所有不是服务器端脚本的页命名一个.HTM的扩展名。因为在5.0
版之前的版本中,IIS对HTML文件不提供ISAPI扩展的调用服务。当技术上进步时
,对于复杂的含有ASP和HTML多重链接的站点就产生问题:网络服务器招致一个对
ASP.DLL不必要的调用。同时,若给定站点内容不断的改变,维护工作将是非常巨
大和令人头疼的。

IIS 5.0现在包括一些初始检查特征,将检查一个ASP页来确定其含有服务器端脚
本,优先转寄它给ASP解析处理。ASP检索的效率与一个简单HTML文件请求的效率
不相等,但是它在处理程序方面与较早的IIS版本确实有显著的改进。这个特征的
最大好处是你可以用.ASP后缀名编码整个站点,而不论服务器端脚本是否存在。
这使你更新你的站点和在需要的页上实现服务器端脚本更容易,而没有费心劳神
的维护工作。

ASP解析在另外几个领域也有了改进,主要是通过新的metabase特性的扩展。在
IIS 4.0版介绍过,metabase是一个控制IIS的行为的分层数据库。Metabase通过
三个不同接口为IIS/ASP设置环境注册表设置。因特网服务管理器是一个与IIS
4.0的功能相似的微软管理控制台;可以手工设定它的特性。IIS的管理对象用户
接口遵循微软动态目录服务接口(Active Directory Services Interface,ADSI
)结构。第三个接口是IIS管理基础对象,它由一标准串行通信口接口实现。除了
手工设置这些特性,IIS管理对象还可以通过应用软件和非因特网服务管理器程序
式的机制等来管理IIS。

哪个方法是最好的?这取决于你的条件和你对站点的需求。如果你的网络站点不
需要太多处理环境的修改,因特网服务管理器对你的站点和网络应用软件所有特
性的设置很可能就是足够好的。然而,如果你的站点的这些设置需要相当可观的
维护工作,程序式的管理可能会更适合。

在我解释程序式的方法前,我首先解释一下微软动态目录。动态目录是网络资源
的集合, 象对象一样被访问。动态目录模型的目的是提供一个集中式目录,在一
个管理点包含所有这些对象,不考虑物理上机器的位置。现在,计算环境正不断
成长跨越多个应用程序和平台的多重系统。设计动态目录可以更有效的管理这些
对象。

动态目录服务提供存取动态目录成员对象的服务。ADSI提供通过程序存取这些对
象的服务。像前面所描述的,IIS 5.0通过两个接口,ADSI和COM,提供通过程序
的管理。

ADSI方法对于基于脚本的自动化任务的管理是理想的。这个问题的完美解决方案
是一个ASP页,该页允许用户在网络服务器上为他们自己创建网络目录。所有可通
过因特网服务管理器配置的特性均能通过ADSI应用,这是通过微软的因特网服务
管理器的HTML版本实现的。对于示例代码,你只需在你喜欢的编辑器上查看ASP页
的源代码。ADSI基准可用VBScript或Jscript在ASP、Visual Basic或C++中产生。
Java语言将支持ADSI,但是当前唯一支持Java执行ADSI的是在J/Direct,这是在
Java 2.0的微软SDK(软件开发工具包)中发布的。

ADSI中的COM接口对Visual Basic、C++或任何支持接口的工具都适合。COM实现对
于服务器端ISAPI扩展或简单的服务器端对象是很实用的。如果你的站点支持高级
用户或高资源负荷、或者站点的性能是个关键,那么用COM将是很有利的。


ASP 改进

在IIS 5.0版中最好的改进是ASP中展现的最新特征。这些特征包括现存对象中的
新方法、一个新组件、ADO和脚本引擎的升级。

自从IIS 3.0和ASP的合并,Application(应用程序)和Session(会话)对象是
嵌入式的并且已经是可用的。两个对象都支持Contents(内容)集合,该集合由
存在于适合对象的存储器中的所有变量组成。你可以检查这个集合,检查它的内
容,改变它的选项的值。

IIS 5.0中介绍了两种Contents集合的新方法,Remove(清除)和RemoveAll(全
部清除)。Remove方法可以从Contents集合中删除一项,RemoveAll从存储器中清
除整个集合。这些方法为开发者提供便利,使他们能写出更高效的代码以在脚本
执行时管理服务器资源。对Application和Session对象来说,甚至可以在请求未
发生时使用服务器资源,当变量不再被需要时,存储器可以释放它们。语法简单
。在基于1的集合中使用Remove方法,你仅仅涉及变量名或它的数字的位置。
RemoveAll方法将删除集合中的所有项。

服务器对象可以用三种新方法处理。Execute(运行)方法从字面意义上讲是一个
程序调用,运行时不用考虑你传递给它什么资源。Transfer(传递)方法是一个功
能方向控制器,从一页运行到下一页。可以返回一个ASPError对象的
GetLastError方法也被引入IIS 5.0。Server.Execute可以用来强制运行页内的
ASP文件。例如,如图2所示我将开启两个ASP页。如果你请求Date.asp,你的浏览
器中将接收到如图3所示页面。



图3:Date.asp

Execute方法调用已引用的资源,在这个例子中是Time.asp。Time.asp被正确的执
行,就像它是被浏览器请求直接调用一样,但实际上却是服务器而非浏览器做出
这个请求。下面用一些代码来说明这一点。


<% Language=VBScript %>
<html>
<body>
The time is <%=Time()%>.
<table>
<tr><td><b>Server Variable</b></td>
<td><b>Value</b></td></tr>
<tr><td><b>Request.ServerVariables("URL")</b></td>
<td><b><%=Request.ServerVariables("URL")%></b></td></tr>
</table>
</body>
</html>

这几行附加到Time.asp的代码用于计算URL头的值,它是由浏览器传递的被请求资
源。

图4:Time.asp

请求Time.asp页,接收到响应如图4所示。URL值是被请求的资源,这儿是
time.asp。当你请求date.asp时,它传达Server.Execute命令来执行time.asp,
你将得到一个不同的响应(见图5)。


图5:Date.asp,不同的响应

请注意被请求的URL是对date.asp的原始请求。Server.Execute命令直接请求要求
的资源,而非由浏览器发布的命令。URL值说明原始的请求没有改变,运行
time.asp不需要浏览器和服务器间来回交互。直到页被处理完毕服务器才脱离控
制,这样,资源处理的效率是很高的。


Sever.Transfer是一个控制重定向函数,它把处理传递到被请求路径。这与响应
重定向函数不同,在控制重定向中控制从不离开服务器。Response.Redirect实际
上发送了一个响应到浏览器,它产生一个附加请求到服务器申请另外的资源。服
务器接着返回新的被请求资源。Sever.Transfer执行本质上同样的功能,但是由
于在浏览器和服务器间没有第二个响应,这使得在页与页之间的控制传递更加高
效。


Sever.Transfer方法解决了许多Response.Redirect方法的问题,而不仅仅是效率
的问题。当Server.Transfer方法被调用时,所有会话级或应用级的变量或对象被
分配到调用页,使方法引用在下个资源是可行的。



图7:That Page Hyperlink


例如,让我们由图6所示的页开始。打开/Windows2000/ThisPage.asp 返回的页可
以链接到其他页,/Windows2000/ThatPage.asp。本页载入的超链接是
/OtherWebApp/NextPage.asp,它使用一个嵌入/Windows2000/ThisPage.asp的会
话变量。单击超链接(见图7)返回ThatPage.asp(见图8)。



图8:ThatPage.asp

虽然这里没有显示,ThisPage.asp的内容可以先于对Server.Transfer的调用被返
回到浏览器。Response.Redirect方法要求全部内容在调用方法之前被缓存,但是
Server.Transfer解决了这个问题,使处理这个方法少了些繁重工作。
Server.Transfer方法一个重要方面是当在其他网络应用程序中请求一页时支持相
同的会话ID。当Server.Transfer方法被调用时,请求页仍运行在包含被请求的原
始资源的网络应用中。然而,其他应用的Global.asa文件将不被激活,所以该文
件中的变量或对象将不被建立。

GetLastError方法对服务器对象来说可能是最好的改进。在处理产生错误的事件
中Server.GetLastError产生一个ASPError对象。ASPError对象是ASP中实现的错
误处理的第一个版本,带有许多可以提供关于讨厌的错误的信息的特性。
GetLastError方法的目的是返回可用对象的引用。ASP服务器端脚本处理有三个基
本问题,ASPError对象将俘获所产生的错误:预处理错误如头文件;编译错误如
不正确的代码;不正确的数据处理可产生的运行错误。


在处理ASP请求中,当IIS遇到这些错误之一时,Server.Transfer方法被调用,
500-100.ASP错误页被请求。你可以将这页定制到你的中心内容,ASPError对象可
以用来定制错误页以提供所发生错误的信息。

下列摘自文件Badcode.asp的ASP代码:

<% Language=VBScript %>
<html>
<body>
<%
' We dim an array, then assign a value to the
' array that is out of scope.
Dim nArray(3)
nArray(0) = 0
nArray(1) = 1
nArray(5) = 5
%>
</body>
</html>


因涉及一个超出它的尺度范围之外的nArray元素,此页产生一个编译错误。当此
页被请求时,将产生一个错误,网络服务器调用Server.Transfer方法传送控制到
定义的错误页。当然你可以使用缺省页,我选择在这儿构造我自己的错误页(见
图10)。



图10:错误页

你需要通过Server.GetLastError来存取 ASPError对象。这儿我已实现我的版本
,你可以看到通过存取定制错误页的微软实现,错误页缺省的装在你的服务器
<windir>\help\iishelp\common\目录下。

动态数据对象2.1

IIS 5.0包括ADO的最新版本,版本2.1。这个新版本中包含ADO 2.0中不存在的智
能新实现。ADO是微软作为到OLE DB的一个接口层提供的。它的设计具有充分的普
遍性,可以满足任何的OLE DB提供者,不论它是一数据库、邮件服务器、文本文
件或是其它任何平台。

微软OLE DB Persistence Provider(持续供应者)处理Recordset对象的Save(
存储)和Open(打开)方法的一个新特征是允许存储一个记录集到一个文件。这
个Save方法添加一个可选择的adPersistXML参量,以XML格式存储文件。网络应用
程序能从XML文件中重新打开记录集,可以使这个文件被其他应用程序共享。


ADO Recordset对象的一个典型应用是为服务器端处理重新获得数据。当SQL查询
可以应用合适的过滤器建立一个记录集时,你可能需要定位一个特殊的记录。你
总是可以通过循环查找记录集来找到包含你的值的纪录,但是现在Seek(寻找)
命令提供了在记录集中定位记录的更有效的方法。使用Recordset的new Index特
性,你可以在记录集内快速的移动记录来定位合适的行或数行。


ADO 2.0版中引入了数据整形(Data shaping),ADO 2.1版在这种数据服务中加
入了一些新的手法。Data shaping中包含存在父子关系的分级记录集的使用。关
于数据整形的一篇优秀文章,"Shape Up Your Data: Using ADO 2.0
Hierarchical Recordsets in API,"发表在MIND杂志的1998年1月刊上。


ADO现在允许重整形。借助重整形,你可以重构你的分级记录集来反映不同的关系
。因为再装入相同的数据时不需在数据库服务器间来回运作,所以非常便利。重
整形有一些局限性,但是当在网络应用程序中处理数据时,所有这些特征使效率
得到了提高。对数据重整的一个附加改进是在分级的纪录集结构中执行不同水平
上集合计算的扩展能力。


Script Engines(脚本引擎)5.0版

Windows 2000的测试版包括VBScript和Jscript最新的二进制脚本引擎,现在是测
试版5.0。这两者都加入了一些新特征,对于为IIS 5.0开发ASP应用程序时非常有
帮助。脚本引擎可以由Microsoft Scripting Web站点下载(
http://msdn.microsoft.com/scripting)。你可以参考网站上的工作示例,这里
我将讨论脚本语言的最新特征。VBScript被改进了,包括添加一个新的对象和
Class支持。VBScript中的Class语句与Visual Basic中的Class模块非常相似。你
可以添加对象和方法,通过公共和专用范围完成。一旦ASP页在运行时间被计算,
Class语句就直接的被包括于服务器端代码。这非常便利,但是Class本身只有当
页在被处理时存在,并且一旦处理完成它就退出范围。所以Class语句在网络服务
器上不是持续存在。

VBScript和Jscript两者都包含了DCOM支持。但是CreateObject函数被扩展,可以
接收额外的参量:服务器名。通过引用服务器名,远程机器上的对象可以被实现
和使用脚本应用程序的存储空间。

新RegExp对象现在给VBScript添加常规的公式。常规公式用于串的求值和操作。
RegExp对象本质上以一种更有效的方式执行一系列的InStr的求值。RegExp对象的
能力是它计算针对某个特殊串的模式的表达式的能力。

VBScript添加的另一个协定是支持With语句。With语句的执行是从Visual Basic
中借来的,当演示一个对象和调用一系列特性或方法时非常有用。代码整洁,对
象参考早已在那儿,所以特性或方法调用会更高效。

Jscript通过添加错误异常处理确实获得更多的注意。如果你熟悉C/C++符号,你
很容易认可Try/C

微软计划集成Distributed Authoring and Versioning(DAV,分布式的作者和文
本)支持到IIS 5.0。DAV是提议中的标准,它允许远程作者存取和更新网络服务
器上的资源。DAV是HTTP 1.1协议的扩展,使用合适的XML执行。

DAV可以说是为实现作者维护网络服务器上内容的程序的一种方法,它通过提供安
全结构来工作,安全结构定义为存取分级元素例如目录和文件。IIS 5.0运行DAV
允许远程作者打开、编辑、移动、寻找或删除网络服务器上的文件和目录。DAV规
范包括附加的特征例如通过摘要确认进行版本管理和存取控制,一个同样属于
HTTP 1.1的新扩展的安全方案。

DAV被期望通过实现网络文件夹并入Windows 2000。你可以通过打开Windows
Explorer浏览你的网络文件夹。在Explorer左边和高亮度的Web Folders上的ALL
Folders窗口向下滚动。添加Web Folders向导将帮你与网络服务器的目录建立一
个连接。建立你的连接之后,你就可以像在自己本地的硬盘或网络文件服务器上
一样存取文件(见图11)。



图11:存取网络服务器的目录

Microsoft FrontPage Server Extensions(服务器扩展)是DAV的等价产物。微
软计划在IIS 5.0中继续支持FrontPage Server Extensions,并且添加为网络出
版特色集成的Office Server E磺肭笞试础TTP方法和一个实时给出(随机产生)的数字与
由服务器返回的竞
争一起传送。这是一种原始的加密术,而不是一种强健的安全形式。摘要确认没
有Kerberos或一个用户端钥匙实现一样安全,但是它确实代表一种比要素确认更
强健的安全形式。

摘要确认是一个HTTP 1.1版规范,它要求浏览器适应这个规范。一旦解析函数可
以加密用户名和密码,浏览器可以在提交它到服务器之前来处理它。如果IIS 5.0
虚拟目录激活摘要确认,由于浏览器来不适合HTTP 1.1协议的请求将在浏览器请
求中产生错误。Microsoft Internet Explorer 4.0是第一个可由微软得到适夯睿梅衿
饔腥ㄊ褂糜没苈氲奈薷袷轿谋究奖础R坏┯蚩刂破骰竦谜庑?
息,网络服务器和域之间必定存在合作。


其他

在IIS 5.0中也可以使用HTTP压缩技术。你可以对静态文件、动态应用文件、或两
者启动压缩。浏览器对压缩文件的请求将检索文件的压缩版本以减少下载时间,
然后在本地解压缩文件。这要求浏览器能支持HTTP压缩技术,像Internet
Explorer 5.0。HTTP压缩技术只是IIS 5.0设置的一个特性,HTTP压缩技术的编码
中没有优点或策略。然而,HTTP压缩技术在适当的环境中会是一种优秀的工具,
使你的网络站点或应用程序获得最大的处理效率。在窄带宽的网络中,压缩文件
可以减少网络交通的数量因此消除延迟。另外,从用户角度考虑,压缩文件(与
它本来的结构和大小不同)可以减少由调制解调器连接的下载时间。当处理动态
页时,每次请求服务器都被请求重建该页,然后压缩输出将它返回到浏览器。使
用许多动态页的站点可能不想在这些页中实现HTTP压缩技术。

IIS 5.0页预计将包含Fortezza标记支持。Fortezza标志是美国国防部的安全措施
,它在加密格式中鉴别用户,与客户证书相似。它的基本目的是将信息和客户标
识加密传输到服务器。采用Fortezza安全要求特殊的卡片阅读装置来实现确认处
理。

吒玫氖嵌┰乃?

http://msdn.microsoft.com/library/sdkdoc/iisref/sdkt69f8.htm

http://www.microsoft.com/ntserver/windowsnt5/techdetails/default.asp




--

   好好学习,天天向上!!!!

※ 来源:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.18.111]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店