一个Web应用程序就是一组WebFrom和相关的程序集,而它们位于虚拟目录的树结构中。当机器上一个或者多个Web应用程序运行的时候,机器上会存在两个进程。
INTINFO.EXE进程代表着IIS。ISAPI筛选器aspnet_isapi.dll会在该进程中接收所有最终要发送至Web应用程序和服务的HTTP请求,然后应用IIS安全策略并且使用命名管道(named pipe)将请求传输至aspnet_wp.exe进程中。如果在接收到请求的时候,aspnet_wp.exe进程还没有启动,那么aspnet_isapi.dll这个ISAPI筛选器就会负责启动进程并且创建合适的命名管道。
aspnet_wp.exe进程(wp是Woker Process的缩写,即工作者进程)根据Web应用程序或者机器上运行的Web服务创建同等数量的AppDomain。不管机器上运行着多少Web应用程序或者Web服务,它们都在这个进程中被执行的,Web应用程序之间的隔离源于由CLR确保AppDomain之间的隔离。
示意图:
在IIS6.0中已经没有了命名管道,执行过程也相应的发生了一些变化。asp.net在IIS6.0中使用的多个CLR的工作线程。在Window Server 2003下运行IIS6.0还实现了另外一种架构。在这种情况下,IIS个ASP.NET就在名为w3wp.exe的同一个进程中执行了。