What's New

If you are converting from Apache 1.x under Unix or Apache 2.0 on more or less any platform, you'll actually find that there are not as many differences between Apache and IIS as you might think.

Although Apache is available under Windows, it's more likely that you will be moving from a Unix platform, and this adds additional levels of complication. The basic setup of the two retains some consistency specifics, such as the way permissions and authentication work and the way in which external dynamic components integrate with the server software, and just help to complicate matters even further.

The execution model now followed by IIS 6 when working in Worker Application Isolation Mode is very similar to the 'forked' and thread methods used by Apache under most Unix platforms. Within Apache, individual threads or duplicate instances of the main Apache server are used to actually serve the requests of individual clients. Should a thread or process fail, it's simply recreated to service the next request.

More critical, though, is the difference between the way the two systems are administered and the terminology. Typically, Apache is configured through a text file and administered, such as you can, through a very simple application for starting and stopping the entire service. IIS enables individual sites, and even application pools within sites, to be controlled individually.

Terminology differences are more difficult to describe without looking at specifics, but one of the most critical to appreciate is the terms used for executable and dynamic components. Within Apache, we are used to CGI scripts handling most dynamic elements, with modules such as mod_perl and mod_php providing an internal solution. Within IIS, we not only have CGI support, but also ISAPI filters?which are a bit like multi-stage CGI scripts.