ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 深入剖析IIS 6.0(5)(转)

深入剖析IIS 6.0(5)(转)

原创 Linux操作系统 作者:rain0903 时间:2019-01-31 21:42:04 0 删除 编辑
■ W3SVC

  W3SVC也许是IIS 6.0体系中最不令人注意的组件,不过这并不说明它不重要。W3SVC的任务是根据配置数据的设置创建和监视工作线程,由工作线程运行Web网站应用。在IIS 5.0中,与IIS 6.0 W3SVC组件最接近的是IIS管理服务,IIS管理服务是Inetinfo的一部分;因此,如果Inetinfo出现问题,IIS管理服务也会出现问题,而且此时的IIS管理服务不能再重新启动Inetinfo或其他故障的应用程序。在IIS 6.0中,W3SVC作为一个独立的进程运行,Web应用的故障不可能波及W3SVC,因为W3SVC之内根本没有第三方的代码运行。W3SVC总是处于运行状态,因此它能够监视Web应用的健康状况,并在必要时采取行动。由于这一策略,服务器能够根据用户指定的参数监视和重新启动应用程序。

  ■ http.sys

  IIS 6.0体系设计中最重大的变化是加入了http.sys驱动程序,http.sys驱动程序的任务是处理HTTP请求,而且它在内核模式下执行操作。不要小看这一改变,将处理HTTP请求的任务从IIS 5.0、IIS 4.0的用户模式改变到IIS 6.0的内核模式标志着新一代IIS服务器的诞生。

  在Win 2K和NT 4.0中,IIS在用户模式下运行。运行在用户模式下的应用程序不直接与硬件通信,它们直接调用的是一些标准过程,这些标准过程或者将数据传入内核模式的组件(例如网卡驱动程序,图形子系统),或者调用内核模式组件的函数,以此完成保存文件、设置IP地址、将HTML文件发送到网络之类的任务。

  用户模式和内核模式之间的转换是一项开销很大的操作,服务器首先从内核模式的TCP/IP栈将传入的HTTP请求传递给用户模式的Winsock,由Winsock将请求传递给IIS。从内核模式到用户模式的切换很快发生,但不可避免地给处理过程带来瞬间的延迟。当负载较大时,这种延迟不断累加,同时由于这种转换是必不可少的,所以管理员根本没有办法优化处理过程。

  IIS 6.0的https.sys内核模式驱动程序极大地减少了用户模式和内核模式之间的切换次数。http.sys监听着HTTP请求,决定由哪一个用户模式的进程来处理该请求,或者是否由驱动程序本身返回用户请求的内容。

  IIS 6.0在用户模式下运行,完全依赖内核模式的http.sys作为接收用户请求的服务器引擎。因此,http.sys必须能够在任何时候作出相应,必须具有极高的可靠性。用户代码可能导致进程出错,所以微软把http.sys设计成不执行任何用户代码,这样,即使应用程序出现了故障,也不会影响到IIS 6.0本身,IIS 6.0仍能够照常监听HTTP请求。

  如果要从内核模式的缓冲区返回静态的应答,一个高速的、内核模式的、不允许运行应用程序代码的HTTP处理器是十分理想的,它减少了切换到用户模式的昂贵开销,能够从内核模式的缓冲区快速返回应答。IIS 6.0的http.sys就管理着这样一个缓冲区,而且使用了高度优化的启发式缓冲区算法来确定哪些内容要放入缓冲区,例如,http.sys可能只缓冲那些出现了一次以上请求的内容。

  由于http.sys直接从应答缓冲区提取静态内容,不必再切换到用户模式,所以与IIS 5.0的性能相比,IIS 6.0的整体性能有了显著提升。根据微软的资料显示,WebBench基准测试表明IIS 6.0返回静态内容的速度要比IIS 5.0快150%。即使以IIS 5.0的隔离模式运行IIS 6.0服务器(这时,IIS 6.0的体系结构与IIS 5.0的相似),同样也能从http.sys驱动程序的应答缓冲区和其他改进之处获益。

  另外,微软在http.sys驱动程序中采用了许多优化的算法,使其能够将请求直接转发到适当的工作进程。在IIS 4.0和IIS 5.0中,必须通过多个步骤才能确定进程的哪一个实例拥有了应当接收当前请求的Web应用,但在IIS 6.0中,http.sys注册了所有IIS 6.0应用,赋予每一个进程一个句柄,IIS内部利用这些句柄来标识注册的应用程序要用到的一个或多个名称空间。因此,当http.sys接收到一个HTTP请求,它能够很快地将请求从内核模式的http.sys传递到正确的用户模式的Web应用。

  http.sys驱动程序还要执行其他一些任务,其中包括:

  ⑴ 将传入的URL与各种长度、格式方面的规则进行比较。

  ⑵ 管理传入请求的队列。

  ⑶ 担负着记录IIS Web网站日志信息的任务(从而提高了记录日志的性能)。

  ⑷ 实施带宽限制策略以及支持TCP/IP级的管理。

  ⑸ 实现客户证书请求服务(但不支持安全套接字层——SSL)。

mydear 发表于:2007.08.01 20:15 ::分类: ( 一般分类 ) ::阅读:(1次) :: 评论 (0)
-->
===========================================================
深入剖析IIS 6.0(2)(转)
===========================================================
选择“添加或删除”角色,在“配置服务器”向导中可以看到一系列可配置的服务器角色,其中就有“应用程序服务器(IIS,ASP.NET)”选项,如图二,选中该选项之后点击“下一步”,向导提供了是否安装ASP.NET和Microsoft FrontPage服务器扩展的选项。可以看到,微软在这里采用了一种新型的“安装任何部件之前总是征求用户意见”的IIS安装策略,对于微软来说,这是一个彻底的转变,证明微软确实在认真对待安全问题。



图二

  使用控制面板中的“添加/删除Windows组件”功能还要灵活一些。在向导中选择“应用程序服务器”,再点击“详细信息”,向导显示出一系列组件的清单,其中就有“Internet信息服务(IIS)”选项,还有一些选项是以前的“添加/删除Windows组件”向导没有提供的,表一概括比较了IIS 6.0和IIS 5.0 的主要组件。如果从这里安装IIS 6.0,最后得到的Web服务器可能只支持静态内容(除非在安装期间选中了某些扩展组件)。选中Internet信息服务选项,再点击“详细信息”,可以看到IIS 6.0的子组件,如图三所示。



图三

表一:IIS 6.0和IIS 5.0组件比较
IIS 6.0 IIS 5.0
应用程序服务器 Internet信息服务
应用程序服务器控制台 公用文件
ASP.NET 文档
启用网络COM+访问 文件传输协议(FTP)服务
启用网络DTC访问 FrontPage 2000服务器扩展
Internet信息服务 Internet信息服务管理单元
后台智能传送服务(BITS)服务器扩展 Internet服务管理器(HTML)
BITS管理控制台管理单元 NNTP
BITS服务器扩展ISAPI SMTP
公用文件 万维网服务
文件传输协议(FTP)服务
FrontPage 2002服务器扩展
Internet信息服务管理器
Internet打印
NNTP服务
SMTP服务
万维网服务
Active Server Pages
Internet数据连接器
远程管理(HTML)
远程桌面Web连接
在服务器端的包含文件
WebDAV发布
万维网服务
消息队列
Active Directory集成
公用
下层客户端支持
MSMQ HTTP支持
路由支持
触发器


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7178747/viewspace-161962/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2006-04-07

  • 博文量
    71
  • 访问量
    33155