I had an interesting experience this weekend. I fell in love with IIS7 on Vista. You know the feeling, I'm sure you've had it before. That feeling when you finally see something or someone for their full potential, and you start dreaming of all the things you want to do together. This weekend I had that moment with Vista for the first time.
Duh, you're probably saying, he's a Microsoft manager who's been working on the product. I'd expect him to say that. Especially now that Vista is almost done and it's time for the marketing drum beat to start pounding. Well, my fellow cynics, I understand your skeptisim. Let me tell you my experience from this weekend, then you can decide if it is all just marketing b.s., or if there is something in there for you to love.
There are so many things that are better with Vista & IIS7 than the last 'developer' release of IIS we did (IIS 5.1 on XP), it is not really fair to compare them. Many Web developers I know moved to Windows2003/IIS6 a long time ago, so they could have the same development / deployment environment to work in, and enjoy the security and reliability benefits of IIS6. After my experience this weekend, I can honestly say I'd prefer to use Vista/IIS7 to either XP/IIS5.1 or Win2k3/IIS6. I've come up with several reasons why I love it, but rather than extend this post out to short-novel size, I'm going to tackle one reason a post for the next while, so check back often.
Reason #1: Fewer Restrictions!
IIS 5.1 on XP was a pretty limited Web server. It was restricted to only one site, and though some enterprising individuals figured out how to work around that, it was restricted to only 10 connections. On the 11th connection you'd get the "server too busy" error message which made it sometimes difficult to test sites and was downright annoying. In addition, we stripped down the server by removing a few features like compression. I made the decision several years ago that the next time we shipped IIS on client, we wouldn't repeat this mistake.
Request Limits on IIS7
There is only one real limitation in place on IIS7 in Vista, and that is a simultaneous request limit. This is very different than the connection limit with XP. Each worker process is throttled to 10 simultaneous requests (on pro and ultimate SKUs) and 3 simultaneous requests (on premium, starter and basic). Requests beyond this limitation are simply queued, not rejected, which means you'll never see those 'server too busy' errors. You may think 10 simultaneous requests is low (and 3 is even lower!) but if you remember that most requests are served in milliseconds, you'll quickly realize the server is fully capable of being used as a development and test server. In fact, over the weekend I pulled out WCat - a performance / load generation tool that can be found in the IIS6 reskit (installs and works great on Vista). In my testing, I was able to generate a peak load of nearly 4,000 requests per second on a particular application I was testing:
WCAT cmd-line output (click for full size image)
Now that rocks!
Site limitations on IIS7
There are no site limitations on any version of IIS7 on Vista! Hooraay! Go bananas and create a site for every single application you want to create. Create a AppPool to run every site in, if you want. Personally, I create an AppPool for ASP.NET applications (running in integrated mode, of course!) and a separate AppPool for other Classic ASP/PHP/Static sites, and on that AppPool I turn off .NET integration (to minimize footprint). Over the weekend, I created several demo sites on my Vista box:
My Admin Tool from the weekend (click for full size image)
Feature limitations on IIS7
Unlike previous versions of IIS on client, there are no feature limitations on the Professional and Ultimate SKUs of Windows Vista. We want professional developers to have a full fidelity experience building applications on Microsoft's Web Platform and have all the same capabilities on their dev workstation as exist on the production Server.
For the first time ever we are introducing IIS7 on the Home Premium SKU. It is there to be used as a basic Web server, but doesn't include some of the "Enterprise" type features like Windows authentication. The basic IIS7 infrastructure is also available on the Vista Starter and Basic SKUs, but these lack many of the typical Web server features. IIS7 on these skus is there to support the Windows Communication Framework and message-activated Web services.
IIS on Vista is a lot more powerful than previous releases of IIS on the Windows professional SKUs. It is much less restrictive and can now be used a as a fully capable Web server. For the first time, it's also available on Home SKUs of Windows as well, which will hopefully make it great for those still in school or hobbyists at home. The lack of these annoying roadblocks made my experience using IIS7/Vista so much fun this weekend, and I'm sure you'll experience the same result. Check back soon for the other reasons I fell in love with IIS7 on Vista. :)