IIS7 探索用于 Windows Vista 的 Web 服务器和更多内容.docx
- 文档编号:12706730
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:19
- 大小:220.70KB
IIS7 探索用于 Windows Vista 的 Web 服务器和更多内容.docx
《IIS7 探索用于 Windows Vista 的 Web 服务器和更多内容.docx》由会员分享,可在线阅读,更多相关《IIS7 探索用于 Windows Vista 的 Web 服务器和更多内容.docx(19页珍藏版)》请在冰豆网上搜索。
IIS7探索用于WindowsVista的Web服务器和更多内容
我经常听到Microsoft内部和外部的人将新的IIS7.0Web服务器称为Microsoft在过去几年中所进行的最重要的开发工作之一。
考虑到Microsoft最近推出了一系列引人注意的技术,包括WindowsVista™,这个评语具有重要意义!
IIS7.0的发布时间正好是WindowsNT®4.0中第一个IIS版本发布十周年的纪念日。
2001年,在四个版本之后,IIS5.0成为了Internet上最流行的Web服务器,尽管几个月后它成了臭名昭著的CodeRed和Nimbda蠕虫的攻击对象。
IIS6.0是在WindowsServer®2003中发布的,它对服务器进行了重大改写,将重点完全放在改进安全性、可靠性和性能上面。
此后,IIS6.0已被证明是坚如磐石的Web服务器,自从发布后,它获得了高可靠性和高安全性记录,而且只有一条关键安全公告(不是可远程利用的)。
在本文中,我要利用这个机会向开发人员和管理员介绍下一代IIS7.0Web服务器之所以有如此大的差异的主要原因,并使您在使用它的很多新功能时有个良好的开始。
IIS7.0的远景是要继承IIS6.0基本代码的速度、可靠性和安全性,并将它演进成高度可扩展和可管理的Web服务器平台,具备足以运行未来Web应用程序的强大功能。
最终成为最具前景的MicrosoftWeb服务器,并带来在IIS历史上最大程度的体系结构改进。
IIS7.0的核心是一个完全模块化的Web服务器,它由40多项功能组成,这些功能可以组合成一个针对在应用程序拓扑中的所需角色经过优化的小型Web服务器。
这些功能基于一个新的可扩展层,这个层允许开发人员以本机代码或者用Microsoft®.NETFramework来扩展或替换服务器的几乎任何方面。
IIS7.0在整个运行库、管理和操作功能方面都提供了可扩展性,以帮助您为特定需要构建端到端解决方案。
在核心平台的基础上,IIS7.0解决了与服务器的可管理性和操作相关的很多问题。
它采用全新的配置系统,能够对站点进行完全委派的管理,并最终使Web应用程序的xcopy部署成为现实。
新的管理API和诊断功能使服务器的部署、管理和故障排除明显变得比以前更容易、更方便。
但在下一个WindowsServer版本(代号为“Longhorn”)即将最后发布之前,为什么应当开始考虑IIS这个服务器应用程序呢?
现在开始考虑采用它之所以重要,是因为WindowsVista将附带相同的全功能IIS7.0程序,这些程序预计将在WindowsServer“Longhorn”中发布。
这意味着您可以立即利用新的IIS7.0功能构建您的个人网站,并将它承载在WindowsVista上。
此外,当WindowsServer“Longhorn”发布时您将把生产Web应用程序以及Web服务器基础结构部署到相同的IIS平台上,就这一点来说,您可以率先开始开发和测试它们。
有兴趣吗?
让我们深入讨论细节。
模块化Web服务器
IIS7.0将Web服务器分成一个轻型服务器核心,以及可以插入此核心中的40多个功能模块。
这些模块(比如允许下载静态Web内容的StaticFileModule,或者支持集成的NTLM身份验证的WindowsAuthModule)可以单独安装在服务器上,以提供您需要的具体功能。
可以在任何时候从服务器上完全卸载这些模块(请参阅图1),或为不需要它们的特定应用程序而专门禁用它们。
这将帮助服务器管理员快速地部署小型服务器,同时大大减少受攻击可能性,并通过只执行所需代码极大地提高性能。
图1 只使用需要的功能 (单击该图像获得较大视图)
组件化体系结构是IIS7.0的关键属性,它可以降低安全风险,并最大程度减少安装修补程序的必要。
它还支持特殊化的服务器部署,这样的部署可以将选择IIS功能和自定义组件组合起来,针对应用程序拓扑中的特定服务器角色对它们进行优化,例如,反向代理和缓存服务器、HTTP协议负载平衡器、或SSL和安全sentinel服务器。
IIS7.0所附带的所有服务器功能都基于新的公用可扩展API。
作为开发人员,您可以用您自己的功能替换任何现有服务器功能,也可以构建新的模块以添加到IIS7.0功能集中。
您是否希望用自定义的身份验证模块替换内置身份验证机制,或者提供新形式的响应压缩?
请继续。
新的可扩展API是对以前的ISAPI可扩展模型的根本改进,使您能够更灵活、更轻松增强服务器。
几乎服务器的每个方面(从核心服务器直到配置、管理和诊断)都提供了可扩展性,使您可以根据自己的需要扩展和裁减服务器。
本文稍后将提供有关可扩展性的更多介绍。
经过简化的部署和配置
以前的IIS版本所采用的集中化配置存储(人们亲切称其为元数据库)已经一去不复返了。
IIS7.0具有新的委派配置系统,它基于分布式XML配置文件的层次结构。
此层次结构由全局applicationHost.config文件(该文件包含服务器级别的配置默认设置)以及应用程序的目录结构中的分布式web.config文件组成。
这些文件与ASP.NET应用程序框架用于以可移植方式存储应用程序设置的web.config文件是相同的文件。
因而可以使用干净和强大结构化的XML指令,并排地存储IIS和ASP.NET配置。
下面是示例:
复制代码
xmlversion="1.0"encoding="UTF-8"?
>
过去,必须在机器级的元数据库存储库中显式配置IIS应用程序设置,然后应用程序才能正常工作。
而使用分布式web.config文件,应用程序则将必需的服务器配置封装在其目录结构中。
这就大大简化了部署,从而可以将独立的应用程序直接复制到目标服务器的应用程序目录中,从而以所需设置立即启动和运行。
新的配置系统还为服务器管理员提供了全面控制权,允许他们将某些配置选项委派给应用程序,同时由于安全或业务原因保持对其他选项的控制。
这样,托管服务器上的应用程序可以在其应用程序中直接设置必需的配置,而不需要求助于服务器管理员或使用外部配置面板。
在IIS7.0中,配置系统是完全可扩展的。
新模块可以添加它们自己的配置架构,从而使应用程序能够与IIS和ASP.NET配置一起并排配置其功能:
复制代码
自定义配置部分使用了与IIS7.0功能的配置相同的配置架构,从而利用了强大的类型属性值、集合语法和分层重写及锁定语义。
IIS7.0继续支持现有安装代码使用管理基础对象(ABO)API向原有元数据库写入数据,或使用那些使用更高级别的ActiveDirectory®服务接口(ADSI)和WindowsManagementInstrumentation(WMI)对象的脚本来配置IIS。
它通过提供模拟ABOAPI的兼容层来实现这样的支持(所有其他原有配置API均基于该兼容层),从而允许上述脚本就像在以前版本的IIS中一样读取和更改配置。
(有关元数据库兼容性的详细信息,请参阅本文后面的“经过改进的性能”和“向后兼容”两节。
)虽然新的结构化XML配置格式使您更容易在您喜欢的文本编辑器中处理配置,但IIS还是为管理员提供了很多管理工具和API,以简化服务器管理,并支持自动配置和部署。
经过改进的管理
IIS7.0提供了一组丰富的管理功能,使得用户可以在广泛的方案中管理服务器。
新的图形化IIS管理器管理工具取代了InetMgr.exeMMC管理单元,借助其基于任务的管理界面,使手动服务器管理变得非常简单(参见图2)。
图2 IIS管理器提供了图形化管理工具 (单击该图像获得较大视图)
IIS管理器允许您管理大多数IIS7.0功能,并监视服务器的操作。
该工具支持通过防火墙友好的HTTP/SSL连接进行远程管理,并且可以选择同时支持用于身份验证的基于Windows的凭据和其他凭据。
此外,该工具支持委派管理,从而让应用程序所有者能够远程管理其应用程序,而不必对服务器计算机具有管理访问权。
借助此功能,托管服务的用户可以在其家用桌面机上运行管理工具,并远程连接以管理其在托管服务器上的应用程序。
当然,服务器管理员对可以将哪些管理功能委派给应用程序所有者拥有完全控制权。
最后,该管理工具是完全可扩展的,它基于配置系统可扩展性,允许将自定义管理UI添加到工具中。
在中可以详细了解IIS管理器工具以及如何添加自己的管理插件。
为了获得更灵活的命令行管理,IIS7.0提供了appcmd.exe命令行工具(参见图3)。
此工具提供了一组全面的管理功能和比UI更好的批量操作支持。
通过这个功能强大的实用程序,可以轻松从命令提示符读取和写入配置、访问站点和应用程序池状态信息以及执行几乎任何其他管理任务。
图3 IIS7.0的Appcmd.exe命令行管理 (单击该图像获得较大视图)
利用appcmd.exe,可以创建和配置站点、应用程序、应用程序池和虚拟目录。
通过它,可以启动和停止站点、回收应用程序池、列出正在运行的工作进程、检查当前正在执行的请求以及搜索失败事件请求缓冲(FREB)跟踪日志。
还可以搜索、编辑、导出和导入IIS及ASP.NET配置数据。
该工具旨在使您可以灵活搜索受支持的服务器对象,例如,使您能够快速找到有特定设置集的站点,或已停止的应用程序池。
执行搜索时,可以对任何对象的属性使用任意数量的条件,包括使用数字范围和简单通配符字符串匹配。
Appcmd还支持类似WindowsPowerShell™中出现的链接操作,从而允许从单个命令行一起执行针对一组相关对象的多个操作。
例如,您可以用一条命令查找和回收承载某个站点的应用程序的所有应用程序池。
若要了解如何用AppCmd管理IIS,请参阅
.NETFramework和脚本
除了用IIS管理器或appcmd.exe命令行工具进行手动服务器管理以外,IIS7.0还为编程管理提供了丰富的选项。
首先,可以利用Microsoft.Web.AdministrationAPI通过.NET应用程序管理服务器。
也可以使用新的COMAPI直接管理IIS配置系统,或从诸如ASP或Windows®ScriptHost(WSH)这样的脚本环境访问它。
还有新的WMI提供程序,以及通过元数据库兼容层实现的对原有WMI和ADSI提供程序的支持。
Microsoft.Web.Administration是新的.NET管理API,它使托管代码应用程序可以轻松地以编程方式设置IIS站点和应用程序、访问重要状态和诊断信息以及按其他方式配置服务器。
通过让基于.NETFramework的应用程序轻松访问IIS配置及状态信息,为编写基于.NET的安装和管理应用程序,甚至是直接从ASP.NET页执行管理任务,提供了可能。
作为示例,图4显示了一个小型C#程序,该程序使用Microsoft.Web.Administration从命令行新建网站。
Figure 4 用Microsoft.Web.Administration设置站点
复制代码
usingSystem;
usingMicrosoft.Web.Administration;
classCreateASite
{
staticvoidMain(string[]args)
{
ServerManagerserverManager=newServerManager();
SitemySite=serverManager.Sites.Add(
"MySite","d:
\\inetpub\\mysite",8080);
mySite.ServerAutoStart=true;
serverManager.CommitChanges();
}
}
Microsoft.Web.Administration使IIS操作和配置任务能够直接在您选择的支持.NET语言的应用程序内部轻松完成。
它还使您可以轻松访问有关服务器的运行库状态信息,例如,正在运行的工作进程或当前正在执行的请求。
Microsoft.Web.AdministrationAPI是访问自定义.NET服务器模块内部的自定义配置和IIS管理器工具的UI插件的基础。
有关端到端服务器包的示例,包括用于增强Web服务器和相关配置及管理组件的图像版权处理程序,请参阅
在WindowsServer“Longhorn”时间范围内,IIS团队将为添加自定义管理对象或扩展现有管理对象而创建统一的可扩展模型,这些模型将使自定义管理功能通过不同管理功能(包括脚本和Microsoft.Web.AdministrationAPI)自动公开。
当您无法添加或扩展WindowsVista中的管理对象时,可以使用Microsoft.Web.Administration和其他API,就像现有IIS配置部分一样,访问和管理自定义配置部分。
构建Web服务器功能
IIS7.0使您能够根据您的需要塑造服务器,允许您添加或替换服务器中的任何功能,以便提供您需要的功能。
此功能的核心是全新的Web服务器可扩展API,所有现有IIS7.0HTTP功能都建立在它之上。
此API是公用的,这意味着您可以实现IIS7.0附带的任何功能。
这对IIS是第一次,并且是对以前的有限ISAPI可扩展模型的根本改进。
新的可扩展API是一组直观的C++类,这些类定义了Web服务器对象模型,并使一个模块能够在IIS上提供请求处理服务。
这些类被定义在WindowsVistaSDK中的\inc\httpserv.h头文件中。
与ISAPI比较,这些API功能更强大,而且易用性得到了极大增强。
这是如何实现的?
首先,新的API具有类型安全、良好封装的对象模型。
用新的服务器对象模型可以更轻松地进行开发,该模型为所有基本服务器对象和任务提供了专门的接口。
包括:
∙用IHttpRequest类检查请求
∙用IHttpResponse类管理响应
∙从IHttpServer类使用有用的实用程序功能
∙用IHttpUser类提供身份验证
∙用配置API访问您的模块的自定义配置部分
这些类公开了比以前更多的服务器功能(超过了构建IIS附带的所有特性所需的功能),但仍然比松散的类型化ISAPI接口更容易使用。
开发人员还将受益于经过改进的内存和状态管理模式。
大多数IIS7.0服务器API都使用服务器托管内存来存储它们返回的数据,而不是像ISAPI和大多数现有Win32®API那样需要您分配和管理缓冲区。
过去,这一直是ISAPI开发中最容易产生错误也是最令人厌烦的方面。
新的API还简化了很多复杂的请求处理任务,例如,响应缓冲、身份验证和为客户端准备响应数据。
几个月以前,我开始发表我的一系列博客文章,以解释新编程模型中的重大改进和模式。
如果您正在考虑针对IIS的C++开发,可通过访问以下网址参考相关内容:
IIS7.0还为扩展服务器提供了完全集成的.NETFrameworkAPI。
此外,这与自从Windows2000上的ASP.NET1.0发布以来ASP.NET提供的用于构建ASP.NET模块和处理程序的API是相同的。
但两者有区别,人们熟悉的ASP.NET模型允许现有ASP.NET模块和处理程序继续工作在IIS7.0服务器上,但实际上它已完全不同于以前的旧技术。
在IIS7.0中,ASP.NET有两个版本:
经典模式和集成模式。
经典模式的工作方式与它在以前版本的IIS中完全相同。
集成模式是新的平台默认设置,它使用全新的引擎来提供与IISWeb服务器前所未有的集成。
在集成模式下,可以用ASP.NETAPI开发IIS7.0模块,这样的模块可以直接与Web服务器集成,并且能够提供用基本C++API即可实现的几乎所有服务。
这基本上是两个方面的最佳结合:
像成员身份和角色管理这样的.NETFramework和ASP.NET2.0应用程序服务所具有的熟悉的接口和方便性,以及以前只对基于C的ISAPI组件可用的扩展服务器的原始能力。
除了能够编写新的ASP.NET模块(建立在集成模式的特定优势之上)之外,只需通过在web.config文件中更改少量配置选项,就可以使很多原有ASP.NET模块变得更为强大。
ASP.NET集成
使用IIS7.0,ASP.NET2.0不止是建立动态应用程序的优秀框架。
它还成为扩展IISWeb服务器的平台,这使得ASP.NET组件成为IIS请求处理管道的完整成员。
下面介绍它的工作原理。
在直到6.0版的IIS版本中,ASP.NET均作为独立的应用程序框架连接到Web服务器。
它负责处理向它注册的请求扩展(通常是.aspx和少量其他扩展名),并且它还为这些请求提供强大的功能,如窗体身份验证、响应输出缓存以及其他功能,包括由自定义ASP.NET模块提供的服务。
因此,只有向ASP.NET注册的内容类型才能受益于这些服务。
包括ASP页、PHP页、图像和CGI应用程序在内的其他类型则无法受益。
此外,由于运行库限制,即使对于ASP.NET资源,也无法在ASP.NET中实现某些Web服务器功能。
例如,它不能检查传出HTTP响应标头集并在发送到客户端之前修改它们。
当ASP.NET模块在IIS7.0中以集成模式运行时,将与本机C++IIS模块并排运行在统一请求处理管道中(参见图5)。
这意味着现有ASP.NET服务(如输出缓存、URL重写和由自定义ASP.NET模块提供的任何其他服务)现在可以应用于任何内容类型。
更好的运行库集成还使ASP.NET模块能够访问以前不可用的服务器功能,这样,在大多数情况下,不再需要编写本机IIS可扩展功能。
图5 在IIS6.0和IIS7.0中与ASP.NET集成 (单击该图像获得较大视图)
最后,在集成模式中,ASP.NET提供了少量新API,用于公开由于与IIS紧密集成而可用的其他功能。
其中包括检查所有响应标头(不管是谁生成了响应)的能力,以及将请求执行操作完全重写到另一个URL的能力。
通常,现有应用程序可以利用集成模式,而不需要使用特定于集成模式的功能的新ASP.NET模块。
只需通过更改配置,应用程序就可以执行诸如以下操作:
使用ASP.NET窗体身份验证和URL授权通过用户安全机制保护整个网站,或使用ASP.NETURL映射在应用程序中重写URL等。
如需查看利用集成模式阻止WebLeech热链接到站点图像的示例,请参阅实现这一点的示例ASP.NET模块:
ASP.NET模块来更好地利用它们。
如需查看利用现有应用程序的集成模式的详细步骤,请参阅我的文章:
经过改进的安全性
IIS7.0建立在IIS6.0基本代码之上,由于谨慎的编码实践和默认安全的设计原则,这些代码拥有已被证明的安全跟踪记录。
在此之上,IIS7.0引入了几处体系结构更改,以提供更强大的安全性,还引入了大量功能,以帮助您建立安全的Web应用程序。
减少受攻击的可能性是设计和部署安全系统的基本原则之一。
通过将IIS6.0的默认锁定方法发展到下一级别,在默认情况下IIS7.0安装的功能更少,从而可以锁定服务器的更多项。
通过进一步利用服务器的模块化性质来删除所有没用的功能,可以将服务器的受攻击可能性降到最低,从而极大地降低服务器被攻击的风险。
如果在服务器上的任何不用组件中发现了漏洞,不需要为了防止遭到攻击或修补漏洞组件,立即让服务器停止工作。
这样可以提高应用程序的可用性,并降低修补程序的管理成本。
除了核心安全性改进以外,IIS7.0还提供了大量安全功能,通过使用它们,可以进一步在服务器上锁定和部署安全应用程序。
IIS一直在为通过身份验证保护应用程序内容提供强大支持。
现在,利用ASP.NET集成模式,您可以使用流行的ASP.NET安全功能(例如,窗体身份验证、成员身份和登录控制)来为整个应用程序提供完整的身份验证和访问控制解决方案。
通常,可以在几分钟内完成此设置,而不必编写任何代码。
新的URL授权功能从ASP.NETURL授权功能发展而来,可以用于为整个应用程序配置声明性访问控制规则。
利用这些访问规则可以根据用户名和角色允许或拒绝对应用程序中对URL的访问。
URL授权与ASP.NET2.0成员身份和角色管理功能无缝集成在一起,可以有效地与ASP.NET窗体身份验证和登录控制一起使用,以快速启用应用程序的用户安全机制。
新的请求筛选功能提供了功能强大的锁定功能,该功能的一部分可在流行的URLScan工具中获得。
通过拒绝包含可疑数据的请求、保护敏感资源或强制执行进攻性请求限制,可以用请求筛选功能进一步锁定站点。
IIS7.0还进行了大量更改,旨在使安全设置的部署和管理更轻松。
新的IIS_IUSR匿名帐户是内置的,这意味着它不受密码过期的影响,而
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IIS7 探索用于 Windows Vista Web 服务器和更多内容 探索 用于 服务器 更多 内容