Handler
is an agent of communication or a medium which is responsible for
communication in the absence of the actual user. Technically,
a Handler is a class which is responsible for
Instantiation of a class i.e; allocation of memory.
Console
applications or Windows applications do not have handlers. We declare
a class and create an object of that class in the Main() method. We
as a developer are solely responsible for handling the class –
specifically - instantiation of the class.
However,
Web applications have handlers. In GUI Web Applications we never
create an object of the “_default” page which inherits the Page
class.
In
Web Services, the Web Service class is never instantiated.
In
WCF, the Service class, which inherits the IService Interface is
never instantiated.
Now
comes the question – Who instantiates the above mentioned
classes?
Behind
the scene, the Handler is responsible for instantiation of the above
mentioned classes. ASP.NET maps HTTP requests to HTTP handlers
based on the extension of the requested file (type of file). Each
HTTP handler can process individual HTTP URLs or groups of URL
extensions in an application. ASP.NET includes several built-in HTTP
handlers:
a) ASP.NET
– System.Web.UI.PageHandlerFactory
b) Web
Service – System.Web.Services.Protocols.WebServiceHandlerFactory
c) WCF
– System.ServiceModel.Activation.ServiceHttpHandlerFactory
There
are different drivers for different protocols. The driver or API of
the protocol (ex – http.sys) has to have the ability to
differentiate and resolve requests.
.sys
files are the drivers for protocols. http.sys file
is a driver or API or listener for the HTTP protocol. You can say
that HTTP is abstraction, while http.sys is encapsulation. http.sys
file handles the request and response in HTTP. The http.sys file is
located in C:\Windows\System32\drivers\ folder.
When
a request arrives on the server, the drivers for the protocols (.sys
files) handles that request and forwards that request to a particular
handler according to the extensions.