En este artículo vamos a ver cómo podemos configurar nuestro Web Role para habilitar multisite en Windows Azure.

El IIS nos ofrece la posibilidad de crear directorios y aplicaciones virtuales y configurar varios sites en el mismo servidor, pudiendo configurar los EndPoints para definir puertos y protocolos. Windows Azure no puede ser menos y también podemos hacer este tipo de configuraciones en el IIS que contiene.

Preparando el entorno

Para crear el multisite en Windows Azure es necesario tener los siguientes recursos:

clip_image003

Visual Studio 2010. Si ya tienes VS instalado perfecto, pero por si acaso, aquí tienes el enlace de descarga de la versión gratuita express o de la Ultimate Trial.

SDK de Windows Azure. Contiene las herramientas para Visual Studio y las librerías necesarias para trabajar en proyectos de Windows Azure.

Una vez tenemos todo lo necesario abriremos Visual Studio 2010 y crearemos un nuevo proyecto Windows Azure con nombre MultiSite.

image

En el siguiente paso añadiremos un nuevo ASP.NET Web Role, que será el punto de acceso de nuestros sites.

image

Ejecutaremos el proyecto para comprobar que todo funciona correctamente. Abriremos el administrador del IIS (IIS Manager) y veremos que tenemos un nuevo site en nuestro IIS correspondiente con nuestro despliegue de Azure.

image

 

Directorio virtual

La creación de directorios virtual es muy útil a la hora de crear nuestros sitios web. Con ellos podemos crear nombres de directorios en el IIS que apunten a directorios físicos o remotos creando de esta forma directorios virtuales.

Con los directorios virtuales podemos, entre otras cosas, incluir contenido en la aplicación sin necesidad de mover o copiar archivos en el directorio de la aplicación. Veamos el procedimiento para crear los directorios virtuales.

Primero vamos a añadir una nueva carpeta al proyecto llamada, por ejemplo, imagenes y dentro añadimos un fichero de texto con nombre about.txt. Editaremos el fichero con algo de texto.

image

Para crear un directorio virtual tendremos que editar el archivo ServiceDefitinion.csdef., el archivo de configuración del Role.

En este archivo vemos una sección <Sites> donde se define un único site llamado Web. Su punto de entrada es el EndPoint1 definido más abajo (protocolo http, puerto 80).

A este site le vamos a añadir el directorio virtual, que va a ser la carpeta que acabamos de crear. De esta forma tendremos una ruta virtual a la carpeta imagenes, definida en el atributo physicalDirectory, y que es accesible desde “/directorioImagenes”, especificado en el atributo name.

image

Al ejecutar podemos navegar hasta el archivo about.txt, que habíamos añadido anteriormente a la carpeta, para comprobar que funciona correctamente. Utilizamos la ruta virtual /directorioImagenes/about.txt.

image

Si volvemos a la ventana de administración del IIS podemos ver nuestro despliegue y el directorio virtual que hemos creado.

image

Aplicación virtual

Cuando desplegamos una aplicación en el IIS esta se convierte en nuestra aplicación raíz o predeterminada. Pero podemos tener más aplicaciones llamadas aplicaciones virtuales. Estas aplicaciones están contenidas dentro de nuestra aplicación raíz y forman parte de su ruta.

Vamos a ver cómo añadir una aplicación virtual, que contenga a su vez un directorio virtual, al site que tenemos creado.

Añadiremos otro proyecto Web con una aplicación Web ASP.NET. En este caso llamada VirtualApp.

image

Esta será la aplicación que utilizaremos como aplicación virtual del site. Editaremos el Default.aspx para diferenciarlo del de nuestro Web Role. Cambiaremos el texto del título <h2> a “Aplicación Virtual”.

El siguiente paso es editar el fichero de configuración para añadir la aplicación virtual al site. También vamos a añadir un directorio virtual a la aplicación. De esta forma tendremos el mismo directorio tanto en el Web Role como en la aplicación virtual.

image

Con physicalDirectory definimos donde se encuentra los archivos de nuestra aplicación (el proyecto que acabamos de crear “../VirtualApp”) y con el name la ruta virtual (“/aplicacionVirtual”).

Al ejecutar podremos acceder a la aplicación virtual y al directorio virtual añadido a dicha aplicación.

Si miramos en la ventana de administración del IIS veremos cómo tenemos la aplicación virtual con su directorio virtual.

image

Podemos añadir más aplicaciones virtuales siguiendo los mismos pasos.

Duplicar el site

También tenemos la posibilidad de duplicar el site dando servicio en otros puertos y/o protocolos diferentes. Así que vamos a ver cómo podemos añadir otro site editando el archivo de configuración.

image

Añadimos un nuevo site por medio de la etiqueta <Site>. Tendremos que definir un nombre (name=”Web2”) y el directorio donde se encuentran los archivos. En este caso queremos duplicar el mismo site, así que la ruta será la misma que el site Web (“../WebRole1”).

Junto con el site tenemos otro punto de acceso llamado EndPoint2 al puerto 81. Con eso accederemos al sitio Web en el puerto 80 y Web2 en el puerto 81.

Si ejecutamos el proyecto se nos abrirá 2 instancias del navegador, una por cada site con 2 puertos distintos sirviendo la misma aplicación web.

image

También podemos comprobar en nuestro IIS los 2 sites desplegados.

image

Añadir otro site

Hemos visto cómo podemos crear varios sites con el mismo Web Role. El siguiente paso será que mediante ese Web Role se pueda crear otro site con otro proyecto distinto y sea el Web Role quien lo despliegue.

Así que vamos a añadir un nuevo proyecto a nuestra solución con una aplicación Web ASP.NET llamada Site3.

image

Cambiaremos la Default.aspx para diferenciar la página principal del Web Role de la que acabamos de crear. Por ejemplo cambiar el texto del título <h2> a “Mi tercer sitio”.

Con el nuevo proyecto creado vamos a editar el archivo de configuración para añadir un nuevo site siguiendo los pasos anteriores.

image

En este caso el proyecto se encuentra en nuestra solución, así que el directorio físico será “../Site3” pero si tenemos el proyecto en otra ruta (hemos creado el proyecto en otra solución) tendremos que poner la ruta completa al proyecto.

Añadimos otro Endpoint a la lista para que esté sirva la aplicación en el puerto 82 en este caso.

Al ejecutar podremos ver 3 instancias del navegador, 2 con la aplicación del Web Role (puerto 81 y 82) y otra con el nuevo proyecto que hemos creado (puerto 83).

image

En la ventana de administración del IIS veremos nuestros 3 sites.

image

De esta forma podemos tener, por ejemplo, nuestro sitio principal en el puerto 80 y crearnos otro proyecto con el panel de administración del sitio, estando este en el puerto 81 o incluso con protocolo HTTPS para dar más seguridad.

Un saludo!

José Perona -- @JVPerona -- Developer Evangelist Jr.