Compartir a través de


Introducción a MWA y MWM para IIS 7.0

por Janani Ravi

Abstract

Extender la herramienta del administrador de IIS para administrar la configuración personalizada (en los archivos de configuración distribuida) en el servidor IIS 7.0 y versiones posteriores implica el uso de API de dos ensamblados diferentes, el Microsoft.Web.Administration.dll y el Microsoft.Web.Management.dll. Estas API deben usarse para acciones muy diferentes y tienen fines fundamentalmente diferentes. En este documento se proporciona información general rápida sobre la funcionalidad que proporcionan estas API y la relación entre ellas.

Introducción

Si planea agregar la interfaz de usuario al administrador de IIS (InetMgr) para administrar la configuración personalizada en los archivos de configuración del servidor, usará las API de Microsoft.Web.Administration.dll y Microsoft.Web.Management.dll. La funcionalidad proporcionada por las API de estos ensamblados es fundamentalmente diferente y podría resultar confusa para un desarrollador que la use por primera vez. En este artículo se proporciona una breve descripción de lo que ofrece cada uno de estos ensamblados.

¿Qué son Microsoft.Web.Administration y Microsoft.Web.Management?

En esta sección se proporciona una breve introducción a cada una de ellas.

Microsoft.Web.Administration

Las API de Microsoft.Web.Administration (MWA) se compilan como un contenedor de código administrado a través de la API de administración de host de aplicaciones (AHADMIN), que es una biblioteca de interfaz de código nativa. Proporciona una manera programática de acceder a la información de administración y configuración del servidor web y actualizarla.

Microsoft.Web.Administration.dll es una manera fácil de ajustar la configuración en el servidor. No admite la adición de ninguna extensibilidad o funcionalidad de la interfaz de usuario. De hecho, varias características de interfaz de usuario del administrador de IIS usan esta API para administrar las opciones de configuración en el back-end.

La API de MWA se usa cuando un desarrollador quiere escribir un programa en código administrado (C#, VB, etc.) para configurar el servidor en un orden determinado. Esta API se usa desde aplicaciones de consola independientes o desde una característica de interfaz de usuario en el administrador de IIS.

Estas API también admiten el acceso a la configuración en runtime (por ejemplo, desde un módulo administrado en la canalización de IIS).

Microsoft.Web.Management

Microsoft.Web.Management.dll tiene el marco para agregar nuevas características de interfaz de usuario a la herramienta del administrador de IIS. El marco tiene la extensibilidad para desarrollar nuevas características y proporciona las clases base y otras funcionalidades. Esto permite que las extensiones definidas por el usuario sean ciudadanos de primera clase en la interfaz de usuario, y tienen un aspecto idéntico al de las funciones integradas de IIS y ASP.Net.

El administrador de IIS tiene una infraestructura modular donde cada característica de interfaz de usuario es su propia entidad y tiene que registrarse individualmente con la herramienta. La arquitectura de servidor cliente del administrador de IIS separa la lógica, que manipula la configuración del servidor del código. Esto muestra esta configuración de una forma fácil de usar. Cada característica de la herramienta sigue este paradigma de cliente-servidor. Esto se aplica al proporcionar clases base bien definidas para el código de interfaz de usuario del lado servidor y del cliente en el administrador de IIS.

Esta API también proporciona el mecanismo de extensibilidad para desarrollar características de interfaz de usuario representadas como listas, cuadrículas de propiedades, paneles Acciones personalizados, asistentes modales y diálogos (por nombrar algunos).

Muchas de las características de interfaz de usuario existentes que se incluyen con la herramienta usan las API de MWA (en el código del lado servidor) para acceder a la configuración.

Microsoft.Web.Administration

Como se mencionó anteriormente, las API de MWA se pueden usar para manipular la configuración en el servidor. Proporcionan acceso fuertemente tipado integrado a sitios, aplicaciones y directorios virtuales configurados para IIS. Estas API también permiten a los usuarios generar sus propias clases fuertemente tipadas que representan secciones de configuración específicas y, por tanto, crear una manera fácil de acceder a las propiedades y a otra información almacenada en estas secciones.

Esto no significa una lista completa y este ensamblado ofrece mucho más de lo que se describe aquí.

ServerManager y sitios, aplicaciones y directorios virtuales

El punto de entrada para administrar las propiedades del servidor es la clase ServerManager. ServerManager tiene una referencia a la lista de todos los sitios de ese servidor IIS y a los sitios individuales a los que se accede mediante la indexación en la colección de sitios.

Se accede a aplicaciones y directorios virtuales de forma similar. Estas entidades también proporcionan información de estado en runtime (por ejemplo, si se inicia o detiene un sitio). Las actualizaciones se realizan en la configuración predeterminada para todo el servidor o en las propiedades que pertenecen a una entidad individual (por ejemplo, actualizaciones de un sitio determinado).

La configuración del servidor se actualiza cuando se llama a CommitChanges en ServerManager.

Esta es una introducción a algunas de las clases fuertemente tipadas que ofrece este ensamblado:

Diagram showing connections between the ServerManager class and other classes.

Acceso a archivos de configuración individuales

El modelo de archivos de configuración distribuido que IIS usa permite que un sitio, una aplicación, un directorio virtual o incluso una carpeta tenga su configuración en un archivo web.config.

Es posible acceder a archivos de configuración individuales para ajustar la configuración de una entidad determinada. El método ServerManager GetApplicationHostConfiguration se usa para tener acceso a applicationHost.config, mientras que el método GetWebConfiguration acepta parámetros para obtener archivos de configuración específicos.

Clases base genéricas para extensibilidad

El sistema de configuración de IIS permite crear una sección en la que especifique las propiedades pertinentes para la aplicación. Con las API de MWA, crea clases fuertemente tipadas en código administrado para manipular esta configuración. Algunas de las clases base que facilitan esto son:

  • Configuration: representa un único archivo de configuración (applicationHost.config o los archivos web.config para sitios y aplicaciones)
  • ConfigurationElement: una entidad genérica que se usa para representar un elemento en un archivo de configuración. Esta es la clase base para secciones de configuración, entradas de colección, elementos anidados en una sección, etc.
  • ConfigurationAttribute: representa una propiedad dentro de ConfigurationElement
  • ConfigurationSection: se deriva de ConfigurationElement y representa una sección definida en los archivos de esquema de IIS. Se usa para acceder a las distintas propiedades de una sección.
  • ConfigurationElementCollection: una clase de colección que consta de ConfigurationElements. También deriva de ConfigurationElement.

A continuación se muestra una visión general sencilla de la extensibilidad de configuración genérica:

Diagram showing connections in a generic configuration.

Acceso en runtime a la configuración

WebConfigurationManager se usa para el acceso en runtime a los valores de configuración del servidor. Un módulo administrado cargado en la canalización de IIS accede a los valores de configuración en su contexto concreto (por ejemplo, una solicitud a un sitio determinado) haciendo referencia a esta clase.

Microsoft.Web.Management

Las API de Microsoft.Web.Management (MWM) son los bloques de creación para desarrollar código del lado servidor para manipular la configuración de administración y las características de la interfaz de usuario del lado cliente (que permiten a los usuarios ver y manipular esta configuración de forma fácil).

A continuación se proporcionan descripciones breves de algunas de las clases importantes de cada espacio de nombres. De nuevo, esto no es una lista completa y este ensamblado ofrece mucho más que lo que se describe aquí.

Vista general de lo que ofrece este ensamblado:

Screenshot showing lists of classes in namespaces.

Microsoft.Web.Management.Server

Las clases derivadas de la clase base ModuleProvider forman el punto de entrada del administrador de IIS para identificar un módulo de interfaz de usuario. Esta es la clase que se debe registrar en administration.config para que el administrador de IIS la muestre como parte de su conjunto de características.

Las clases derivadas de la clase base ModuleService forman el núcleo de la administración del lado servidor. Estas clases realizan la manipulación real de la configuración del servidor. Los métodos de la clase que deben estar visibles para el cliente de la interfaz de usuario se marcan con el atributo ModuleServiceMethod.

ManagementUnit proporciona al desarrollador el contexto en el que se administra el servidor. Por ejemplo, SiteManagementUnit y ApplicationManagementUnit corresponden a conexiones de sitio y conexiones de aplicación en la herramienta del administrador de IIS. La clase base ModuleService expone la clase ManagementUnit actual que se puede usar para obtener acceso a información sobre el contexto actual.

ManagementConfigurationPath es una clase que representa una ruta de acceso (al servidor, sitio, aplicación o carpeta actual). Si administra un sitio, contiene el nombre del sitio y otra información relevante sobre el mismo. ManagementUnit expone la ManagementConfigurationPath actual.

ManagementConfiguration es una clase auxiliar para acceder y manipular las opciones de configuración en el servidor. Se trata de una abstracción muy eficaz para la clase Configuration de la API de MWA definida anteriormente y permite consultar secciones sin preocuparse de si estas secciones se definen en applicationHost.config o en la raíz web.config.

PropertyBag es un tipo de contenedor usado para contener información que se transfiere entre el cliente y el servidor. Esto se implementa como un diccionario genérico. El diccionario se serializa en una cadena al transferir datos en escenarios en los que el servidor se administra de forma remota.

Microsoft.Web.Management.Client

Las clases derivadas de la clase base Module forman el punto de entrada de una característica para registrar sus componentes de interfaz de usuario. Esto indica si la interfaz de usuario de este módulo es una página (que se muestra en el panel central del administrador de IIS), un nodo del árbol o simplemente una tarea en el panel Acciones (para enumerar algunos ejemplos).

ModuleServiceProxy es la clase base para los códigos auxiliares del método que se usan para tener acceso a los métodos de servicio reales especificados en ModuleServiceen el servidor.

HierarchyInfo representa un nodo en la vista de árbol y admite varias acciones en el nodo.

La clase Connection tiene toda la información de contexto de la sesión de administración actual (una sesión de administración que define una conexión a un servidor, un sitio o una aplicación). Proporciona asistentes para acceder a los servicios, crear servidores proxy, etc.

TaskItem es la clase base para las tareas agregadas al panel Acciones del administrador de IIS. Las clases como MethodTaskItem, TextTaskItem, etc. derivan de esta clase base y muestran vínculos, etiquetas, alertas y otra información en el panel Acciones. El desarrollador no tiene que escribir ningún código de interfaz de usuario adicional para mostrar estas acciones.

Microsoft.Web.Management.Client.Win32

ModulePage es la clase base para todas las características que muestran una "página" en el panel central de la herramienta del administrador de IIS. Las clases como ModuleListPage, ModuleDialogPage y ModulePropertiesPage derivan de ModulePage. Estas son clases base que proporcionan una manera fácil de desarrollar páginas que muestran listas, cuadros de diálogo y cuadrículas de propiedades.

La clase base TaskForm permite a los desarrolladores crear formularios que se muestran como un cuadro de diálogo modal.

WizardForm forma las clases base de todos los diálogos. Los desarrolladores pueden especificar varias clases derivadas de WizardPage para conectarlas al asistente.

Microsoft.Web.Management.Client.Extensions

Las clases de este espacio de nombres proporcionan extensibilidad del lado cliente mediante IExtensibilityManager. Por ejemplo, AuthenticationFeature tiene las tareas de cada entrada de la característica Authentication de la herramienta InetMgr.

Este es un breve resumen de la funcionalidad que las API Microsoft.Web.Administration y Microsoft.Web.Management ofrecen a un desarrollador que desee ampliar la configuración y la interfaz de usuario para añadir sus propias características. Para obtener descripciones más detalladas de cómo funciona la extensibilidad de la configuración y la extensibilidad de la interfaz de usuario, consulte los artículos individuales que tratan estos temas.