Windows Azure

Desarrollo e implementación de aplicaciones de Windows Azure en Visual Studio 2010

Jim Nakashima, Hani Atassi y Danny Thorpe

Existen muchas razones para implementar una aplicación o servicios en Windows Azure, la plataforma de servicios de nube de Microsoft. Entre éstas se encuentran la reducción de los costos de operación y hardware al pagar sólo por lo que se usa, la creación de aplicaciones capaces de escalar de manera casi infinita, la enorme capacidad de almacenamiento, la ubicación geográfica y mucho más.

Sin embargo, una plataforma sólo es interesante desde el punto de vista intelectual cuando los desarrolladores realmente pueden usarla. Los desarrolladores son el alma y el corazón de cualquier versión de plataforma; la propia definición de una versión exitosa es el gran número de desarrolladores que implementan aplicaciones y servicios en ella. Microsoft siempre se ha concentrado en proporcionar la mejor experiencia de desarrollo para una amplia gama de plataformas, ya sean establecidas o emergentes, con Visual Studio, y lo mismo se aplica para la computación nube. Microsoft agregó compatibilidad directa para crear aplicaciones de Windows Azure en Visual Studio 2010 y Visual Web Developer 2010 Express.

En este artículo, le mostraremos paso a paso, mediante Visual Studio 2010, el ciclo de vida completo de desarrollo de aplicaciones de Windows Azure. Tenga en cuenta que, aunque no sea un usuario de Visual Studio actualmente, de todas formas puede evaluar el desarrollo con Windows Azure de forma gratuita, mediante el soporte de Windows Azure en Visual Web Developer 2010 Express.

Creación de un servicio de nube

Inicie Visual Studio 2010, haga clic en el menú File y elija New | Project para que aparezca el diálogo New Project. Seleccione el nodo Cloud en Installed Templates | Visual C# (o Visual Basic). Esto muestra una plantilla de proyecto Enable Windows Azure Tools que, al hacer clic sobre ella, muestra una página con un botón para instalar herramientas de Windows Azure para Visual Studio.

Antes de instalar las herramientas de Windows Azure, asegúrese de instalar IIS en el equipo. La simulación de desarrollo local de la nube usa IIS. La manera más fácil de instalar IIS es mediante el instalador de plataforma web disponible en microsoft.com/web. Seleccione la pestaña Platform y haga clic para incluir los productos recomendados en el servidor web.

Descargue e instale las herramientas de Windows Azure y reinicie Visual Studio. Como verá, una plantilla de proyecto Windows Azure Cloud Service reemplazó a la plantilla de proyecto Enable Windows Azure Tools. Seleccione esta plantilla para que aparezca el diálogo New Cloud Service Project que se muestra en la figura 1. Este diálogo permite agregar roles a un servicio de nube.

image: Adición de roles a un nuevo proyecto de servicio de nube

Figura 1 Adición de roles a un nuevo proyecto de servicio de nube

Un rol de Windows Azure es un componente individual escalable que se ejecuta en la nube, en que cada instancia de un rol corresponde a una instancia de máquina virtual (VM).

Existen dos tipos de roles:

  • Un rol web es una aplicación web que se ejecuta en IIS. Su acceso es a través de un extremo HTTP o HTTPS.
  • Un rol de trabajo es una aplicación de procesamiento de fondo que ejecuta código .NET arbitrario. También tiene la capacidad de exponer extremos internos y con conexión a Internet.

Como ejemplo práctico, puedo tener un rol web en mi servicio de nube que implemente un sitio web adonde mis usuarios puedan llegar a través de URL, como http://[somename].cloudapp.net. También puedo tener un rol de trabajo que procese un conjunto de datos usados por dicho rol web.

Puedo establecer el número de instancias de cada rol independientemente, tales como tres instancias de rol web y dos instancias de rol de trabajo, lo que corresponde a tener tres VM en la nube que ejecuten mi rol web y dos VM en la nube en que ejecuten mi rol de trabajo.

Puede usar el diálogo New Cloud Service Project para crear un servicio de nube con varios roles web y de trabajo, y puede usar una plantilla diferente para cada rol. Puede elegir la plantilla que desee usar para crear cada rol. Por ejemplo, puede crear un rol web mediante la plantilla ASP.NET Web Role, la plantilla WCF Service Role o la plantilla ASP.NET MVC Role.

Después de agregar roles al servicio de nube y hacer clic en OK, Visual Studio creará una solución que incluirá el proyecto de servicio de nube y un servicio correspondiente a cada rol que se haya agregado. La figura 2 muestra un servicio de nube de ejemplo que contiene dos roles web y un rol de trabajo.

image: Proyectos creados para roles en el servicio de nube

Figura 2 Proyectos creados para roles en el servicio de nube

Los roles web son proyectos de aplicación web de ASP.NET que tienen sólo un par de diferencias. WebRole1 contiene referencias a los siguientes ensamblados, a los que no hace referencia una aplicación web ASP.NET estándar:

  • Microsoft.WindowsAzure.Diagnostics (API de diagnóstico y registro)
  • Microsoft.WindowsAzure.ServiceRuntime (API de entorno y runtime)
  • Microsoft.WindowsAzure.StorageClient (.NET API para tener acceso a los servicios de almacenamiento de Windows Azure para blobs, tablas y colas)

El archivo WebRole.cs contiene código para configurar registro y diagnóstico y un escucha de seguimiento de web.config/app.config que permite usar la API de registro .NET estándar.

El proyecto de servicio de nube actúa como un proyecto de implementación, que indica los roles que se incluyen en el servicio de nube junto con los archivos de definición y configuración. Proporciona una funcionalidad de ejecución, de depuración y de publicación específicas de Windows Azure.

Es fácil agregar o quitar roles en el servicio de nube después de completada la creación del proyecto. Para agregar otros roles a este servicio de nube, haga clic con el botón secundario en el nodo Roles del servicio de nube y seleccione Add | New Web Role Project o Add | New Worker Role Project. Al seleccionar cualquiera de estas opciones, aparece el diálogo Add New Role, donde puede elegir la plantilla de proyecto que va a usar al agregar este rol.

Para agregar cualquier proyecto de rol web de ASP.NET a la solución, haga clic con el botón secundario en el nodo Roles, seleccione Add | Web Role Project en la solución y elija el proyecto que va a asociar como rol web.

Para eliminar, sólo seleccione el rol que desea eliminar y presione la tecla Supr. Entonces puede eliminar el proyecto.

También puede hacer clic con el botón secundario en los roles bajo el nodo Roles y seleccionar Properties para que aparezca una pestaña Configuration para dicho rol (consulte la figura 3). Esta pestaña Configuration facilita agregar o modificar los valores de los archivos ServiceConfiguration.cscfg y ServiceDefinition.csdef.

Figura 3 Configuración de un rol

Figura 3 Configuración de un rol

Al desarrollar para Windows Azure, el proyecto de servicio de nube de su solución debe ser el proyecto StartUp para que la depuración funcione correctamente. Un proyecto es el proyecto StartUp cuando aparece en negrita en Solution Explorer. Para establecer el proyecto activo, haga clic con el botón secundario en el proyecto y seleccione Set as StartUp project.

Datos de la nube

Ahora que ha configurado la solución para Windows Azure, puede aprovechar sus habilidades en ASP.NET para desarrollar su aplicación.

Dado que está codificando, es conveniente que considere el modelo Windows Azure para que su aplicación sea escalable. Para administrar tráfico adicional hacia la aplicación, se debe aumentar el número de instancias para cada rol. Esto significa que la carga de las solicitudes estará equilibrada en todos sus roles y que esto afectará la manera en que diseñe e implemente su aplicación.

En particular, esto determina cómo se tiene acceso a los datos y cómo se almacenan. Muchos métodos conocidos de almacenamiento y recuperación de datos no son escalables y, por lo tanto, no son aptos para nubes. Por ejemplo, no se debe usar el almacenamiento de datos en el sistema de archivos local, porque no escala.

Para aprovechar la naturaleza escalable de la nube, debe conocer los nuevos servicios de almacenamiento. Windows Azure Storage ofrece servicios de almacenamiento de blob, cola y tabla escalables y Microsoft SQL Azure ofrece un servicio de base de datos relacional basado en nube y en tecnologías de SQL Server. Los blobs se usan para el almacenamiento de archivos nombrados junto con metadatos. El servicio de cola ofrece almacenamiento y entrega confiables de mensajes. El servicio de tabla ofrece almacenamiento estructurado, en que una tabla es un conjunto de entidades y cada una de las cuales contiene un conjunto de propiedades.

Para ayudar a los desarrolladores a usar estos servicios, el SDK de Windows Azure se proporciona con un servicio de almacenamiento para desarrollador, que simula la forma en que estos servicios de almacenamiento se ejecutan en la nube. Esto significa que los desarrolladores pueden escribir las aplicaciones que sean compatibles con los servicios de almacenamiento para desarrollador mediante las mismas API que son compatibles con los servicios de almacenamiento de nube.

Depuración

Para demostrar la ejecución y la depuración en Windows Azure en forma local, usemos uno de los ejemplos de code.msdn.microsoft.com/windowsazuresamples. Esta página de galería de códigos de MSDN contiene varios ejemplos de código para ayudarle a comenzar a crear aplicaciones y servicios web escalables que se ejecuten en Windows Azure. Descargue los ejemplos para Visual Studio 2010, después extraiga todos los archivos a una ubicación accesible, por ejemplo, la carpeta de sus Documentos.

El entramado de desarrollo exige la ejecución en modo elevado, por lo que debe iniciar Visual Studio 2010 como administrador. A continuación, navegue hacia la ubicación donde extrajo los ejemplos y abra la solución Thumbnails, un servicio de ejemplos que demuestra el uso de un rol web y de un rol de trabajo, así como el uso de la biblioteca StorageClient para interactuar con los servicios de cola y blob.

Cuando abra la solución, observará tres proyectos diferentes. Thumbnails es el servicio de nube que relaciona dos roles, Thumbnails_WebRole y Thumbnails_WorkerRole. Thumbnails_WebRole es el proyecto de rol web que ofrece una aplicación front-end para que el usuario cargue fotos y agrega un elemento de trabajo a la cola. Thumbnails_WorkerRole es el proyecto de rol de trabajo que captura el elemento de trabajo de la cola y crea miniaturas en el directorio designado.

Agregue un punto de interrupción al método submitButton_Click en el archivo Default.aspx.cs. Este punto de interrupción se seleccionará cuando el usuario seleccione una imagen y haga clic en Submit en la página.

protected void submitButton_Click(
  object sender, EventArgs e) {
  if (upload.HasFile) {
    var name = string.Format("{0:10}", DateTime.Now.Ticks, 
      Guid.NewGuid());
    GetPhotoGalleryContainer().GetBlockBlob(name).UploadFromStream(upload.FileContent);

Ahora, agregue un punto de interrupción en el método Run del archivo de rol de trabajo, WorkerRole.cs, inmediatamente después del código que intenta recuperar un mensaje de la cola y que comprueba si realmente existe uno. Este punto de interrupción se seleccionará cuando el rol web coloque un mensaje en la cola que el rol de trabajo recupere.

while (true) {
  try {
    CloudQueueMessage msg = queue.GetMessage();
    if (msg != null) {
      string path = msg.AsString

Para depurar la aplicación, vaya al menú Debug y seleccione Start Debugging. Visual Studio creará el proyecto, iniciará el entramado de desarrollo, inicializará el almacenamiento de desarrollo (si se ejecuta por primera vez), empaquetará la implementación, se adjuntará a todas las instancias de rol y, a continuación, iniciará el explorador orientado hacia el rol web (consulte la figura 4).

image: Ejecución del ejemplo Thumbnails

Figura 4 Ejecución del ejemplo Thumbnails

En este punto, verá que el explorador se orienta hacia el rol web y que el área de notificaciones de la barra de tareas muestra que se inició el entramado de desarrollo. El entramado de desarrollo es un entorno de simulación que ejecuta instancias de rol en el equipo de manera muy similar a como se ejecutan en la nube verdadera.

Haga clic con botón secundario en el icono de notificación de Windows Azure de la barra de tareas y haga clic en Show Development Fabric UI. Esto iniciará la aplicación misma de entramado de desarrollo, que permite realizar varias operaciones en las implementaciones, tales como visualizar registros y reiniciar y eliminar implementaciones (consulte la figura 5). Tenga en cuenta que el entramado de desarrollo contiene una nueva implementación que hospeda una instancia de rol web y una instancia de rol de trabajo.

image: El entramado de desarrollo

Figura 5 El entramado de desarrollo

Observe los procesos a los que se adjuntó Visual Studio (Debug/Windows/Processes); observará que son tres: WaWebHost.exe, WaWorkerHost.exe e iexplore.exe.

WaWebHost (host de instancia web de Windows Azure) y WaWorkerHost (host de instancia de trabajo de Windows Azure) hospedan las instancias de rol web y de rol de trabajo, respectivamente. En la nube, cada instancia se hospeda en su propia VM, mientras que en la simulación de desarrollo local, cada instancia de rol se hospeda en un proceso por separado y Visual Studio se adjunta a todos ellos.

De forma predeterminada, Visual Studio se adjunta mediante el depurador administrado. Si desea usar otro, como el depurador nativo, elíjalo en Properties del proyecto de rol correspondiente. Para proyectos de rol web, la opción de depurador se ubica en la pestaña Web de propiedades del proyecto. Para proyectos de rol de trabajo, la opción se encuentra en la pestaña Debug de propiedades del proyecto.

De forma predeterminada, Visual Studio usa el motor de scripts para adjuntarse a Internet Explorer. Para depurar aplicaciones de Silverlight, se debe habilitar el depurador de Silverlight en Properties del proyecto de rol web.

Busque una imagen que desee cargar y haga clic en Submit. Visual Studio se detiene en el punto de interrupción que usted estableció dentro del método submitButton_Click, brindándole todas las características de depuración que esperaría de Visual Studio. Presione F5 para continuar; el método submitButton_Click genera un nombre único para el archivo, carga la secuencia de la imagen en el almacenamiento de blob y agrega un mensaje a la cola con el nombre del archivo.

Ahora verá que Visual Studio hace una pausa en el punto de interrupción establecido en el rol de trabajo, lo que significa que el trabajo recibió un mensaje de la cola y está listo para procesar la imagen. Una vez más, cuenta con todas las características de depuración que esperaría.

Presione F5 para continuar; el nombre de trabajo obtendrá el nombre del archivo de la cola de mensajes, recuperará la secuencia de la imagen del servicio de blob, creará una imagen en miniatura y cargará la nueva imagen en miniatura al directorio de miniaturas del servicio de blob, lo que aparecerá en el rol web.

Implementación

Ahora que ha creado, editado y depurado su aplicación en forma local, está listo para implementarla en la nube. Se recomienda el siguiente proceso al implementar una aplicación en Windows Azure:

  • Comience a ejecutar la aplicación de forma local en el entramado de desarrollo de Windows Azure mediante almacenamiento local.
  • Ejecute la aplicación de forma local en el entramado de desarrollo mediante una cuenta de almacenamiento de Windows Azure.
  • Ejecute la aplicación en Windows Azure mediante una cuenta de almacenamiento de Windows Azure.

En la primera etapa, puede realizar todo el desarrollo en el equipo local a través del entramado de desarrollo y del almacenamiento de desarrollo como suplentes de la infraestructura de nube de Windows Azure. Ni siquiera necesita una conexión de red: puede desarrollar y depurar la aplicación o el servicio de Windows Azure completamente sin conexión. Es probable que realice el 70% del desarrollo del proyecto en esta primera etapa.

En la segunda etapa, reemplazará el suplente de almacenamiento local por el real, almacenamiento de Windows Azure, pero mantendrá las ventajas de depuración y diagnóstico de la ejecución del código de aplicación de Windows Azure en el entramado de desarrollo local. Puede establecer puntos de interrupción en el código fuente, pasar por el código fuente línea por línea, evaluar las expresiones y examinar las pilas de llamadas mientras la aplicación de Windows Azure interactúa con el almacenamiento en nube. Es probable que invierta entre un 20% y un 25% del ciclo del proyecto en esta etapa, es decir, refinando el código y probándolo en operaciones asincrónicas de escenario real.

Para cuando llegue a la tercera etapa, la aplicación de Windows Azure debe estar casi terminada. Debe contar con todas las características y todos los códigos, excepto las correcciones de errores. En esta etapa, debe centrarse principalmente en las pruebas y en el ajuste de rendimiento. Con la aplicación de Windows Azure ejecutándose en la nube, no podrá darse el lujo de depurar código fuente, por lo que deberá volver al registro de diagnóstico.

Es probable que no desee que el mundo entero vea su nueva aplicación de Windows Azure en la URL de destino en el momento que la cargue en la nube de Windows Azure. El servicio hospedado de Windows Azure tiene la noción de varias implementaciones dentro del mismo servicio hospedado. Cada servicio hospedado de Windows Azure tiene un área privada de implementación de ensayo en la que puede probar silenciosamente su código en la nube, y un área de implementación de producción pública en la que puede publicar su código probado para que los clientes lo usen.

Sólo se puede tener acceso a las implementaciones de ensayo a través de una única URL con un prefijo de GUID asignado por el sistema. Las implementaciones de producción pueden ser el objetivo de asignaciones de nombre de dominio personalizado para su fácil acceso.

Paso al almacenamiento de Windows Azure

Ahora que el servicio Thumbnails se está ejecutando en un equipo local del entramado de desarrollador, actualicémoslo para que funcione en una cuenta de almacenamiento de Windows Azure en la nube. Esto implica obtener una cuenta de almacenamiento y realizar los cambios de configuración para ejecutar el servicio Thumbnails en la cuenta de almacenamiento. Realizar la ejecución local pero usar almacenamiento en nube para los datos es una excelente forma de asegurar que el código se ejecute cuando esté hospedado en Windows Azure.

Comience por navegar al portal de desarrollo de Windows Azure (windows.azure.com) e inicie sesión con su Live ID. En la página, seleccione New Service y haga clic en Storage Account. En la página Create a Service (consulte la figura 6), escriba un nombre apto para la cuenta de almacenamiento (éste no es el nombre de servicio o dominio; éste se le pedirá en la siguiente página). También puede ingresar una descripción del proyecto. Después, escriba el nombre de servicio o dominio en la siguiente página (consulte la figura 7). Este nombre de dominio es global, por lo que es probable que deba probar con varias alternativas antes de obtener un nombre que no se haya usado anteriormente en otro servicio. Asegúrese de hacer clic en Check Availability para comprobar que el nombre sea único.

image: Configuración de un servicio de almacenamiento

Figura 6 Configuración de un servicio de almacenamiento

 

image: Configuración de un dominio de almacenamiento

Figura 7 Configuración de un dominio de almacenamiento

Es conveniente crear un grupo de afinidad para garantizar que el almacenamiento y los servicios hospedados que lo usan estén ubicados en el mismo centro de datos cada vez que sea posible. Los grupos de afinidad también pueden especificar una preferencia de región geográfica, de manera que el servicio y el almacenamiento estén lo más cerca posible de los destinatarios para minimizar el tiempo de tránsito en la red.

Haga clic en Create y verá una página de resumen de la nueva cuenta de almacenamiento.

Ahora, debe indicar al servicio Thumbnails para usar la nueva cuenta de almacenamiento para almacenar sus miniaturas e imágenes. Haga doble clic en el nodo Thumbnails_WebRole bajo Roles en el Explorador de soluciones de Visual Studio para abrir la página de propiedades correspondiente. Seleccione la pestaña Settings, elija DataConnectionString y haga clic en el botón de edición del extremo derecho de la fila de la cuadrícula. Aparecerá el diálogo Storage Connection String, que se muestra en la figura 8.

image: Propiedades de cadena de conexión de almacenamiento

Figura 8 Propiedades de cadena de conexión de almacenamiento

 “Use development storage” es la opción predeterminada para proyectos nuevos de Azure. Haga clic en “Enter storage credentials” y escriba los detalles de servicio de almacenamiento. En el campo Account name, escriba el nombre de servicio dominio que escribió cuando creó el servicio de almacenamiento. Esta es la primera parte de su dominio, thumbnails1138 (todo en minúsculas) en el ejemplo.

En el campo Account key, escriba la clave de acceso principal que aparece en la página web de resumen de servicio de almacenamiento. Puede seleccionar el texto de la clave en el explorador, copiarlo y pegarlo en el cuadro de edición AccountSharedKey.

Tenga en cuenta que la clave de acceso secundaria ofrece el mismo acceso a la cuenta de almacenamiento que la clave de acceso principal y se genera como copia de seguridad en caso de que la clave de acceso principal se vea comprometida. La regeneración de la clave invalida la clave antigua, lo que cierra el acceso al almacenamiento a cualquier usuario que aún use la clave antigua.

Establezca que los extremos de conexión usen los extremos HTTPS predeterminados y haga clic en OK.

Repita estos pasos también para Thumbnails_WorkerRole bajo Roles, de manera que el rol web se comunique con el mismo servicio que el rol de trabajo. Cuando tenga que actualizar varios roles, puede copiar el valor de cadena de conexión al portapapeles y simplemente pegarlo en la celda del valor DataConnectionString en cada una de las otras páginas de propiedades de rol para ahorrar un poco de tiempo.

Una vez que haya cambiado los roles web y de trabajo para que usen almacenamiento de Windows Azure, presione F5 en Visual Studio para depurar el servicio de nube y asegurar que todo funcione correctamente.

Verá que la URL de la página web que está depurando sigue estando hospedada localmente, pero las URL de las miniaturas (visibles en sus diálogos Properties) ahora apuntan a almacenamiento de Windows Azure.

Tenga en cuenta que lo más probable es que esta etapa de desarrollo (servicios locales con almacenamiento en nube) tenga el rendimiento más deficiente de las tres etapas de implementación. La etapa 1 (local/local) será bastante irritante, porque todo se encuentra en el mismo cuadro y tiene un público total de uno (usted). La etapa 3 (nube/nube) tendrá el beneficio de hardware en escala de nube y afinidad de centro de datos. Sin embargo, la etapa 2 (local/nube) ejecutará el código cuyo almacenamiento suponga razonablemente que está cerca, pero, de hecho, los datos se encuentran probablemente a varios saltos de redes del entorno de ejecución local.

No evalúe el rendimiento de su aplicación en la configuración local/nube. Sin embargo, puede convertir ese retardo de red en una ventaja: use esta etapa como una prueba de esfuerzo para ver cómo el código administra tiempos de respuesta exagerados desde el servicio de almacenamiento. Si ha administrado algo con una llamada sincrónica que en realidad debería ser asincrónica, probablemente notará esto bastante rápido.

Una vez que todo funcione en la configuración local/nube, estará preparado para implementar el código en un servicio hospedado de Windows Azure.

Creación de un servicio hospedado

Para crear un servicio completamente hospedado, vuelva al portal de desarrollador de Windows Azure e inicie sesión con su Live ID. Haga clic en New Service y después en Hosted Services. Esto lo lleva a una página en que puede especificar el nombre apto para proyecto y la descripción que usa el portal de desarrollador. Escriba una etiqueta de servicio y, opcionalmente, una descripción del servicio. Haga clic en Next. Ahora puede escribir un nombre de dominio para el proyecto de servicio hospedado (consulte la figura 9). Establezca que el grupo de afinidad coincida con el grupo de afinidad de Thumbnails creado anteriormente con este servicio de almacenamiento. Una vez creado el proyecto, verá una página de resumen del proyecto.

image: Configuración de un servicio hospedado

Figura 9 Configuración de un servicio hospedado

Para implementar el proyecto desde Visual Studio, haga clic con el botón secundario en el nodo de proyecto Thumbnails en Solution Explorer y seleccione Publish. Este comando crea un paquete de los archivos binarios y archivos relacionados de la aplicación Windows Azure, abre Windows Explorer para mostrar el directorio local donde se creó el paquete e inicia el explorador web predeterminado para explorar en el portal de desarrollador.

En la página web de portal de desarrollador, navegue a la página de resumen del servicio hospedado Thumbnails y haga clic en Deploy en Staging para que aparezca la página Staging Deployment (consulte la figura 10). Aquí es donde se especifican el paquete y el archivo de configuración para cargar.

image: Elección del paquete para implementar

Figura 10 Elección del paquete para implementar

Puede copiar la ruta desde la ventana de Windows Explorer que abrió Visual Studio en este diálogo File Open, que facilita seleccionar los archivos de paquete de servicio (.cspkg) y de configuración de servicio.

El portal, a continuación, cargará el paquete e implementará el servicio de nube para almacenamiento provisional, que coloca los roles en estado Allocated. Esto significa que la aplicación Windows Azure se ha aprovisionado con hardware de centro de datos, pero su ejecución aún no se ha implementado.

Para probar el servicio de nube en el área de almacenamiento provisional, es necesario ejecutarlo. Haga clic en Run. Esto pondrá el rol web en el estado Initializing. Cuando el rol web esté listo, el estado cambiará a Started.

Tenga en cuenta que existen planes para facilitar aun más la implementación desde Visual Studio hasta la nube en futuras actualizaciones, pero este procedimiento se mantendrá vigente aunque se implementen dichas características.

Una vez iniciados los roles, puede probarlos navegando a la URL de ensayo (la URL de cloudapp.net que comienza con un GUID).

El aprovisionamiento de una aplicación en el centro de datos implica mucho trabajo pesado en segundo plano. Deje transcurrir al menos 10 minutos para que la aplicación haga transición de Initializing a Started. Ahora, ¿no es acaso conveniente contar con el entramado de desarrollador en el equipo local?

Una vez que esté satisfecho con el servicio de nube en almacenamiento provisional, puede promoverlo a producción haciendo clic en el botón que aparece en la figura 11.

image: Botón de promoción

Figura 11 Botón de promoción

Cuando los detalles de la implementación aparezcan en el lado Production de la página, el servicio estará en funcionamiento en su URL final.

Si necesita probar una revisión de su aplicación, o sólo desea continuar el desarrollo en paralelo a la implementación de producción en funcionamiento, puede cargar un nuevo paquete al almacenamiento provisional y probarlo a través de la URL de ensayo. La promoción a producción en realidad es un intercambio: el almacenamiento provisional se mueve a producción, y lo que estaba en producción pasa a almacenamiento provisional.

Aunque es posible cargar directamente a producción, se recomienda que siempre implemente primero en almacenamiento provisional y realice algún grado de prueba de aceptación antes de pasar a producción.

Tenga en cuenta que varias implementaciones pasarán de manera predeterminada a usar el mismo servicio de almacenamiento. Si necesita aislamiento de datos entre producción y almacenamiento provisional (por ejemplo, para que el almacenamiento provisional pueda limpiar la base de datos sin afectar los datos de producción), deberá modificar los enlaces de almacenamiento para cada implementación antes de implementarla. Esto generalmente se logra mediante dos conjuntos de datos de producción de almacenamiento y migración para el almacenamiento provisional antes de promover el almacenamiento provisional a producción.

Actualización de la configuración del servicio

Si desea poner en marcha instancias regionales de su servicio antes de la carga adicional, o apagar instancias que no se usan, puede hacerlo modificando la configuración de la implementación sobre la marcha. No es necesario que vuelva a implementar todo el paquete, sólo el archivo de configuración de servicio. En el portal, haga clic en Configure para actualizar la configuración del servicio (cscfg), ya sea cargando un nuevo archivo de configuración de servicio creado por Visual Studio o mediante el editor que proporciona el portal del desarrollador.

Ahora agreguemos un extremo HTTPS a la aplicación Thumbnails. Este es un proceso de tres pasos. Debe configurar el extremo, configurar el certificado y cargar dicho certificado.

Para configurar el extremo, abra la UI de configuración en el rol web haciendo clic con el botón secundario en el nodo Thumbnails_WebRole bajo el nodo Roles en Solution Explorer y seleccionando Properties. Vaya a la pestaña Endpoints y haga clic en la casilla para seleccionar HTTPS. Esto agrega el extremo HTTPS, pero no especifica el certificado.

Vaya a la página Configuration y desactive la opción “Launch browser for: HTTP endpoint”. Al desactivar esta opción, al ejecutar o depurar el servicio de nube, sólo se iniciará el explorador predeterminado para el extremo HTTPS.

En Visual Studio, haga clic en Debug | Start Debugging para empaquetar y ejecutar el servicio de nube en la simulación de desarrollo local. La simulación de implementación siempre usa un certificado autofirmado emitido para y por 127.0.0.1, que corresponde al host local. Dado que el certificado no es de confianza, el explorador web arrojará un error de certificado. Esto es normal. Haga clic en “Continue to this website (not recommended)” para explorar en el sitio web.

Para que el certificado sea de confianza y, por lo tanto, no ver los errores de certificado, puede instalar el certificado en el almacenamiento de certificados de entidades de certificación raíz de confianza. Haga esto sólo si conoce adecuadamente las implicaciones de seguridad.

Para configurar un certificado para usarlo en la nube, es necesario un certificado que se cargue en la nube y configurar dicho certificado para el rol. Para propósitos de este artículo, crearemos y usaremos un certificado autofirmado. Cree un certificado autofirmado abriendo el administrador de IIS, seleccionando Server Certificates y haciendo clic en Create Self-Signed Certificate bajo el encabezado Actions al extremo derecho del diálogo. Después de crear el certificado, haga clic en Export para exportar el certificado a un archivo .pfx.

Navegue al portal de desarrollador de Windows Azure y seleccione el componente de servicio hospedado en el cual se realizará la implementación. Bajo el encabezado Certificates, seleccione Manage. Cargue el certificado escribiendo el nombre del archivo .pfx y la contraseña correspondiente que escribió durante el paso de exportación. Copie la huella digital del certificado después de instalado en el componente de servicio hospedado.

Para configurar el certificado, vuelva a Visual Studio, abra la UI de configuración de Thumbnails_WebRole, haga clic en la pestaña Certificates y haga clic en Add Certificate. Dé un nombre al certificado (por ejemplo, sslCert), péguelo en la huella digital y deje la ubicación y el nombre de almacenamiento predeterminados de LocalMachine y My.

La página de configuración de certificados permite especificar los certificados que se instalarán para un rol determinado en las instancias de VM y los almacenamientos donde se instalarán dichos certificados. En otras palabras, este mismo proceso se puede usar para cualquier certificado que desee tener en las VM en la nube, no sólo para certificados SSL.

Por último, cambie a la pestaña Endpoints y seleccione sslCert para el certificado de HTTPS.

Ahora implemente la aplicación. Ahora podrá tener acceso a su sitio web a través de HTTP y HTTPS. Dado que cargamos un certificado autofirmado, el explorador mostrará un error de certificado al navegar al extremo HTTPS. El uso de un certificado firmado real resuelve este problema.

Conclusión

Las herramientas de Windows Azure y Visual Studio 2010 facilitan la creación, la edición, la configuración, la depuración y la implementación de aplicaciones que se ejecutan en Windows Azure. Permiten aprovechar sus habilidades existentes con ASP.NET y con Visual Studio.

El complemento de herramientas de Windows Azure está diseñado para Visual Studio 2010 y Visual Studio 2008. La manera más fácil de instalar las herramientas de Windows Azure para Visual Studio 2008 es mediante el instalador de plataforma web que se encuentra disponible en microsoft.com/web. Asegúrese de agregar escenarios de herramientas de desarrollador en las opciones.

Para obtener las noticias y la información más recientes acerca de Windows Azure, visite windowsazure.com y blogs.msdn.com/jnak.

Hani Atassi es un ingeniero de software del equipo de herramientas de Windows Azure. Antes de su trabajo en herramientas de nube, Atassi se dedicó a desarrollar Windows Vista y Microsoft.com.

Danny Thorpe es un ingeniero de software principal del equipo de herramientas de Windows Azure. Anteriormente contribuyó a la fundación de Google Gears de Google y fue arquitecto compilador de Delphi en Borland.

Jim Nakashima es administrador de programas del equipo de herramientas de Windows Azure, dedicado a la creación de experiencias de desarrollador de un extremo a otro de Windows Azure. Nakashima estuvo varios años trabajando en la Windows Presentation Foundation, en Silverlight Designer y en herramientas antes de ser atraído por las posibilidades infinitas de la nube.

Gracias a los siguientes expertos técnicos por su ayuda en la revisión de este artículo: Anson Horton y Gus Perez