
An Internet Information Services Roadmap
Windows Vista® and Windows Server® 2008 deliver a unified Web platform that provides integrated support for Internet Information Services (IIS), ASP.NET, Windows Communication Foundation (WCF), and Windows SharePoint Services. IIS7 is a major enhancement to the Windows Web server and plays a central role in unifying the Web platform. The key pillars of the IIS7 release are:
-
A unified platform that delivers a single, consistent developer and administrator model for Web solutions.
-
Enhanced security and smaller, independent components to reduce attack surface.
-
Flexible extensibility to enable powerful customization.
-
Simplified problem resolution through powerful diagnostics and troubleshooting.
-
Delegated administration for hosting and enterprise workloads.
-
Improved support for server farms.
-
Integrated application and health management for Web services.
-
Improved configuration and administration tools.
-
Compatibility with existing solution technologies.
Unified Platform for Web Services
IIS7 has a re-architected, unified application server engine core that handles web service messages and HTTP requests. It also boasts a new, unified application-processing model that enables developers to write applications, independent of protocol, that share a common infrastructure for caching, configuration, code deployment, dynamic compilation, event tracing, logging, security, and state management. This unified request-processing pipeline is exposed to developers writing in native (C/C++) and managed (ASP.NET) code.
Not only does IIS7 represent a powerful platform with which to directly build Web and other Internet solutions, but it also provides the core infrastructure upon which many of Microsoft's communication technologies and services are built, including ASP.NET, WCF, and Windows SharePoint Services. In addition, because of its flexible, modular nature, it can be easily extended to support new third-party technologies and services.
Enhanced Security and Performance Through Componentization
The IIS7 core Web server has undergone fundamental changes. In contrast to the monolithic design of past releases, IIS7 is now factored into over 40 feature modules. This modularization enables administrators and developers to customize in a fine-grained manner exactly which features should be installed and running on their Web server, dramatically reducing the security attack surface of the server.
A new Win32 API is available for building core server modules, a new and more powerful alternative to ISAPI filters (although filters are still fully supported). All of the existing IIS core-server features have been ported on top of this new Win32 API as feature modules, enabling developers to add, remove, and even replace IIS feature modules.
These server modules play two general roles: request services (for example, authentication or output caching, similar to ISAPI filters) and request handling (for example, static file handling, CGI, or ASP.NET page processing, similar to ISAPI extensions).
Flexible Extensibility Model for Powerful Customization
IIS7 enables developers to extend IIS to provide custom functionality in new, more powerful ways. Extensibility begins with an all-new core server API set, which supports both native (C/C++) and managed (ASP.NET using the IHttpModule interface) feature module development. This approach provides developers with a flexible way to extend the core server’s HTTP processing pipeline. Managed code modules have full access to all events in the request pipeline, for all requests. This level of integration is unprecedented and allows existing ASP.NET features, such as forms-based authentication or URL authorization, to be used for all types of Web content.
IIS7 also enables extensibility of configuration, scripting, event logging, and administration tool feature sets, providing software developers a complete server platform on which to build powerful, completely new functionality.
Rich Troubleshooting Tools and Diagnostic Information
IIS7 enables developers and IT professionals to more easily troubleshoot errant Web sites and applications. IIS7 provides a clear view of internal diagnostic information, and collects and surfaces detailed diagnostic events to aid in troubleshooting problematic servers. IIS7 includes two major advances that aid in diagnostics and troubleshooting: access to real-time information and greatly enhanced tracing functionality.
A new Run-Time Status and Control (RSCA) API provides real-time state information about application pools, worker processes, sites, application domains, and even running requests. This COM API is exposed via Windows Management Interface (WMI) and the new IIS Manager (inetmgr.exe) for quick and easy status regardless of the management environment. For more information and sample code on obtaining RSCA data, see Overview of Runtime Status and Control Data and Objects (RSCA) and How to Access IIS7 RSCA Data.
Detailed trace events throughout the request and response path allow developers to trace a request as it makes it way to IIS, through the IIS request-processing pipeline, into any existing page level code, and back out to the response. These detailed trace events allow developers to understand not only the request path and any error information that was raised as a result of the request, but elapsed time and other debug information to assist in troubleshooting all types of errors. To enable the collection of these trace events, IIS7 can be configured to automatically capture full trace logs for any given request based on elapsed time or error response codes. This functionality enables developers to configure IIS to watch for hard-to-reproduce error conditions and automatically trap the error with a detailed trace log. This "failed request tracking" capability is also available to managed applications through the standard System.Diagnostics.Trace mechanism. For more information, see Troubleshooting Failed Requests using Tracing in IIS7.
New Delegated Administration
IIS7 enables Web-hosting and IT professionals to safely and securely delegate fine-grained administrative control to developers and content owners, reducing the cost of ownership and administrative burden for the administrator. IIS7 enables administrators to delegate configuration tasks to developers, and supports delegated administration of sites and applications through the IIS Manager. It unifies the management of traditional Web and ASP.NET solutions, and state is stored in separate XML-based configuration files, based on the model of the .NET Framework configuration store.
Improved Support for Server Farms
For Windows Server® 2003 and Windows Server 2008, IIS7 eases the deployment and management of content and configuration data in server-farm scenarios. IIS7 provides an easy way for Web-site and application configuration to be copied between servers. Configuration information can now be shared across multiple front-end servers, avoiding costly and error-prone replication and manual-synchronization issues that plague today's administrators.
The IIS administration tool is designed to support tens of thousands of applications on a single server or across server farms. It supports delegated administration scenarios where non-computer administrators can manage sites locally. It also provides a programmer's framework to extend its operation and to seamlessly integrate additional semantics and support within the tool. For example, the tool's built-in support for IIS, ASP.NET and WCF was provided through this framework.
Application and Health Management for Web Services
To enhance the development and hosting of Web services over many protocols, IIS7 is compatible with the Windows Activation Service (WAS), which supports pluggable activation of arbitrary protocol listeners. WAS provides all types of message-activated applications with intelligent resource management, on-demand process activation, health-monitoring, and automatic failure detection and recycling. WAS is based on the IIS6 and IIS7 request-processing model.
Improved Configuration and Administration Tools
Configuration
IIS7 introduces major improvements to the way that configuration data is stored and accessed. One of the key goals of IIS7 is to enable distributed configuration of IIS settings, allowing developers to specify IIS configuration settings alongside code and content.
Distributed configuration enables many powerful new capabilities with IIS7. It enables developers to specify configuration for a Web site or application in the same directory as the code or content. It allows configuration for a particular site or application to be copied from one computer to another as the application moves from development into test and ultimately into production. Distributed configuration also enables configuration for a site or application to be shared across a server farm; all configuration and content is accessed through a back-end file server.
IIS7 configuration is based on the existing .NET Framework configuration store, which enables IIS configuration settings to be stored alongside ASP.NET configuration in Web.config files. This change provides one configuration store for all Web platform configurations that is accessible via a common set of APIs and stored in a consistent format. The IIS7 configuration system is fully extensible, so developers can extend the configuration store to include custom configuration with the same fidelity and priority as IIS configuration.
IIS7 stores global or computer-wide configuration in the file %windir%\system32\inetsrv\config\ApplicationHost.config. In this file there are two major configuration section groups:
-
system.applicationHost contains configuration for site, application, virtual directory, and application pools.
-
system.webServer contains configuration for all other settings, including global defaults.
URL specific configuration can also be stored in ApplicationHost.config using the <location> element. IIS7 can also read and write URL-specific configuration within the code or content directories of the Web sites and applications on the server in Web.config files, alongside ASP.NET configuration.
IIS7 includes a new WMI provider that broadens scripting access to all IIS and ASP.NET configuration. The IIS6 command-line scripts have also been replaced with a new, powerful command-line utility.
Administration Tool
IIS7 includes a completely rewritten administration tool for managing IIS: the IIS Manager (inetmgr.exe or iis.msc). IIS Manager fully supports the distributed configuration support introduced above, allowing for delegated (non-administrative) access to configuration for individual sites and applications. IIS Manager supports non-administrator and even non-Windows credentials to authenticate to a particular site or application, and manage configuration for just that scope.
IIS Manager has been carefully designed to provide an easier, more task-based workflow for managing IIS, with common management tasks. IIS Manager covers all of IIS and ASP.NET configuration, with support for ASP.NET 2.0's Membership and Role Manager features.
IIS Manager supports remote administration over HTTP, allowing for seamless local, remote, and even cross-Internet administration without requiring that DCOM or other administrative ports be opened on the firewall.
IIS Manager is fully extensible, enabling developers to build new administration modules using the .NET Framework to easily plug in first-class administration UI just like the IIS team.
For more information, see Getting Started with IIS Manager.
Compatibility
IIS7 is built to be compatible with the vast majority of existing solution technologies, including:
-
All existing ISAPI extensions and most ISAPI filters will continue to work, unchanged. As in IIS6.0, the one exception is that ISAPI filters that rely on READ_RAW notification are no longer supported.
-
All existing ASP, ASP.NET 1.1, and ASP.NET 2.0 applications are expected to run on IIS7 without any code changes (using the compatible ISAPI support).
-
For existing Active Directory Service Interfaces (ADSI) and WMI scripts, IIS7 provides feature parity with previous releases, enabling them to run directly against the new configuration store.