lunes, 27 de diciembre de 2010

system.WebServer

Llevo tiempo viendo que al crear un nuevo fichero web.config se incluye una sección system.webServer pero, con franqueza, hasta hoy no sabía cuál era su cometido.

Esta sección permite configurar el servidor IIS si el servidor es la versión 7.0 o superior (esto es Windows Vista, Windows 7 y Windows Server 2008 R2).

Esto no es tan trivial como parece. Hay un ejemplo muy claro que me ha servido para entenderlo definitivamente. ¿Cuántas veces después de publicar una aplicación has accedido al complemento MMC de IIS (inetmgr) para definir el documento predeterminado si se accede a tu aplicación sin especificarlo? Pues bien, ahora y a través de system.WebServer es posible configurar este documento predeterminado directamente, es decir, estamos no sólo configurando nuestra aplicación ASP.NET sino también el servidor donde se ejecutará. Por supuesto, el documento predeterminado es sólo un ejemplo y el grado de personalización es casi tan completo como todo lo que puedas hacer desde el complemento MMC.

Por otro lado, el pipeline (de ahora en adelante “canalización de solicitudes”) también ha cambiado de IIS 6.0 a IIS 7.x, por lo que ahora en vez de httpModules hablamos de modules y en vez de httpHandlers hablamos de handlers. Bueno, esto no es un gran cambio (digo yo que estarás pensando) pero la realidad es que ahora los módulos llegan más lejos de lo que llegaban antes los httpModules e igualmente pasa con los manejadores. Ahora se disponen de más eventos durante ese proceso de “pipeline” (esto es que el ciclo de vida de una aplicación ASP.NET ahora es más rico con IIS 7.0) y además se puede acceder a más sitios, ya no es necesario por ejemplo asignar aspnet_isapi.dll a los ficheros .jpg para poder procesarlos con ASP.NET porque ahora directamente ya están accesibles, pero… siempre y cuando el grupo de aplicaciones en el que se ejecuta nuestra aplicación ASP.NET esté configurado en el modo integrado.

Este modo integrado también es nuevo en IIS 7.x y realmente tiene 2 posibles valores: clásico e integrado. Clásico es funcionar como IIS 6.0 e integrado es funcionar como IIS 7.x. Por defecto, el grupo de aplicaciones DefaultAppPool está configurado en modo integrado y además también tenemos disponible después de la instalación un grupo de aplicaciones Classic .NET AppPool que se ejecuta en modo clásico.

La idea realmente a memorizar es que con IIS 7.x los límites entre aplicación ASP.NET y configuración del servidor se han limado bastante y ahora como programadores tenemos a nuestra disposición más oportunidades y mayor control sobre el despliegue de nuestras aplicaciones.

Se puede encontrar más información en http://msdn.microsoft.com/es-es/library/bb515251.aspx y también en http://www.iis.net/ConfigReference/system.webServer

Un saludo!.

No hay comentarios:

Publicar un comentario