In my July 3 column, I told you about platform improvements, new programmatic features, and new security features in IIS 6.0, the most recent version of Microsoft's Web server scheduled to ship in early 2002. Now, I'll introduce you to IIS 6.0's architecture, performance and scalability, and new administrative and management features.
IIS 6.0 Architecture
The common Web software-development paradigm means that software developers must revise Web sites and applications in weeks or months rather than years. IIS-hosting processes must serve as active runtime-environment managers and automatically detect memory leaks, access violations, and other problems. When these conditions occur, the underlying IIS architecture must actively recycle or restart processes as necessary, queue requests without interrupting the end-user experience, and be fault tolerant. Earlier versions of IIS couldn't perform these functions.
IIS 6.0 introduces Dedicated Application mode, which runs all application code in an isolated environment. Process boundaries separate each application pool from other pools so that other application pools don't affect an application that's routed to one pool. IIS 6.0 no longer has in-process applications; all necessary HTTP application runtime services, such as Internet Server API (ISAPI), are equally available in any application pool. This design prevents a misbehaving Web application from bringing down other Web applications (or Web sites) that use separate processes on the same machine.
In IIS 6.0, http.sys listens for and queue requests. Kernel Mode Queuing assures that no third-party code runs in http.sys; crashes in user-mode code that usually affect the status of the W3SVC service don't affect http.sys. If a misbehaving piece of code terminates the user-mode request-processing infrastructure, http.sys continues to accept and queue requests as long as the W3SVC service is still running.
Another key foundation of the IIS 6.0 architecture is the Web Administration Service. Http.sys and Web Administration Service make up the core portion of the W3SVC service. In earlier versions of IIS, applications could run in the core Web server process, Inetinfo, exposing the core IIS Web server to flaws in the application code. IIS 6.0 isolates third-party application code from the core Web server by keeping the main Web server functionality in WAS and http.sys. This procedure lets application code run in dedicated mini-Web server processes called "worker processes." The IIS 6.0 kernel driver and the WAS portion of the W3SVC service are "sanctified" zones in which critical IIS 6.0 services reside and third-party code is never loaded.
Performance and Scalability
Your Web applications will probably run 33 percent faster if you upgrade to IIS 6.0. My company saw the same dramatic increase when we upgraded from IIS 4.0 to IIS 5.0. Http.sys uses a caching proxy architecture that provides these performance and scalability features and benefits:
- In the Flexible Caching Model, http.sys implements a flexible Uniform Resource Identifier (URI) response cache, which lets Web applications cache static and dynamic data. Web applications define the caching policies through programmatic interfaces to the response cache.
- Http.sys implements a URI namespace-mapping mechanism called "application pools," which let Web applications claim portions of the URI namespace. Http.sys routes HTTP requests directly to the appropriate Web applications.
- Response caching lets http.sys cache HTTP requests completely in kernel mode with no transition to user mode. When a cache miss requires a transition to User mode, the application-pool mapper lets http.sys send the HTTP request directly to the appropriate Web application, which eliminates unnecessary user-mode context switches.
IIS 6.0 has a new Web gardens concept—an application pool that uses multiple processes to serve the requests routed to that pool. You can configure the Web garden to assign its processes to a given set of CPUs in a multiprocessor system. Using Web gardens, Web applications significantly increase scalability because locks don't block all processors in the multiprocessor machine. If one worker process experiences a problem, the other worker processes can serve content and take over for the locked worker process.
Administration and Manageability
One of IIS 6.0's most exciting features is its XML metabase. In earlier versions of IIS, the metabase resided in a proprietary binary file that wasn't easy to read or edit. IIS 6.0 replaces the proprietary binary file, called metabase.bin, with a plain-text, XML-formatted file called metabase.xml. This metabase file has multiple benefits:
- The file provides improved troubleshooting, metabase corruption recovery, and backup-and-restore capabilities on machines that experience critical failures.
- Administrators can extend the metabase schema, so you don't need software developers.
- You can use common text-editing tools, such as Microsoft Notepad or XML editors, to edit the metabase files while IIS is running.
IIS 6.0 also contains many command-line utilities that are based on the Windows Management Instrumentation (WMI) provider, which facilitates remote IIS server management. Because of its rich script-based toolset, managing IIS 6.0 from non-Windows platforms such as Telnet is very realistic.
IIS 6.0 is dramatically different from its predecessors. Many sites will probably upgrade immediately when Microsoft ships the product.