How is application pool implemented in IIS?
- Is each application pool equivalent to a .Net AppDomain?
- Or it is a equivalent to a .Net process?
- How is Application pool related to IIS w3wp.exe?
How is application pool implemented in IIS?
It's an oversimplification to say it this way but the best way to think about it is that the AppPool is a pool of AppDomains. All of these AppDomains run within a single worker process (w3wp.exe
).
1 . Is each application pool equivalent to a .Net AppDomain?
No, an application pool may have several AppDomains. Each AppDomain represents a single running ASP.NET Application. Many ASP.NET Applications may belong to a single Application Pool.
2 . Or it is a equivalent to a .Net process?
Not quite. See below.
3 . How is Application pool related to IIS w3wp.exe?
An application pool represents a limited number of worker processes that may host a potentially larger number of applications. This is similar to how a SQL Connection Pool shares a limited number of connections among an arbitrary number of requests.
By default, an Application Pool gets one Worker Process (w3wp.exe
), and it's usually best to leave this setting alone unless you know what you're doing. Still, an Application Pool can be configured to use any number of processes.
The Worker Process is actually the resource that's being pooled here, not the AppDomain. There will always be the same number of AppDomains as there are ASP.NET Applications (unless one is in the middle of shutting down, or an application creates its own AppDomains), but the number of Worker Processes is independent; an Application Pool gives you a specific number of Worker Processes to handle requests for a specific number of AppDomains.
A setting of 1 (the default) for the number of worker processes in an App Pool means that all Applications/AppDomains in the pool share the same worker process.