Defining Application Boundaries

An ASP-based application is a collection of ASP pages and COM components. When you define an application, you use the Internet Information Services snap-in to designate the application's starting-point directory in your Web site. Every file and folder under the starting-point directory in your Web site is considered part of the application . Therefore, you can use the directory structure to form application boundaries that define the scope of an application. You can have more than one application per Web site, and each application can be configured differently.

One of the most important tasks you face in developing your Web application is to determine how to assemble your ASP pages into a single Web application. IIS uses the concept of a namespace to identify applications. A namespace is a way of associating an area of memory with an easily recognized name; it identifies a group of files as belonging together. IIS uses virtual directories to define namespaces for applications. The following diagram illustrates this concept.

Application Namespaces

Scripts and ISAPI extension DLLs within an application boundary form a unit of isolation, which always runs in a single server process. IIS administrators can either run applications in the same server process as IIS, a pooled process (the default process), or they can isolate the application by running it in an isolated process, which is particularly helpful during development and testing.

See Simplify Development With Process Isolation to learn more about isolating applications and components.

In addition to running applications in a single process, you can also separate your components from .asp files that call them, by running them in an isolated or pooled process. An isolated process would be a good configuration for debugging your components. A pooled process provides superior protection for the server without the overhead involved in maintaining a large number of isolated processes. To run your components in their own process, you must create a new application and add your components to it with the Component Services Manager.

Five possible configurations for applications are:

  1. Put all .asp files and components in the same process as IIS; this configuration provides the fastest performance.
  2. Put all .asp files and components in one process and IIS in an another process.
  3. Put all .asp files and components in a pooled process, IIS in another process, and special applications in an isolated process.
  4. Put all .asp files and IIS in one process, and components in another process.
  5. Put all .asp files in one process, components in another process, and IIS in a third process.

Because process boundaries represent different areas of memory, calling between them requires some extra work by IIS. The mechanism for calling across process boundaries is known as marshaling. Marshaled calls are slower than calls within a single process. Pooled and isolated applications, therefore, do not perform as well as applications sharing the IIS process.