IIS 6 and IIS 7 - How different are they?

This is something that I wanted to write from a long time now.Yesterday a friend of mine asked me exactly the same question and I thought what a better time than now to write an entry ... To start off lets begin by understanding the request pipeline that exists within IIS 6. For IIS 6, security was the major area of concern along with a lot of conceptual changes, in comparison to it's predecessor. All in all, IIS 6 was an engineering release. The diagram below is how the request pipeline worked for IIS 6.



A point to be noted in the above diagram is the monolithic style of a process that was technically carried out by the w3core.dll for a worker process. Moving on, take note that in the above process we may have parts of the pipeline that we might never use within our environment but they would all be included in the webserver request and response process conceptually. We also had to patch the server for instance for a feature that we may not even be using. Why? because that was included in the same process and was part of IIS. However, these things have changed in IIS 7.

Note: I will be considering the ASP.Net request queue later.

Below is the IIS 7 architecture. From the first look itself we can understand that the present architecture is far more modular than IIS 6. It provides us with lots more flexibility and opportunity to customize the server depending on our environment. What has happened here is that all the features we saw clubbed earlier in IIS 6 are now taken out of the main process and are now available in different modules.



We can plug these modules in or out of the webserver itself on the basis of our needs. Further, that helps us in configuring a very lite-weight server because if you don't need a feature you can choose not even to install it. For example, if you plan, not, to make use of Basic Authentication then you can choose not to install the feature altogether. I feel this is a great change that can help many IIS admins in managing their environments even more better. You have over 40 modules that you can choose to install during the setup.

Another great feature that you get from IIS 7 is it's extensibility. With IIS 7, two new IIS API's were introduced namely MWA (Microsoft.Web.Administration) and MWM(Microsoft.Web.Management) using which it is pretty easy to write a managed module that can be directly plugged in to the webserver which will receive the same treatment as that of the other installed modules on the server.

Over the past 6-8 months Microsoft/IIS team has released great extensibilty modules which can be found at www.iis.net/downloads.

Moving on with the request pipeline processing, lets now figure out how IIS 6 processes an asp.net. If you check the below diagram, after initial authentication by IIS, the requested is forwarded to the aspnet_isapi.dll which then takes care of processing the ASP.NET request. Check out the duplication of a few modules in the same process, which is not entirely necessary.




With IIS 7, this is no more the case. Because of the modular architecture there would no need for any duplication, the ASP.Net components are plugged in directly into the IIS request queue. This is what is known as the Integrated Pipeline architecture. This feature has huge advantages when we start considering complex environments where in a lot of processing is carried out on every request.


Apart from the technical aspect of IIS 7, I feel the new UI for the IIS Manager is also something that a lot of IIS admins will be very thankful for. If you haven't seen it already it has this very similar tree view structure on the left-hand side. In the center pane, you would see two sets of choices that are the Features View and the Content View. The features view is exceptional in showing the admin all the different features that are included for the selected option. And towards, the right-hand side you have this very handy Actions pane that lets you carry out various actions depending upon the feature you have selected.

More good news, if you are a good developer and have written your own module well you can check out this blog for more insight on how to create a UI for the same.

To sum it up IIS 7 gives us great customization and modularity features along with all the stability and security it has carried on from IIS 6.

To know more about the new modules and features on top of IIS 7, check out IIS.Net Downloads website and my previous posts on Running PHP on IIS 7 with FastCGI and the IIS 7 PowerShell Provider

No Comments