Desde hoy por la mañana está disponible para descarga el Service Pack 1 de Visual Studio 2010. Trae algunas novedades (nada que ver con el SP1 de VS2008 que fue realmente un cambio gigantesco) y corrige decenas de bugs.
Una de las novedades que trae respecto a desarrollo Web es la posibilidad de utilizar el recientemente aparecido IIS 7.5 Express para probar los desarrollos. IIS Express es una versión reducida del servidor de aplicaciones Web de Microsoft y nos proporciona una experiencia mucho más real a la hora de probar las aplicaciones, frente al habitual "Cassini" (o Web Development Server, como se le llama oficialmente). IIS Express contiene el motor de IIS y funciona exactamente igual que éste, por lo que te resultará muy fácil probar las configuraciones reales en él o, incluso, distribuirlo con tus propias aplicaciones en un momento dado. Lo puedes descargar desde aquí o instalarlo desde el Web Platform Installer. Sólo tiene versión de 32 bits, pero funcionará perfectamente en sistemas operativos de 64 bits (yo mismo lo he instalado en mi equipo de trabajo, que es un windows 7 Ultimate x64).
¿Cómo podemos sacarle partido a IIS Express desde Visual Studio?
Por defecto, hasta ahora, cuando ejecutábamos un proyecto Web en Visual Studio, se lanzaba el servidor de desarrollo (conocido popularmente como "Cassini"), y colocaba un iconito como este en el área de notificaciones del sistema:
Ahora, si tenemos instalado IIS Express y hemos actualizado Visual Studio con el Service Pack 1, podemos cambiar cualquier proyecto para que funcione con IIS Express. Para ello sólo tenemos que pulsar con el botón derecho del ratón sobre el proyecto web en cuestión y elegir la opción correspondiente:
Al hacerlo salta una ventana de advertencia que nos indica que si seguimos adelante se creará un sitio Web nuevo en IIS Express y que el proyecto cambiará y tendrá que recargarse:
Aceptamos y un nuevo diálogo nos dice que todo ha ido bien y cuál es la nueva URL para probar la aplicación:
Se recarga el proyecto, y si nos fijamos en el explorador de soluciones, en lugar de poner simplemente el nombre de la carpeta que albergaba el proyecto (ver figura anterior del menú contextual) ahora pone la URL de la aplicación en IIS Express:
Vale ¿Y qué? ¿Qué hemos ganado?
Si lanzamos el proyecto con F5, en esta ocasión aparece un nuevo icono en el área de notificaciones que evidencia la presencia de IIS Express:
Por lo demás la aplicación se ejecuta de manera normal en el navegador y no notaremos diferencia de manera externa. Sin embargo la diferencia estriba en que ahora la aplicación se ejecuta en un entorno más parecido al real, en el que se puede configurar el servidor como si de un IIS completo se tratara (sólo que tendremos que hacerlo mediante archivos de configuración, no hay interfaz avanzada).
Por ejemplo, considera una aplicación Web que hace uso de alguna característica incompatible con el modo integrado de IIS. Podría ser, por ejemplo, la suplantación de usuarios. En Cassini este problema no se evidenciaría jamás y todo funcionaría a la perfección, pero a la hora de llevar la aplicación a un entorno real se nos produciría un error que no teníamos contemplado en la fase de desarrollo y depuración.
Si ejecutamos la aplicación bajo IIS Express, lo que obtendríamos es un mensaje como este (real, pues lo he simulado para este ejemplo concreto):
¿Cómo podemos solucionarlo? O bien dejando de usar la suplantación de usuarios en nuestro web.config o bien, si es necesario que la utilicemos por algún motivo concreto, cambiando el modo de integración de IIS, desde integrado a clásico.
Para ello disponemos de unas pocas propiedades que podemos ajustar desde el entorno de desarrollo. Si seleccionas el nodo base del proyecto Web y pulsas F4 para sacar la ventana de propiedades verás lo siguiente:
Nos permite ajustar si queremos permitir acceso anónimo o debe autenticarse al usuario contra el sistema, el modo de integración de IIS (ahí es donde deberíamos cambiar de integrado a clásico para evitar el error anterior), si queremos utilizar SSL (ahora más sobre eso), y si queremos habilitar la autenticación Windows o no (coordinada con el primer ajuste=. también se nos informa de las rutas física y virtual del sitio Web, para facilitarnos su acceso.
Otra de las cosas estupendas que podemos hacer con IIS Express es probar nuestras aplicaciones con SSL (Secure Sockets Layer). Es el protocolo de intercambio seguro de información basado en clave pública. Usa un certificado en el servidor para establecer los parámetros de comunicación cifrada entre cliente y servidor de manera segura (luego el cifrado se hace con clave simétrica, pero se establece con clave pública). Dicho más claro: sirve para cifrar las comunicaciones y asegurar al cliente que se está conectando al servidor que realmente quería utilizar y no otro que se haga pasar por él.
Si activamos el uso de SSL en el diálogo de propiedades anterior se nos genera una nueva URL para acceso por SSL (fíjate que es diferente a la anterior, pues lleva la "s" de https, y además se le asigna un puerto diferente). Si lanzamo sla aplicación normalmente con F5 no accederemos a través de SSL, pero podemos hacerlo escribiendo la URL segura a mano o bien usando el menú contextual del icono de notificación:
También podemos usar el menú "Show All Applications" de la figura anterior para obtener una cómoda ventana con una lista de todas las URLs de los proyectos que tengamos abiertos (puede haber más de uno)para acceder cómodamente con un clic a cualquiera de ellos:
El certificado SSL que se asigna al servidor obviamente es falso, pues de otro modo tendríamos que adquirir uno y tampoco nos lo venderían para usar en un servidor local. Así que se trata de un certificado SSL firmado por una entidad no reconocida y que por lo tanto no es de confianza. Por lo tanto cuando accedamos a la URL segura veremos un mensaje similar a este (cambia según el navegador):
Podemos continuar simplemente y funcionará sin problemas. Es una pequeña molestia pero ganamos bastante a la hora de probar este tipo de aplicaciones.
Por cierto, una última cosa importante:
¡IIS Express también soporta aplicaciones en ASP 3.0 Clásico!
Esto es algo que no hace Cassini y que sin duda muchos programadores apreciarán, ya que todavía quedan por ahí muchas aplicaciones en este lenguaje.
Hacer IIS el servidor por defecto de VS2010
Para no tener que convertir cada uno de los proyectos que hagamos a IIS Express y hacer que éste sea el servidor por defecto en cada nuevo proyecto tenemos un nuevo ajuste en el menú Herramientas·Opciones, concretamente en el apartado de Proyectos y Soluciones:
¡Espero que te sea útil!