In the Web world today. US and Apache arc the two leaders in Web servers. Although a leader for a very long time. Apache has slowly been losing ground to lIS over the last few months as covcred by etcraft.
A new version of US waiting in the wings is further set to crode the domiŽnance of Apache by introducing a huge bunch of features. We shall take a look at these features in the coming months. This month we start off with a two part look at the way US? manages the feaŽtures it provides using modules in a pipeline rather than a monolithic implementation.
Traditionally. lIS has always been an all-or-nothing solution. That is. you eiŽther install lIS in full or don't install it at all. Evcn in Windows Server 2003. alŽthough it was not installed by default. when you chose to insta II lIS Web Server. it would install all the features associated with the Web server- whether you wanted them or not.
In lIS? this approach has been changed completely. Rather than havŽing everything installed by default. you can pick and choose the modules you want to install. Before we get into that. let's look at the architectural differences between lIS6 and lIS? that make this modularity possible.
US6 has what's called the Classic Request Pipeline. This is the traditional method in which the core Web server can basically do one thing - pick up a reŽquested file and send it to the client. It also has a n umber of other features built in - such as Authentication (AnonyŽmous. Basic. NTLM. etc). Logging.
Compression. etc. Using all of this, the Web server is great at picking up static files such as HTML and images and sending them back to the client. But what about non-static pages such as ASP/ ASENET or PHP? This is where a deterministic feature creates a new path in the request pipeline. It has basically two parts - one is mapping that tells the Web server that if a file of a particular type is requested then it should not simply send it to the user but divert it to the second part. The second part in turn is either a CGI or an ISAPI component that loads the file and processes it before returning the output back to the original pipeline, so that it is sent back to the client. Now comes the slightly strange part. The new path that is created can also have its own set of features. For instance, ASP.NET 2.0 also has its own authentication rouŽtines - Forms or Windows - that can be used in its pages. Not only that, ASP.NET also has its own deterministic mapping for processing different types of ASP.NET files. Refer to the diagram on the IIS6 architecture to understand this.
lIS 7 Architecture
In IIS 7, the architecture has been changed completely. Instead of having a pipeline that diverts in to different paths. IIS7 now has what is called an 'InteŽgrated Pipeline.' This uses the modularŽity of IIS 7 architecture to use features from both IIS as well as compatible soluŽtions like ASP.NET.
To give a better understanding of what this means, consider this: the issue of feature duplication.in IIS6 in different pipelines, say Authentication in both IIS and ASP.NET is now done away with. Each type of authentication is simply a module for IIS 7 that can be integrated into the main IIS pipeline itself. This means that now IIS 7 itself can have not just Anonymous, Basic and NTLM auŽthentication, but also Forms and WinŽdows based authentication. This goes for all other such features as well.
In fact, the whole concept of having ISAPI or CGI as a jup-off point into a different pipeline is now redundant (alŽthough still available in case of need for backward compatibility). This allows ASP.NET itself to be a part of the IIS 7 pipeline rather than running as a new path in the system. Now these are not the only modules one can have Žthere are more than 40 modules avail7 out of the box that can be used on the websites on the IIS7 web server. There are many others that one can either download or actually go ahead and write in .NET using the IIS 7 SDK. But there is one more feature of this modular approach that makes it a real killer application.
Remember that in IIS6, ASP.NET was an ISAPI extension and a 3rd party platform such as PHP was a CGI app? CGI traditionally has been slower as well as less supported on IIS6 due to its naŽture. However, due to the integrated naŽture of the pipeline in IIS 7, PHP can now be part of this pipeline as well and start
using the modules of the pipeline like any other module. That is to say, PHP too can start using features like Forms and Windows authentication just like ASP.NET 2.0 can within IIS7. This gives PHP developers a great new Web server platform to develop on to be able to take advantage of features that the Web server provides rather than writing it themselves.
This, however. is an article for another day. We'll take a look at exactly how to do this on IIS7 next month. Till then, head over to see some samples of other modules that are available as well.




Reply With Quote
Copyright Techfuels
Bookmarks