IIS 5
IIS (inetinfo.exe) -> ASP.Net ISAPI (aspnet_isapi.dll) -> ASP.Net worker process (aspnet_wp.exe) -> ...
IIS 6 经典模式
IIS (inetinfo.exe) -> ASP.Net worker process (w3wp.exe, application pool) -> ASP.Net ISAPI (aspnet_isapi.dll) -> AppDomain -> HttpRuntime.process(new HttpWorkerRequest()) -> HttpApplicationFactory.GetApplicationInstance() -> HttpApplication.BeginProcessRequest(new HttpContext(workerRequest)) -> IHttpModule -> IHttpHandlerFactory -> IHttpHandler
IIS 7 集成模式 vs. 经典模式
IIS是管道和过滤器, ASP.Net也是管道和过滤器, 干脆就别绕了, 直接合了吧, 就是集成模式. 在经典模式中, .Net的HttpModule只能在ASP.Net介入处理后才发挥作用, 而在集成模式中, HttpModule不仅能为ASP.Net应用提供支持, 也能为其它应用如PHP等提供支持.
前台线程 vs. 后台线程
Thread.IsBackground = true, 应用程序的退出必须等待所有前台线程退出, 不必等后台线程.
工作者线程 vs. IO线程
ThreadPool本身是为了性能, 两种线程的区分也是为了性能, ThreadPool提供了对两种线程的区别对待.
权限
<system.web>
<processModel username="" password="" />
<identity impersonate="true" username="" password="" />
</system.web>
IDE 支持
比如Web Deployment Project
复杂基于简单
理解管道模型后, 再去看附加的其它功能, 比如Security等. 而其它的组件则解决不能用管道模型解决的问题, 如Application Pool解决资源分配问题. 而有些复杂又可有可无的, 实在不应该加进来增加复杂度, 比如membership等.