I know this sounds like a flame, but it's not intended to be. I haven't run IIS since version 6.0. I'm wondering if the newer versions provide a compelling alternative to open source solutions like Apache.
There are several straightforward situations in which one would prefer IIS:
- Your application vendor requires it
- You are restricted to Windows Server and don't need any Apache-specific features
- You need to run an ASP or ASP.NET application
Certainly IIS doesn't have simple built-in equivalents for some very useful Apache modules such as mod_proxy and mod_rewrite, but IIS does have a few wins of its own:
- To isolate applications to run in different user contexts, IIS allows straightforward configuration of per-directory and even per-file suexec-type functionality.
- To securely integrate user authentication from the web request through to network resources such as SQL Server, MSDTC, MSMQ, and file shares is assumed (this can be a pro or a con, but it's definitely a different model with its own advantages and disadvantages)
- IIS is a lot easier to install and maintain, since it's so tightly integrated with the platform -- if you're updating Windows, you're updating the web server; no need to watch for Apache updates.
Short answer, if your application relies on a Microsoft-based infrastructure (ie Active Directory, Windows file sharing, SQL Server, Exchange Server, etc), then your life will be a lot easier if you use IIS.
Reflecting further, there's no reason you can't or shouldn't make use of both IIS and Apache. When I worked at an all-Microsoft shop several years ago, we made good use of IIS's AD-integration capabilities, but we found a lot of situations (rewrites and error-handling mostly) in which there were IIS methods for accomplishing our tasks, but Apache's modules were much cleaner or simpler. So we stuck an Apache server (on a Linux box) in front of IIS, using mod_proxy, and reaped the best of both worlds.
One big reason for using IIS, is if you want to host a .NET or ASP based web-application. Yes with mono or a few other tools you can host some content on a Linux+Apache system, but you will not have access to some functionality available only on IIS. For enterprises with lots of .NET based applications, and lots of developers used to developing for that platform it only makes sense to use what the existing talent knows how to use.
The newer versions of IIS are better than 6.0 in many ways including but not limited to security. You will hate getting adjusted to the different UI and new security features, but the technical improvements are noteworthy. The process model in IIS7 is different and better IMHO than IIS6. If you are running ASP.NET, IIS 7.5 is probably the way to go. But how compelling this makes IIS is largely dependent upon the criteria outlined by daveadams and others. If you are running an open source platform like Rails and you want to use IIS, you are a deeply troubled individual.