The new architecture of Internet Information Services (IIS)
7.0 has the following components. Figure 1 shows all the components in IIS 7.0.
·
Windows Process Activation Service (WAS)
·
Web server engine
·
The new approach to the Request-processing pipelines
Figure 1
Let us see each of these components in detail.
Note: Components shown in Figure 1 are illustrated for a
better understanding. MSDN (Microsoft) may have its own version of the diagram.
Windows Process Activation Service
Windows Activation Service is a new service that is added to
the IIS components. This service manages the configuration of Application pools
and worker process. We have dealt with Application pools and worker process in
my previous article Understanding
Internet Information Services - Part 2. “When IIS 6.0 runs in worker
process isolation mode, we have the option of grouping different Web
applications into groups. This concept of grouping applications is known as
Application pools. An application pool is a group of one or more Web Sites that
are served by a worker process or set of worker processes.”
Before we understand the functionality of Windows Process
Activation Service, we need to understand some new terms in IIS 7.0: ApplicationHost.config
file and Listener adapters. ApplicationHost.config is the IIS 7.0’s metabase file
that is located in the directory “%windir%\system32\inetsrv\config.” It is
similar to the web.config file as it is an XML file. Listener adapters are
components that establish communication between WAS and protocol listeners. Windows
process Activation Service reads certain information from the ApplicationHost.config
file and passes that information to the listener adapters on the server. Once
listener adapters receive configuration information, they configure their
related protocol listeners and prepare the listeners to listen for requests. This
is how the windows process activation service manages the configuration.
Web Server Engine
IIS 7.0 includes a Web server engine in which we can add or
remove components called modules. A Module has some features that the server
uses to process requests. Let us list down some modules and discuss each one in
detail.
1.
HTTP Module –This module mainly deals with the request processing
pipeline. This is an integrated pipeline that allows both the managed and
native code to run. With IIS 7.0, developers can create HTTP modules by using
new API's. Typically all the functionality is exposed as a class that has all
the operations as methods. The extensibility has been the major feature for
developing the IIS 7.0. The main functionality of HTTP module is responding to
the information and inquiries sent in client headers, to return HTTP errors, to
redirect requests, and more.
2.
Security Module – This module in IIS 7.0 is related to the security in
the request processing pipeline. Security means the authentication schemes for
the server. In my previous article Understanding
Internet Information Services - Part 1 we discussed various authentication
mechanisms supported by IIS.
3.
Content Modules – This module deals with managing the contents of the
virtual directory. Whenever a request is received from client this module takes
up the request and starts the processing. For example, if a request for
ABC.html comes from a client then this module looks for the file ABC.html in
the appropriate virtual directory. Generally content module deals with the
static content. In case of no file name specified, content module is
responsible for displaying all the files in the directory or sending the
default file.
4.
Compression Module – This module deals with the compression in the
request processing pipeline.
5.
Caching Module – For any ASP.Net programmer caching should not be a new
feature. Caching is storing a result page while sending the response to the
client browser. Later on the same stored response can be sent for the multiple requests.
This feature can tremendously improve the efficiency of the request processing
pipeline. This module deals with the management of caching. This involves
storing a cache, invalidating a cache and also sending the cached response for
the similar requests.
6.
Logging and Diagnostics Modules – Logging in IIS 7.0 may look new for
ASP.net programmers but it is widely used feature for web server administrators.
IIS 7.0 logs comprehensive information about each and every request received by
the server. It makes note of the time of request, resource name, IP address of
the client, etc. This module deals with all these features.