Proceso de configuración en AppFabric
Las extensiones de AppFabric para el Administrador de IIS y los cmdlets de Windows PowerShell para AppFabric proporcionan a los propietarios de aplicaciones o profesionales de TI una forma sencilla de configurar aplicaciones integradas en servicios WCF o WF. En este tema se describe qué ocurre en los archivos Web.config cuando se configura un servicio o aplicación en las extensiones del Administrador de IIS o mediante cmdlets de configuración de AppFabric. Al principio del tema se describen los archivos Web.config que se usan para configurar un servicio; a continuación, se describe el procedimiento para configurar un servicio directamente; y, finalmente, se describe la configuración de valores predeterminados para que un servicio los herede.
Para obtener más información acerca del uso de archivos Web.config en ASP.NET, vea Configuración de ASP.NET.
La jerarquía de archivos Web.config
Cada uno de los elementos de una jerarquía de configuración de IIS puede tener su propio archivo Web.config y un servicio puede heredar valores de configuración predeterminados de los archivos Web.config asociados con el servidor, el sitio, la aplicación y el subdirectorio a los que el servicio pertenece. Como resultado, la configuración de un servicio se define mediante una jerarquía de archivos Web.config. En esta sección se describen las reglas que determinan qué archivos Web.config de la jerarquía definen la configuración de un servicio y qué elementos dentro de esos archivos tienen prioridad.
Cuando AppFabric se instala en un servidor, crea un archivo Web.config de servidor (si no existe todavía) en el mismo directorio que el archivo Machine.config (<unidad>:\Windows\Microsoft.NET\Framework\v4.0.xxxxx\Config). La configuración en este archivo Web.config de servidor habilita el seguimiento de servicios, la persistencia de flujo de trabajo y la administración de instancias de flujo de trabajo. También se puede tener un archivo Web.config para un sitio web, ubicado en el directorio del sitio web (<unidad>:\inetpub\wwwroot); para una aplicación, en el directorio raíz de la aplicación; y para un subdirectorio de aplicación. Los archivos Web.config de sitio, aplicación y subdirectorio no se instalan durante la instalación de AppFabric. Siempre que se intente usar las extensiones de AppFabric para el Administrador de IIS para modificar la configuración en un ámbito y no exista un archivo Web.config en ese ámbito, se creará el archivo Web.config.
El archivo Web.config en cualquier nivel puede contener valores de configuración que se aplican directamente a un servicio, pero si desea definir el servicio directamente en la UI del Administrador de IIS, se tratará la definición del servicio en el archivo Web.config de aplicación. Además de esta configuración, los archivos Web.config en el nivel de servidor, sitio, aplicación y subdirectorio pueden contener valores de configuración predeterminados que puede heredar un servicio. La configuración de la aplicación establecida por las extensiones de AppFabric para la IU del Administrador de IIS y los cmdlets de configuración sólo afectan a los archivos Web.config, no a los machine.config o a otros archivos que definen la configuración del entorno. Una excepción a esa regla es que el inicio automático se define para una aplicación en el archivo applicationHost.config a nivel de servidor.
Un archivo Web.config contiene una jerarquía anidada de etiquetas y subetiquetas XML con atributos que especifican los valores de configuración. Algunos valores de configuración para un servicio basado en WCF y WF se definen dentro de un comportamiento de servicio. En AppFabric, la mayoría de herramientas de configuración edita comportamientos, pero no todas. Sin embargo, algunos valores de configuración se definen fuera de un comportamiento de servicio. Por ejemplo, el seguimiento, las direcciones de extremos y las cuotas de transporte de enlace de un servicio se configuran en el archivo Web.config, pero fuera de un comportamiento. El recopilador de eventos y la configuración de diagnósticos del sistema, ambos en el ámbito de nivel de aplicación o superior, no se definen en comportamientos.
Nota
AppFabric usa Microsoft Web Administration (MWA) para administrar la configuración. MWA requiere que todos los elementos de configuración se esquematicen. Para obtener información sobre cómo crear un esquema para los comportamientos personalizados, vea Ampliación del esquema de IIS 7.0 y acceso a las secciones personalizadas mediante MWA (puede estar en inglés).
Configuración directa de servicios
Un servicio se puede configurar mediante el uso de un comportamiento de servicio con nombre en un archivo Web.config. Para ello, en el archivo Web.config debe especificar una etiqueta <service> con un atributo behaviorConfiguration que apunta a una etiqueta de comportamiento de servicio. Un comportamiento con nombre se puede definir para un servicio en un archivo Web.config a nivel de aplicación o superior. A continuación se muestra un ejemplo de un servicio denominado TestService, cuya configuración se define en un comportamiento de servicio determinado con el nombre TestGetMetaData:
<system.serviceModel>
<services>
<service name="TestService" behaviorConfiguration="TestGetMetaData" >
<endpoint address="/TestService" binding="wsHttpBinding" contract="ITestService"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="TestGetMetaData"> <serviceMetadata httpGetEnabled="true" httpGetUrl=""/> </behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
En .NET Framework 3.5, la forma más sencilla de configurar varios aspectos de un servicio era mediante el uso de un comportamiento de servicio con nombre en el archivo Web.config de la aplicación (o subdirectorio) del servicio. En .NET Framework 4.0, las nuevas plantillas promueven el uso de comportamientos sin nombre, mediante los que un servicio hereda una configuración predeterminada. Para obtener más información, vea "Configuración de valores predeterminados para que un servicio los herede" más adelante en esta sección.
Las herramientas de configuración de AppFabric modifican los siguientes comportamientos de servicio:
sqlWorkflowInstanceStore (persistencia)
etwTracking (seguimiento)
serviceThrottling (rendimiento)
serviceCredentials/serviceCertificate (seguridad)
workflowIdle
workflowUnhandledException
workflowInstanceManagement
Configuración de valores predeterminados para que un servicio los herede
Usar un comportamiento de servicio con nombre en el archivo Web.config de la aplicación no es la única forma de configurar un servicio. Un servicio también puede heredar valores de configuración predeterminados de los archivos Web.config del servidor, el sitio, la aplicación o el subdirectorio a los que pertenece el servicio. Algunos valores de configuración predeterminados para servicios basados en WCF y WF se definen dentro de un comportamiento de servicio sin nombre.
Uso de comportamientos sin nombre
Si existe un comportamiento de servicio con nombre y el atributo behaviorConfiguration del servicio apunta hacia él, el servicio usará la configuración de ese comportamiento. También heredará la configuración de cualquier otro comportamiento con el mismo nombre en los niveles superiores. No usará la configuración de comportamiento de servicio predeterminada definida en los archivos Web.config del subdirectorio, la aplicación, el sitio y el servidor que se aplican a ese servicio. Sin embargo, se puede modificar la etiqueta <service> del archivo Web.config de la aplicación para que el servicio herede los valores predeterminados. Para ello debe definirse un comportamiento de servicio sin nombre en el archivo Web.config para uno o más niveles, y especificarse que el servicio usa ese comportamiento sin nombre. El servicio usará el comportamiento sin nombre cuando el nombre del atributo behaviorConfiguration del elemento de servicio se establezca en una cadena en blanco, tal como se muestra en el código siguiente:
<services>
<service name=”TutorialService” behaviorConfiguration=””
<endpoint address=”” binding=”wsHttpBinding” contract=”IService” />
</service>
</services>
Si omite el atributo behaviorConfiguration, tal como se muestra en el código siguiente, el efecto es el mismo. Arriba, el comportamiento sin nombre se usa de forma explícita, mientras que abajo se usa de forma implícita.
<services>
<service name=”TutorialService”
<endpoint address=”” binding=”wsHttpBinding” contract=”IService” />
</service>
</services>
El efecto del elemento behaviorConfiguration sin nombre es que el servicio hereda su configuración de uno o varios comportamientos sin nombre definidos en el elemento serviceBehavior. A continuación se muestra el elemento serviceBehavior, que se define de forma predeterminada a nivel de servidor. Esta configuración predeterminada del servidor (creada mediante la instalación de AppFabric) habilita el seguimiento de servicio, la persistencia de flujo de trabajo y la administración de instancias de flujo de trabajo.
<behaviors>
<serviceBehaviors>
<behavior name=””>
<workflowIdle timeToUnload="00:01:00" timeToPersist="infinite" />
<workflowInstanceManagement authorizedWindowsGroup=”AS_Administrators" />
<etwTracking profileName="HealthMonitoring Tracking Profile" />
</behavior>
</serviceBehaviors>
</behaviors>
Un comportamiento sin nombre se puede definir en un archivo Web.config a cualquier nivel de la jerarquía. Si se definen comportamientos sin nombre en más de un nivel que contiene el servicio, la configuración del servicio consistirá en la combinación de valores de configuración de cada comportamiento sin nombre definido en su jerarquía. Si dos o más comportamientos sin nombre de una jerarquía de servicio contienen valores conflictivos, debe usarse la configuración del nivel inferior. Este proceso de agregar valores de configuración para un servicio desde múltiples comportamientos sin nombre se denomina combinación de comportamientos.
Las etiquetas para borrar y quitar también se pueden usar en secciones de comportamiento de archivos Web.config. Una etiqueta para quitar quita una configuración del comportamiento sin nombre que la contiene. Una etiqueta para borrar quita todos los comportamientos de un servicio.
Todos los servicios que tienen el atributo behaviorConfiguration establecido en cadena en blanco heredarán los valores de configuración predeterminados de los comportamientos sin nombre definidos en su jerarquía. Sólo puede haber un comportamiento sin nombre en un archivo Web.config de un nivel.
Un comportamiento sin nombre se usa de forma implícita (se deja fuera el atributo behaviorConfiguration) en el caso de servicios implícitos (también conocidos como "sin etiquetas"). Un servicio sin etiquetas es uno que no está declarado en un archivo Web.config. No tiene ningún nodo de servicio asociado en un archivo Web.config. De forma predeterminada, los nuevos tipos de proyectos de Visual Studio 10 crean servicios sin etiquetas. Cuando en tiempo de ejecución se encuentra un servicio sin etiquetas, automáticamente se aplican los valores predeterminados combinados de los comportamientos sin nombre aplicables al servicio. Debe tenerse en cuenta que no se pueden modificar los extremos de un servicio sin etiquetas en las extensiones del Administrador de IIS; para ello, debe agregarse un elemento de servicio con nombre al archivo Web.config.
Mientras que algunos valores de configuración predeterminados para los servicios basados en WCF y WF se definen dentro de un comportamiento de servicio sin nombre, otros pueden definirse fuera de un comportamiento de servicio sin nombre. Por ejemplo, para colecciones o cadenas de conexión, un servicio heredará los valores de configuración de todos los archivos de configuración de la jerarquía.
Configuración de valores predeterminados en el Administrador de IIS
Una aplicación se puede configurar directamente en las extensiones de AppFabric para la IU del Administrador de IIS. Al hacerlo, AppFabric establece el comportamiento de servicio con nombre en los archivos Web.config aplicables (normalmente a nivel de aplicación). También se puede usar el Administrador de IIS para modificar la configuración del servicio de modo que use los valores predeterminados de los niveles de subdirectorio, aplicación, sitio y servidor, en lugar de configurar el servicio directamente. S se hace, los comportamientos sin nombre del archivo Web.config cambian. AppFabric realiza la combinación de comportamiento para crear el conjunto completo de parámetros de configuración de la aplicación.
Si la misma propiedad de configuración se establece en valores diferentes en dos o más archivos Web.config, AppFabric usará el valor del nivel inferior. Los campos del cuadro de diálogo Configurar servicio del servicio se rellenan a partir de los comportamientos sin nombre aplicables de los archivos Web.config. Estos valores se pueden modificar en la IU de configuración a nivel de servicio, en cuyo caso se modificará el comportamiento sin nombre de la aplicación correspondiente. O bien, los valores predeterminados se pueden modificar a nivel de subdirectorio, sitio o servidor. Si modifica un valor predeterminado en el comportamiento sin nombre en un nivel superior después de haber creado el comportamiento sin nombre de la aplicación, el cambio del comportamiento sin nombre de nivel superior se propagará al nivel de servicio, a menos que se invalide en el nivel inferior.
Para definir los valores predeterminados del nivel de aplicación, subdirectorio, sitio o servidor en el Administrador de IIS, seleccione el nivel en el panel Conexiones y, a continuación, haga clic en Configurar del panel Acciones de Administrar servicios de WCF y WF. También puede hacer clic en el nivel con el botón secundario del mouse en el panel Conexión, elegir Administrar servicios de WCF y WF y, a continuación, hacer clic en Configurar. Aparece el cuadro de diálogo Configuración del nivel. Si no hay ningún archivo Web.config para un nivel cuando se modifican los valores predeterminados del nivel en la IU, AppFabric creará uno.
En las extensiones de AppFabric para el Administrador de IIS, cuando configura un servicio no selecciona la configuración del comportamiento con nombre que se usará. En cambio, debe especificar valores o hacer selecciones en el cuadro de diálogo Configurar servicio del servicio; AppFabric edita el archivo Web.config. También puede usar cmdlets de Windows PowerShell para AppFabric para establecer varios valores de configuración de comportamientos.
Uso de etiquetas de ubicación
AppFabric admite operaciones de lectura en etiquetas de ubicación de archivos Web.config. Una etiqueta de ubicación es otra forma de definir la configuración de un servicio, aparte de usar un comportamiento de servicio con nombre o definir comportamientos predeterminados mediante un comportamiento de servicio sin nombre o un servicio sin etiquetas. Una etiqueta de ubicación es un elemento integrado en un archivo Web.config que aplica valores de configuración a una entidad que identifica específicamente. Una etiqueta de ubicación contiene uno o más valores de configuración. También contiene una ruta de acceso que especifica la entidad a la que se aplicarán las propiedades de la configuración. A diferencia de un comportamiento de servicio con nombre (que debe estar en el nodo <services> del archivo Web.config de la aplicación aplicable), una etiqueta de ubicación puede insertarse en cualquier archivo Web.config. A diferencia de un comportamiento sin nombre, la etiqueta de ubicación no requiere un elemento behaviorConfiguration sin nombre en el nodo <service> de un archivo Web.config de aplicación para hacer que sea aplicable.
A continuación se muestra un ejemplo de una etiqueta de ubicación en un archivo Web.config de sitio que aplica un valor de configuración en un servicio s1 en una aplicación app1:
<location path=”app1/s1.svc” overrideMode=”Allow”>
<defaultDocument enabled=”true”>
<files>
<add value=”Developer.htm” />
</files>
</defaultDocument>
</location>
Si no se declara ninguna ruta de acceso, ésta será desde el nivel donde se ha definido la etiqueta de ubicación y hasta todas las rutas inferiores (el equivalente a especificar un punto [.]). De este modo, el applicationHost.config resulta en la especificación de la configuración para el nivel global. Si el elemento overrideMode de la etiqueta de ubicación se establece en "Allow", la configuración establecida en la etiqueta de ubicación puede editarse e invalidarse en niveles inferiores de la jerarquía. Si el elemento overrideMode no se estableció y existen varias etiquetas de ubicación que especifican diferentes valores para el mismo valor de configuración en el mismo servicio, se aplica un conjunto de reglas de prioridades para determinar qué valor se debe usar.
Un valor de configuración que se aplica a un servicio desde una etiqueta de ubicación no se puede modificar ni en las extensiones de AppFabric para la IU del Administrador de IIS ni en un cmdlet de configuración de AppFabric. El contenido de una etiqueta de ubicación es de sólo lectura para la IU o un cmdlet. Si intenta modificar la etiqueta de ubicación mediante el Administrador de IIS o un cmdlet, la acción devolverá un error. Para modificar un valor aplicado por una etiqueta de ubicación, debe modificar manualmente la etiqueta de ubicación en el archivo Web.config.
Reciclaje
Cada vez que haga clic en Aplicar o Aceptar del cuadro de diálogo Configurar servicio del Administrador de IIS, lo que modifica un archivo Web.config, el sistema recicla el dominio de aplicación asociado. Cada vez que haga clic en Aplicar o Aceptar para establecer valores predeterminados en el nivel de subdirectorio, aplicación, sitio o servidor, lo que modifica el archivo Web.config correspondiente, se reciclan los dominios de aplicación de todos los servicios de ese ámbito. Para reducir los costes de reciclaje, se recomienda minimizar el número de procesos de reconfiguración que se realizan, especialmente en los niveles superiores. Al configurar valores predeterminados, debe proceder de la siguiente manera: configure los valores predeterminados del servidor y del sitio (en cualquier orden), importe las aplicaciones y, a continuación, configure las aplicaciones y los servicios que contienen. El motivo de este orden es que la configuración de valores predeterminados puede causar el reciclaje de todo el árbol. Para evitar el coste de reciclaje de aplicaciones, si es posible realice los pasos de configuración antes de que ninguna aplicación se ejecute.
2012-03-05