Saturday, December 17, 2011

How IIs process for the ASP.Net Requests?

Background:

"WebDev.webServer.exe" takes care of all requests and responses of web app.

Worker Process : w3wp.exe runs Asp.net application in IIS, which manages request/responses from client.

Application Pool: container of worker proces. used to seperate sets of IIS worker processes.

Application pools enables a better security, reliability, and availability for any web application.

IIS :

1.Kernel Mode

2. User Mode

Kernel mode is introduced with IIS 6.0, which contains the HTTP.SYS.  So whenever a request comes from Client to Server, it will hit HTTP.SYS First.

image19

Whenever we creates a new Application Pool, the ID of the Application Pool is being generated and it’s registered with the HTTP.SYS. So whenever HTTP.SYS Received the request from any web application, it checks for the Application Pool and based on the application pool it send the request.

image07

2. User Mode

we have Web Admin Services (WAS) which takes the request from HTTP.SYS and pass it to the respective application pool.

image16

When Application pool receive the request, it simply pass the request to worker process (w3wp.exe) . The worker process“w3wp.exe” looks up the URL of the request in order to load the correct ISAPI extension. ISAPI extensions are the IIS way to handle requests for different resources. Once ASP.NET is installed, it installs its own ISAPI extension (aspnet_isapi.dll)and adds the mapping into IIS.  

When Worker process loads the aspnet_isapi.dll, it start an HTTPRuntime, which is the entry point of an application.HTTPRuntime is a class which calls the ProcessRequest method to start Processing.

image01

When this methods called, a new instance of HTTPContext is been created.  Which is accessible usingHTTPContext.Current  Properties. This object still remains alive during life time of object request.  Using HttpContext.Current we can access some other objects like Request, Response, Session etc.

image12

After that HttpRuntime load an HttpApplication object with the help of  HttpApplicationFactory class.. Each and every request should pass through the corresponding HTTPModule to reach to HTTPHandler, this list of module are configured by the HTTPApplication.

Now, the concept comes called “HTTPPipeline”. It is called a pipeline because it contains a set of HttpModules ( For Both Web.config and Machine.config level) that intercept the request on its way to the HttpHandler. HTTPModules are classes that have access to the incoming request. We can also create our own HTTPModule if we need to handle anything during upcoming request and response.

image05

HTTP Handlers are the endpoints in the HTTP pipeline. All request that are passing through the HTTPModule should reached to HTTPHandler.  Then  HTTP Handler  generates the output for the requested resource. So, when we requesting for any aspx web pages,   it returns the corresponding HTML output.

All the request now passes from  httpModule to  respective HTTPHandler then method and the ASP.NET Page life cycle starts.  This ends the IIS Request processing and start the ASP.NET Page Lifecycle.

image08

 

 

List of Asked Interview Questions: C# .NET SQL MVC WCF Questions