Tuesday, June 12, 2007

The ASP.NET Process Model

Uder IIS 5.X, all ASP.NET-related requests received by the inetinfo.exe are delegated to aspnet_isapi.dll. It dispatches these request to an external worker process called aspnet_wp.exe. The aspnet_isapi.dll, hosted in the IIS process inetinfo.exe, passes the control to aspnet_wp.exe, along with all the information concerning the incoming request. The communication between the two is performed via named pipes, a well known mechanism for IPC (Inter Process Communication). The ASP.NET worker process performs a considerable number of tasks, together with the ISAPI extension. Each web application, corresponding to a different virtual directory hosted on IIS, is executed in the context of the same process, the ASP.NET worker process. To provide isolation and abstraction from the execution context the ASP.NET model introduces the concept of Application Domains, in brief AppDomains. They can be considered as lightweight processes.

Under IIS 6, incoming requests are handled by Http.sys program at lower – Kernel – level. Then It routes the request to the right application pool. A worker process (W3wp.exe) is attached with every application pool.
In IIS6.0, aspnet_wp.exe process is not used, in favour of another process called w3wp.exe. Furthermore, inetinfo.exe is no longer used to forward HTTP requests to ISAPI extensions, although it keeps running for serving other protocols requests.

No comments: