In my opinion 2 of the more important parts of the new architecture in IIS 6.0 are:

  • the addition of a HTTP endpoint that is separate and distinct from IIS, i.e. HTTP.SYS
  • the new process model in IIS 6.0, which is called Worker Process Isolation Mode (WPIM).

The separation of the HTTP endpoint from IIS is very interesting, as it allows any application to partake in the processing of HTTP traffic. This allows any application, including the WWW Service in IIS, to leverage a common component for the processing of HTTP traffic .

What allows HTTP.SYS to determine what HTTP traffiic to route to an application, is a set of API's that are called by an application, letting HTTP.SYS know what URI's it is interested in processing. In fact this is how IIS 6.0 works, and in the near future many of the upcoming applications and technologies will be able to provide and host web services in the same way. Examples include SQL Server 2005 and Indigo.

So with HTTP.SYS being part of the Windows 2003 and XP platforms and with its concept of seperating the URI Endpoint from its application processing logic (i.e. applications/processes) what does it mean? :

  • Well 1st and foremost, as mentioned above it allows you to have more than one process/application have URI endpoints on the platform, all leveraging a common component that handles cross cutting concerns such as request queuing etc..
  • It also allows for one central component to handle the parsing/verification or logging of HTTP traffic. This gives you a common infrastructure on which to reuse and leverage multiple times, as well as a centralised logging store of HTTP traffic to a system.
  • As applications must register their interest in a URI namespace with HTTP.SYS, it is only these URL requests that get processed as valid URI's
  • since the queuing of valid URL requests is seperated from the application/process, it allows for requests to be queued while health monitoring tasks (such as recycling and/or re-starting) are performed.

In the next posting, I will cover some of the configuration tools and API's for HTTP.SYS.

ps

At our last MSDN event/session here in Ireland, Nick Grattan delivered a great session on how SQL Server 2005 is able to host web services using HTTP.SYS. Nick has pointed out on his blog, that after the session, I mentioned to him that HTTP.SYS was available on Windows XP with SP2 installed (oppps, sorry!!! totally forgot to blog about it!). As I was not 100% certain where SQL Server would work with the HTTP.SYS on XP SP2, I took the example he has on his blog and with a few changes on my particularly abused installination of SQL Sever 2005 I got WSDL back from the example URL that Nick lists in his blog, i.e. http://localhost/sql/adventureworks?wsdl. Btw, it was BETA 2 I did this on. (As an aside, if you need more information on this, I would suggest having a look at this MSDN article,  Overview of Native XML Web Services for Microsoft SQL Server 2005 and also there is going to be a webcast on web services in SQL Server 2005 on the 8th of december).