VS.NET(C#)-5.15_IIS6架构模型与进程的关系
IIS6架构模型与进程的关系
IIS 6的架构模型主要由如下三个组件构成:HTTP.SYS,W3SVC以及W3Core。作为一个全新的架构,IIS6.0有如下让人值得关注的新特点:
Ø HTTP.SYS。全新的内核监听模式
Ø IIS6.0新的应用程序隔离模式-工作进程隔离模式
Ø 应用程序池
Ø 工作进程
Ø Web管理服务(W3SVC)
IIS 6的架构模型避免用户应用程序访问或者修改关键的操作系统数据,提供了两种处理器访问模式:用户模式(User Mode)和内核模式(Kernel Mode)。如下图所示:
一般地,用户程序运行在User mode下,而操作系统代码运行在Kernel Mode下。Kernel Mode的代码允许访问所有系统内存和所有CPU指令。
关于User Mode和Kernel Mode以及一些Windows底层的一些内容,推荐大家看看《Microsoft Windows Internal》Four Edition, Authored by Mark E.Russinovich & David A. Solomon。
IIS5与IIS6架构模型对比
IIS5角度
从Performance上看,IIS5把IIS和application运行在不同的进程中,虽然他们之间采用了基于Named Pipe的异步通信方式,但是一个基于进程之间的通信不能从根本上解决对性能的影响。
从Reliability上看,IIS5一台机器上只能运行一个worker process,每个Application运行在同一个进程中,虽然基于Application Domain的隔离能提供一定的Reliability,但是一旦整个个进程崩溃,所有的Application都受影响。
从Mode来考虑,在IIS 5.x中InetInfo.exe对Request的监听和分发是在User Mode中进行。
IIS6角度
IIS6引入了Application Pool,ApplicationPool就是一个application的容器。在IIS 6中,我们可以创建若干Application Pool,在创建Web Application的时候,我们为它指定一个既定的application pool。
从Performance来考虑,IIS6同一台机器上可以同时运行多个Worker Process,在运行的时候,一个Worker Process(w3wp.exe)对应一个Application Pool。一个Application Pool包含一或多个Worker Process。
从Reliability来考虑,将不同的Application置于不同的Application Pool中,从而基于Process级别的隔离。一个Application对应一个Application domain。Application之间能提供Application Domain级别的隔离。
从Mode来考虑,在IIS 6中,这种工作被移植到kernel Mode中进行,所有的这一切都是通过一个新的组件:http.sys来负责。