Buenas lectores y lectoras, continuando con el tema de Windows Azure pasamos al siguiente tema, los Roles en Windows Azure. Este es un tema meramente para desarrolladores/as de software, por lo que es un aspecto para que lo tomen en cuenta.
¿Roles?
En Windows Azure existen 3 roles para el desarrollo de aplicaciones: Web Role, Worker Role y Virtual Machine Role. Vamos a dar principal importancia a los primeros dos.
Web Role
Un Web Role es un role de Windows Azure donde se implementan las aplicaciones web, sitios web o servicios web. Son las aplicaciones con las cuales interactúa un usuario directamente.
Un Web Role puede ser una aplicación de ASP.NET, ASP.NET MVC, Windows Comunication Foundation, etc. También puede ser un sitio web desarrollado en Node.js, Java, PHP y otros (en el siguiente post hablaré un poco sobre esta interoperabilidad con estas plataformas).
Visual Studio 2010 nos brinda 3 plantillas para Web Roles cuando creamos un proyecto Cloud: ASP.NET, ASP.NET MVC3, MVC2, Silverlight Bussiness Aplication y WCF Service.
Los Web Roles cuentan con un archivo llamado WebRole.cs, el cuál Tiene la configuración de las acciones del servicio, como los métodos OnStart, OnStop, y más que se ejecutan automáticamente cuando se levanta el rol.
Worker Role
Un Worker Role es un rol de Windows Azure que se ejecuta en background, muy parecido a los servicios del sistema operativo (hilos de procesamiento). Estos roles se ejecutan durante el tiempo que defina el usuario, pudiendo ser “infinitos” (hasta que sean eliminados). Estos sólo pueden ser desarrollados en .NET.
Visual Studio también nos brinda una plantilla para crear Worker Roles.
Un Worker Role puede ser accesado desde dentro de la Nube, como fuera de esta, mediante HTTP, HTTPS y TCP (Este solamente para los puntos de entrada internos).
Virtual Machine Role
Un Virtual Machine Role es un rol de Windows Azure que permite la ejecución de una instancia de Windows Server 2008 R2 personalizada para facilitar las pruebas y la movida de aplicaciones a entornos en la nube
Código, código
Bueno, luego de esta explicación teórica vamos a un pequeño ejemplo
Creamos un proyecto Cloud en Visual Studio 2010 (si no tienes esta opción probablemente no cuentes con el SDK, lo puedes descargar de http://www.windowsazure.com/es-es/develop/net/). Lo nombramos “DemoRoles”.
Agregamos un Web Role y un Worker Role
El solution explorer se verá de la siguiente manera
En el Web Role, modificamos el HTML de la página Default.aspx de la siguiente manera
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebRole1._Default" %> <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"> </asp:Content> <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> <h2> Roles en Windows Azure </h2> <p> Esto es un Web Role </p> <p> Gracias por leer! </p> </asp:Content>
Ahora, vamos a la clase WorkerRole.cs y modificamos el método Run() de la siguiente manera
public override void Run() { // Implementacion del método Run int numIteraciones = 1; string mensaje = "Vamos por la iteracion {0}"; Trace.WriteLine("$projectname$ entry point called", "Information"); while (true) { Thread.Sleep(10000); Trace.WriteLine(string.Format(mensaje,numIteraciones), "Information"); numIteraciones++; } }
Cuando ejecutamos la aplicación podemos ver el Web Role desde nuestro navegador y el Worker Role desde el emulador Compute.
Web Role
Worker Role
Bueno, hasta aquí por esta ocasión, espero que les haya gustado este primer acercamiento con código fuente y esta aplicación en la Nube. Cualquier duda, comentario o queja la puedes dejar al final. Gracias!
Jimmy Campos Blanco. Costa Rica.
PD: Para finalizar, cómo siempre, una recomendación musical, AC/DC y un gran éxito “It’s a long way to the top”.