Let's
start with the bad news right up front: Internet Information Services (IIS) 7.0
isn't what you think it is. Although IIS 7.0 is
the latest release of Internet Information Services, it isn't
what it seems. IIS does look a lot like its predecessors, but this is deceiving
because under the surface, the architecture is completely different. So much
has changed, in fact, that perhaps it might have been better if Microsoft had
given IIS 7.0 a new product name. That way you'd know that IIS 7.0 was
completely different from its predecessors, allowing you to start with a fresh
perspective and a reasonable expectation of having to learn a whole new bag of
tricks. Seasoned IIS pros also are going to have to unlearn some old tricks;
and that's not only going to be difficult, it might be the single biggest
obstacle to mastering IIS 7.0.
IIS 7.0 provides the core services
for hosting Web servers, Web applications, and Microsoft Windows SharePoint
Services. Throughout this artical, I'll refer to administration of IIS, Web
applications, and Windows SharePoint Services as Microsoft
Web administration or simply Web
administration. As you get started with
Microsoft Web administration, you should concentrate on these key areas:
-
What's new or changed in IIS 7.0
-
How IIS 7.0 configuration schema and global configuration
architecture are used
-
How IIS 7.0 works with your hardware
-
How IIS works with Windows-based operating systems
-
Which administration tools are available
-
Which administration techniques you
can use to manage and maintain IIS
Working with IIS 7.0: What You Need to
Know Right Now
Microsoft fully integrated
Microsoft ASP.NET and the Microsoft .NET Framework into IIS 7.0. Unlike IIS 6,
IIS 7.0 takes ASP.NET and the .NET Framework to the next level by integrating
the ASP.NET runtime extensibility model with the core server architecture,
allowing developers to fully extend the core server architecture by using
ASP.NET and the .NET Framework. This tighter integration makes it possible to
use existing ASP.NET features such as .NET Roles, Session Management, Output
Caching, and Forms Authentication with all types of content.
IIS
7.0 has generalized the Hypertext Transfer Protocol (HTTP) process activation
model that IIS 6 introduced with application pools and made it available for
all protocols through an independent service called the Windows Process
Activation Service, and developers can use Windows Communication Foundation
(WCF) protocol adapters to take advantage of the capabilities of this service.
You also should know up front that IIS 7.0 includes a metabase compatibility
component that allows your existing scripts and applications to continue
running but does not use a metabase to store configuration information. Instead
of a metabase, IIS 7.0 uses a distributed configuration system with global and
application-specific configuration files that are based on a customizable set
of Extensible Markup Language (XML) schema files. These XML schema files define
the configuration elements and attributes in addition to valid values for those
elements and attributes, providing you precise control over exactly how you can
configure and use IIS.
Microsoft built the
configuration system around the concept of modules. Modules
are standalone components that provide the core feature set of an IIS server.
Microsoft ships more than 40 independent modules with IIS 7.0. Either these
modules are IIS 7.0–native modules that use a Win32 DLL or IIS 7.0–managed
modules that use a .NET Framework Class Library contained within an assembly.
Because all server features are contained within modules, you can modify the
available features easily by adding, removing, or replacing a server's modules.
Further, by optimizing the installed modules based on the way an IIS server is
used, you can enhance security by reducing the attack surface area and improve
performance by reducing the resources required to run the core services.
IIS 7.0 is more secure than IIS 6 because of built-in request
filtering and rules-based Uniform Resource Locator (URL) authorization support.
You can configure request filtering to reject suspicious requests by scanning
URLs sent to a server and filtering out unwanted requests. You can configure
URL authorization rules to require logon and allow or deny access to specific
URLs based on user names, .NET roles, and HTTP request methods. To make it
easier to resolve problems with the server and Web applications, IIS 7.0
includes new features for diagnostics, real-time request reviewing, and error
reporting. These features allow you to:
-
View the current running state of the
server.
-
Trace failed requests through the core server architecture.
-
Obtain detailed error information to
pinpoint the source of a problem.
IIS
7.0 has many other new and enhanced features, but few are as important as the
new set of administration tools, including new graphical, command-line, and
scripting administration tools. The new graphical administration tool uses a
browser-like interface and adds features for delegated administration, remote
administration over Secure HTTP (HTTPS), and extensibility through custom user
interface components. The new command-line administration tool makes it
possible to perform most configuration tasks with a single line of command
text. With ASP.NET, you can manage IIS configuration through the .NET Framework
by using the Microsoft.Web.Administrators application programming interface
(API). With scripting, you can manage IIS configuration through the IIS 7.0
Windows Management Instrumentation (WMI) provider.
Because of the many changes, much of what
you know about IIS is obsolete or irrelevant. But there's a light at the end of
the tunnel—well, it's more like a freight train coming right at you—but it's
there. The changes in IIS 7.0 are well worth the time and effort you'll spend
learning the new architecture and the new techniques required to manage Web
servers. Our dependence on ASP.NET and the .NET Framework will only grow over
time, and the more you learn about the heart of the .NET architecture—IIS
7.0—the better prepared you'll be for now and for the future.
With IIS 7.0, key components that
were a part of previous IIS releases are no longer available or work in
different ways than they did before. Because IIS 7.0 does not use a metabase,
applications designed for IIS 6 will not run on IIS 7.0 without special actions
being taken. To run IIS 6 applications, you must install the IIS 6
compatibility and metabase feature. To manage IIS 6 applications and features,
you must install IIS 6 Manager, IIS 6 scripting tools, and IIS 6 WMI
compatibility. Additionally, IIS 7.0 does not include Post Office Protocol
version 3 (POP3) or Simple Mail Transfer Protocol (SMTP) services. With IIS
7.0, you can send e-mail messages from a Web application by using the SMTP
E-mail component of ASP.NET.
IIS Manager is the graphical user
interface (GUI) for managing both local and remote installations of IIS 7.0. To
use IIS Manager to manage an IIS server remotely, Web Management Service
(WMSVC) must be installed and started on the IIS server you want to manage
remotely. WMSVC is also required when IIS site or application administrators
want to manage features over which they've been delegated control.
The Web Management Service provides a
hostable Web core that acts as a standalone Web server for remote
administration. After you install and start WMSVC on an IIS server, it listens
on port 8172 on all unassigned IP addresses for four specific types of
requests:
-
Login Requests
IIS Manager sends login requests to WMSVC to initiate connections. On the
hostable Web core, login requests are handled by Login.axd. The authentication
type is either NT LAN Manager (NTLM) or Basic, depending on what you select
when you are prompted to provide credentials in the connection dialog box.
-
Code
Download Requests
If login is successful, WMSVC returns a list of
user interface (UI) modules for the connection. Each IIS Manager page
corresponds to a specific UI module. If there's a module that IIS Manager
doesn't have, it will request to download the module binaries. Code download
requests are handled by Download.axd.
-
Management Service Requests
After a connection is established, your interactions with IIS Manager cause
management service requests. Management service requests direct module services
in WMSVC to read or write configuration data, runtime state, and providers on
the server. Management service requests are handled by Service.axd.
-
Ping Requests
Ping requests are made from within the WMSVC service to the hostable Web core.
Ping requests are made by Ping.axd to ensure that the hostable Web core
continues to be responsive.
The Web Management Service stores a limited
set of editable configuration values in the registry. Each time the service is
started, the Web configuration files are regenerated in the following
directory: %SystemRoot%\ServiceProfiles\LocalService
\AppData\Local\Temp\WMSvc. To enhance security, WMSVC requires SSL (HTTPS) for
all connections. This ensures that data passed between the remote IIS Manager
client and WMSVC is secure. Additionally, WMSVC runs as Local Service with a
reduced permission set and a locked down configuration. This ensures that only
the minimal set of required modules are loaded when the hostable Web core
starts.