当前位置 主页 > iis相关 >

    iis6架构模型与进程的关系

    栏目:iis相关 时间:2018-10-12 10:25

      IIS6的架构模型主要由如下三个组件构成:HTTP.SYS,W3SVC以及W3Core。作为一个全新的架构,IIS6.0有如下让人值得关注的新特点:
     
      HTTP.SYS。全新的内核监听模式
     
      IIS6.0新的应用程序隔离模式-工作进程隔离模式
     
      应用程序池
     
      工作进程
     
      Web管理服务(W3SVC)
     
      IIS6的架构模型避免用户应用程序访问或者修改关键的操作系统数据,提供了两种处理器访问模式:用户模式(UserMode)和内核模式(KernelMode)。如下图所示:
     
      一般地,用户程序运行在Usermode下,而操作系统代码运行在KernelMode下。KernelMode的代码允许访问所有系统内存和所有CPU指令。
     
      IIS5与IIS6架构模型对比
     
      从Performance上看,IIS5把IIS和application运行在不同的进程中,虽然他们之间采用了基于NamedPipe的异步通信方式,但是一个基于进程之间的通信对性能的影响确实不能从根本上解决。
     
      从Reliability来考虑,IIS5一台机器上只能运行一个workerprocess,每个Application运行在同一个进程中,虽然基于ApplicationDomain的隔离能提供一定的Reliability,但是一旦整个个进程崩溃,所有的Application都受影响。所以我们有时候需要提供一个基于Process的隔离性。
     
      基于Reliability的改进,IIS6引入了ApplicationPool。
     
      ApplicationPool就是一个application的容器,在IIS6中,我们可以创建若干ApplicationPool,在创建WebApplication的时候,我们为它指定一个既定的applicationpool。
     
      在运行的时候,一个ApplicationPool对应一个WorkerProcess:w3wp.exe。
     
      对于IIS6来说,同一台机器上可以同时运行多个WorkerProcess,每个WorkerProcess中的每个Applicationdomain对应一个Application。这样,在IIS6架构模型中Application之间不但能提供ApplicationDomain级别的隔离,你也可以将不同的Application置于不同的ApplicationPool中,从而基于Process级别的隔离。
     
      在IIS5.x中InetInfo.exe对Request的监听和分发是在UserMode中进行,在IIS6中,这种工作被移植到kernelMode中进行,所有的这一切都是通过一个新的组件:http.sys来负责。