I had the opportunity to attend CFUnited on Friday. Now, in previous years I would have not attended the event (save some of the parties), but things changed a lot this year. In a major change of tack, Microsoft had a major presence at the conference and put on a number of interesting sessions. Some highlights from my day there:
Atlas + ColdFusion = Neato
IIS7: Apache Killer?
IIS6 is a very, very solid web server. But it is not without its issues. One of the most prevalent is that configuration generally requires one have root access to the box where the server resides, which is not really an option in many shared hosting scenarios. The other flaw in the system is that it is not the most extensible package. Yes, one can write ISAPI extensions and filters, but everyone I know who has written one has very little desire to ever go down that path again. I shall discuss extensibility below, but first configuration.
An End-to-end overview of Microsoft’s New Web Application Server, IIS7, Drew Robbins explained how the next version of IIS will address these issues. In a radical departure from previous versions of IIS, one can manipulate the configuration in a human-intelligible Xml file. Furthermore, one can override web-server configuration settings in individual sites with each sub-site’s web.config file. Fear not server admins—you can specify what, if any settings, can be overridden down to individual nodes and attributes. And, if one does not want to delve into the Xml, Microsoft also provides a graphical interface to manage the server.
Now, anyone who has deployed any significant ASP.NET application (or, come to think of it, anything significant to IIS), probably has spent a fair amount of time tracking down configuration differences between the development environment and the staging/deployment environments. Oftentimes while pulling out hair, and possibly drinking heavily. With IIS7 this will largely go away because one can embed the configuration settings with the application’s configuration. Kind of like how one can use .htaccess files to tweak apache for LAMP applications.
These new features seem to be squarely aimed at some of Apache’s main strengths—having text-based, inheritable configuration files to ease maintenance and application-specific configuration issues. While also covering the one of the biggest weaknesses—one need to understand the gory details of the lengthy httpd.conf file to do much with the server.
IIS7: Kiss My ISAPI Goodbye
The other big new feature is that one need not delve into C++ to extend the server. Any site or virtual folder on IIS 7 can be extended by writing a class that implements IHttpModule and registering it properly with the server. I can see some neat uses for this, such as implementing visitor tracking on otherwise static sites with ease.
This is not to say previously existing, functional ISAPI extensions are not going to be supported—they very clearly are. The entire demo today was shown using ColdFusion running on IIS using the current ISAPI extension.
IIS7: FREB Is My Buddy. And Your’s Too.
Probably the neatest feature was the builtin Failed Request Event Buffer (FREB). It allows an administrator (or developer) to define various criteria, such as Http response codes and page execution times, and log a plethora of information about those failed requests. There is one very neat feature specific to .NET applications: this event buffer can also log your custom trace events. I can see this feature being very handy when you are debugging some of those production-only race conditions.
FREB, like just about everything in IIS7, dumps to an Xml file for easy parsing into whatever you use to analyze or track such things.
Hey! I Wanna Play With IIS7
Running IIS7 requires Windows Vista Beta 2. Unfortunately, the preview program is now closed so if you did not sign up, you are out of luck, at least for the time being.
To keep up to date on IIS7 (or all things IIS), check out IIS.net.