40
Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com Windows Azure En este manual desgranamos la propuesta de Microsoft sobre Windows Azure y cómo nos permite desarrollar la programación en la nube. Autores del manual Este manual ha sido realizado por los siguientes colaboradores de DesarrolloWeb.com: Toni Recio y Gerard López Project Manager y Analista Programador, ambos en Pasiona Consulting (5 capítulos) Gisela Torres Buitrago Desarrolladora en tecnologías .NET y Windows Azure MVP http://www.returngis.net/ (4 capítulos) Mario Cortés Flores SharePoint Lead en Plain Concepts http://geeks.ms/blogs/mcortes/ (1 capítulo) Miguel Angel Alvarez Director de DesarrolloWeb.com y EscuelaIT http://www.desarrolloweb.com (1 capítulo) Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización. 1

Manual Windows Azure

Embed Size (px)

DESCRIPTION

En este manual desgranamos la propuesta de Microsoft sobre Windows Azure y cómo nospermite desarrollar la programación en la nube.

Citation preview

Page 1: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

Windows AzureEn este manual desgranamos la propuesta de Microsoft sobre Windows Azure y cómo nos permite desarrollar la programación en la nube.

Autores del manual

Este manual ha sido realizado por los siguientes colaboradores de DesarrolloWeb.com: Toni Recio y Gerard LópezProject Manager y Analista Programador, ambos en Pasiona Consulting (5 capítulos)

Gisela Torres BuitragoDesarrolladora en tecnologías .NET y Windows Azure MVPhttp://www.returngis.net/ (4 capítulos)

Mario Cortés FloresSharePoint Lead en Plain Conceptshttp://geeks.ms/blogs/mcortes/ (1 capítulo)

Miguel Angel AlvarezDirector de DesarrolloWeb.com y EscuelaIThttp://www.desarrolloweb.com (1 capítulo)

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

1

Page 2: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

¿Qué es el cloud computing?En estos últimos años se ha hablado mucho acerca del cloud computing, la nube, el cambio que esto supone en nuestra forma de desarrollar y gestionar nuestras aplicaciones Pero ¿Qué es realmente el cloud� computing?

Las grandes empresas comenzaron a utilizar este término para referirse a aquellos servicios alojados en la red. De hecho esa es la primera cosa que a la mayoría de nosotros se nos viene a la cabeza sobre "Cloud Computing". Por ello, podemos decir que la palabra nube sería equivalente a lo que conocemos como Internet. Sin embargo, el concepto tiene mucho más alcance y es algo que pretendemos relatar en el presente artículo.

Tipos de cloud

En la actualidad existen 3 tipos de nubes:

• Nubes públicas: Se trata de aquellas que son administradas por el proveedor del servicio. La gran ventaja de las mismas es que no requieren de una inversión inicial para comenzar a utilizarlas y no suponen un gasto de mantenimiento para el cliente que la consume. Estas nubes son compartidas con otros clientes dentro de los data centers del proveedor.

• Nubes privadas: Las nubes privadas, a diferencia de las públicas, son administradas por el cliente para obtener un mayor control. Debido a esto, supone una inversión inicial en la infraestructura ya que esta será alojada on-premise, es decir, en las instalaciones del cliente. Como ventaja principal el cliente disfruta de una nube de su propiedad donde él es el único que reside en ella, aunque los gastos de mantenimiento corren a cuenta del propietario.

• Nubes híbridas: Por último tenemos esta opción intermedia entre las dos nubes anteriores. Si bien dicen que este tipo será el más extendido en el futuro, no está tan definido como el resto. La idea principal de las mismas es que el cliente podrá mantener el control de aquellas aplicaciones principales y delegar la administración en las que considere secundarias.

Tipos de servicios

Una vez cubierto los tipos de nubes que existen ¿Qué podemos hacer con ellas?

Dependiendo de la necesidad que necesitemos cubrir, existen distintos tipos de servicios dentro del cloud computing:

• Infrastructure as a Service (IaaS): Este tipo de servicio lo que nos ofrece es la infraestructura necesaria para poder subir nuestro entorno y además ejecutar el software propietario en ella. Los dos pilares fundamentales

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

2

Page 3: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

son la computación y el almacenamiento como servicio. En ocasiones se refieren a IaaS como HaaS (Hardware as a Service). Como ejemplos de este tipo de servicios podemos mencionar GoGrid y Amazon EC2 (Elastic Compute Cloud)

• Platform as a Service (PaaS): Cuando hablamos de la plataforma dentro de la nube, el servicio que nos ofrecen es el entorno donde podemos desplegar directamente nuestras aplicaciones. Los ejemplos más claros en este apartado son la plataforma Windows Azure por parte de Microsoft y Google App Engine.

• Software as a Service (SaaS): El último servicio, y uno de los más conocidos por el mercado, son aquellos transformados en aplicaciones finales proporcionadas por el proveedor, listas para ser usadas por los clientes. En este tipo de servicio se nos asegura el mantenimiento, el soporte y la disponibilidad del software. Dentro de este conjunto, podemos encontrar Microsoft Business Productivity Online Standard (BPOS) lo cual trata de un conjunto de conocidas aplicaciones en su versión online como SharePoint Online, Exchange Online, Office Live Meeting y Office Communications Online. Otro grupo de aplicaciones dentro de este ámbito serían Salesforce, conocidos principalmente por su CRM en la nube, y Basecamp donde su producto estrella es su herramienta de colaboración para proyectos.

Ventajas

Como ventajas de este modelo de administración y desarrollo podemos destacar el ahorro de costes como la más importante, además de la alta escalabilidad, fiabilidad, así como la abstracción del mantenimiento del hardware, algo hasta ahora novedoso en las grandes empresas con su propio departamento de IT.

Uno de los conceptos que mejor definen a los entornos cloud es el término "Pay as you go", el cual significa que solamente pagamos por uso y no una cuota fija mensual como, por ejemplo, en los servicios de hosting tradicionales.

Por último, cabe mencionar la agilidad con la que disponemos de estos servicios, consiguiendo en cuestión de minutos una puesta en producción que podría suponer meses, tratándose del proceso tradicional on-premise.

Desventajas

Si bien es cierto que las ventajas del cloud computing son dignas de ser consideradas, existen algunos puntos que pueden ser cruciales a la hora de pegar el salto a la nube:

En primer lugar, existe la percepción de inseguridad al desplazar nuestra información fuera de nuestro alcance físico, la cual puede manifestar un sentimiento de vulnerabilidad. Para solventar este "miedo" entre los posibles clientes, las grandes empresas del cloud disponen de sistemas eficientes y de alta seguridad para mantener los datos a salvo de posibles ataques.

Otro de los inconvenientes es la dependencia de un proveedor de Internet. Debido a la localización de los servicios, estamos atados a esta necesidad, por lo que es recomendable disponer de una segunda conexión en caso de fallo de la principal.

Aunque cada día menos, todavía existe cierta inmadurez en alguno de los servicios ofrecidos por falta de funcionalidad, en relación a productos similares diseñados para satisfacer estas necesidades en servidores dentro del cliente.

En resumen

En este apartado hemos podido conocer el concepto de cloud computing como la propuesta tecnológica de las grandes empresas para referirse a los diferentes servicios alojados en Internet, así como los distintos tipos de nubes disponibles en el mercado. Además hemos enumerado los tipos de servicios disponibles a día de hoy y cómo algunas empresas ya los ofrecen al público.

En el siguiente artículo veremos cómo la plataforma Windows Azure encaja dentro del cloud y cuáles son los servicios disponibles y futuros conocidos.

Nota: Otra aproximación a este novedoso concepto que poco a poco se integrará en la tecnología de nuestro día a día se puede apreciar en el artículo Cloud computing ¿una realidad?

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

3

Page 4: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

Artículo por Gisela Torres Buitrago

Cloud computing una realidad?Qué es Cloud Computing y qué características debe tener un servicio para ser considerado como Cloud Computing. Por qué significa una revolución y cuáles son las ventajas principales y las claves de su importancia.

"El Cloud Computing no está de moda, es una realidad!" Con esta afirmación me gustaría empezar a discutir cómo esta nueva forma de entender y consumir la informática está calando en el sector de las IT.

Pero ¿Qué es el cloud computing?, se podría resumir que el cloud computing es la capacidad de consumir servicios IT de forma ágil y flexible. Podríamos considerar servicio a todo aquello que realice IT y que se pueda empaquetar para ser consumido por distintos tipos de clientes o usuarios. Para que un servicio se pueda considerar como Cloud Computing debe cumplir con las siguientes afirmaciones:

• Pago por uso • Debe permitir agregar o decrementar recursos de forma sencilla y rápida. • Debe ser escalable • Debe proporcionar herramientas de autoservicio al usuario.

Nota: Otra visión introductoria sobre cloud computing se puede ver en el artículo ¿Qué es el cloud computing?

Pago por uso Este es el principal atractivo ya que el usuario solo tendrá que abonar los recursos que haya consumido con su servicio, ahorrando así en implantaciones on-premise y reduciendo el riesgo inicial de los proyectos.

Flexibilidad en recursos Consiste en la capacidad de poder agregar o disminuir nuevos recursos o losque tuviéramos ya disponibles en nuestro servicio. Un ejemplo sería el de poder aumentar o reducir la RAM utilizada por nuestro aplicativo web.

Escalabilidad Los proveedores de Cloud computing deben proporcionar plataformas que permitan aumentar el número de instancias del servicio para poder responder a una mayor demanda de usuarios o peticiones.

Además debe permitir mecanismo para mover el servicio entre los distintos servidores y los distintos centros de datos que disponga el proveedor.

Herramientas de autoservicio Se deben proporcionar herramientas que permitan al propio usuario (o un responsable) contratar los servicios que desea consumir y ajustar los recursos destinados a esos servicios.

En una primera aproximación se podría pensar que el Cloud computing es algo similar que un hosting, pero estaríamos equivocados por varios motivos:

• El hosting se paga por cuotas de recursos y no por uso. • El hosting no permite modificar los recursos disponibles de forma sencilla y automatizada. • No todos los Hosters permiten funcionalidades de escalado.

En definitiva se podría decir que un hosting es un subconjunto del Cloud computing o que el cloud computing es una evolución del hosting.

Los distintos servicios que se pueden ofrecer en modo Cloud computing se agrupan en: IaaS (Infraestructura como servicio), PaaS (Plataforma como servicio) y SaaS (Software como servicio).

• El IaaS ofrece a los usuarios la posibilidad de utilizar distintos tipos de infraestructura como un servicio.

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

4

Page 5: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

• Por ejemplo Amazon EC2 permite crear instancias de máquinas virtuales pudiendo ajustar la memoria RAM, el tamaño de los discos, el SO, �

• El PaaS proporciona características adicionales al IaaS como puedan ser: despliegue automatizado de aplicaciones, sistemas de gestión de autenticación, sistemas de comunicación de colas o mensajes, sistemas de monitorización, �Un ejemplo podría ser el rol web de Azure que permite desplegar una aplicación web sin necesidad de configurar el SO ni el IIS y sin necesidad de conocer las máquinas desde donde se ejecutan la aplicación.

• El SaaS permite utilizar como servicio un software existente sin realizar instalaciones ni configuraciones. Como ejemplo: CRM Online es una versión del CRM de Microsoft en modo cloud computing con el que los clientes contratan desde una web el número de usuarios y en unos instantes disponen de la funcionalidad de CRM sin realizar ninguna instalación.

La plataforma que donde se ejecutan los servicios la proporcionan los proveedores de Cloud computing se ejecutan sobre los Datacenters que consisten en centros de datos con una serie de servidores conectados entre sí y con una plataforma de gestión que permite desplegar los servicios en los distintos servidores de forma automatizada y transparente para el usuario.

Disponemos de tres modalidades de utilizar los servicios de Cloud computing en función de donde se encuentre el datacenter:

• Nube Pública, los servicios y todos los datos se encuentran en los datacenters del proveedor siendo éste el que asume todo el mantenimiento de los servicios.

• Nube Privada, los servicios y los datos se encuentran on-premise (en las infraestructuras del cliente). Requiere de un mayor mantenimiento y de infraestructuras grandes.

• Nube Híbrida, consiste en una mezcla entre las dos modalidades anteriores para aquellos clientes que no puedan sacar los datos de sus infraestructuras pero se quieran aprovechar de las ventajas de los servicios de cloud computing de un proveedor externo.

La importancia de la ubicación de los datos

Para muchos clientes la ubicación de los datos es un factor crítico a la hora de plantear una solución en modo Cloud computing. Para muchas empresas el ubicar los datos fuera de sus infraestructuras será imposible debido a su criticidad o incluso la propia legislación.

Antes de plantear cualquier solución habrá que estudiar si los datos podrán ubicarse fuera de nuestras infraestructuras y en qué país se ubicarán para determinar si la legislatura vigente en ese país no afectará a nuestro servicio.

Los organismos públicos por ejemplo, solo podrán mover fuera del país origen aquellos datos que sean totalmente públicos, por lo que no podrán plantear soluciones de Nube privada para datos sensibles.

Una alternativa sería plantear nubes híbridas con proveedores locales que tengan que cumplir con las misma legislación.

Para más información sobre jurisprudencia en este tema puede consultar el vídeo "Implicaciones legales del Cloud Computing" de Pablo García Mexía.

¿Para quién está pensado el Cloud computing?

Se podría decir que el cloud computing no está pensado para un tipo de cliente específico sino para un tipo de proyecto o aplicativo que quiera aprovecharse de las características que se han mencionado anteriormente. Las pequeñas empresas por ejemplo podrán utilizar aplicativos sin necesidad de adquirir una infraestructura que le supondría un coste muy alto en hardware, licencias y mantenimiento.

Las grandes o medianas empresas pueden adquirir una flexibilidad a la hora de desplegar servicios que les permitirán ser más competitivos y podrán ahorrar en costes en IT.

El cloud computing no vale para todas las soluciones, pero si es una opción a tener en cuenta que habrá que plantearse en aquellos escenarios en los que necesitemos de las prestaciones del cloud computing.

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

5

Page 6: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

¿Por qué es un ahorro en costes en IT?

El poder disponer de un servicio en cualquier momento sin necesidad de provisionar nuevas infraestructuras y de pagar por su uso, permite a las empresas plantear soluciones más escalables, con menor mantenimiento por parte del departamento de IT y con un menor coste en infraestructuras y licencias.

Proveedores

Existe una gran variedad de proveedores que ofrecen servicios distintos y con distintas modalidades, entre ellos destacan:

Windows Azure Amazon Web services (AWS) IBM Cloud Computing RackSpace CloudShare Oracle Cloud Computing Cloud Arsys (España) SalesForce Microsoft Office 365 Google AppEngine Google Apps

Resumen

Con el Cloud Computing podremos abordar nuevos tipos de proyectos y reducir el coste en infraestructuras, licencias y mantenimiento, siendo más ágiles a la hora de crear nuevos servicios y más competitivos a la hora de plantear soluciones.

El Cloud computing se encuentra en una de sus primeras fases que dará paso en breve a su siguiente generación de nubes y servicios. El ritmo al que avanzan los proveedores de Cloud Computing es muy superior al de nuestros negocios o infraestructuras, cuanto antes abordemos este tipo de servicios más rápidos podremos adaptarnos a las futuras versiones.

Esperar dos años para empezar a virtualizar nuestros entornos o calcular el coste de nuestras infraestructuras puede hacer que cuando querramos abordarlo nuestros competidos ya lo hayan hecho mucho antes y tengan muchas más experiencia que nosotros.

Nota: En el Manual de Windows Azure explicamos la apuesta de Microsoft en la nube. Si te interesa el tema puedes seguir leyendo en el artículo La plataforma Windows Azure.

Artículo por Mario Cortés Flores

Windows Azure: cambiando el desarrollo aceleradamenteResumen y conclusiones sobre la Keynote 2 del Build 2012 sobre Windows Azure, donde hemos visto una aproximación a un modelo de desarrollo nuevo, que altera sustancialmente lo que conocemos.

Quizás muchos desarrolladores tengamos una idea difusa de lo que es Windows Azure, y de hecho es probable que sea así porque muchas herramientas y tecnologías se unen bajo ese nombre. Si como yo no tienes una exacta idea de lo que es, quizás ver la Keynote 2 del Build 2012 te va a dar una referencia mejor sobre la tecnología y qué puede hacer por ti como creador de software.

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

6

Page 7: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

Así en pocas palabras hemos entendido que nuestra comunidad cada vez más necesita aprender a trabajar con herramientas diversas, que nos faciliten la tarea de implementar proyectos complejos y de desplegarlos de una manera sencilla, fiable y rápida. De hecho, cada vez más, se trata de tener un conocimiento profundo de APIs, frameworks y programas, por encima incluso de dominar un lenguaje de programación dado. El uso de esas herramientas hará nuestras vidas más sencillas y nuestro día a día mucho más productivo. Al leer este artículo y ver el vídeo de la Keynote podrás comprobar que existen personas que dedican mucho esfuerzo a pensar en todas estas cosas e ingenieros que están diseñando un nuevo modelo de desarrollo y despliegue de aplicaciones.

El Keynote 2 del Build ha sido dedicado por completo a Windows Azure, muy enfocado a las posibilidades que los desarrolladores pueden extraer a la hora de crear aplicaciones en la nube, aplicaciones web, plugins que se integran en sistemas como Office 365 o el propio Azure. Hay que admitir que en ciertos momentos de la presentación a más de uno se nos ha abierto la boca al comprobar por dónde van los tiros.

Muchos de nosotros conocemos frameworks que nos simplifican las cosas, incluso gracias a los webcast que venimos realizando por "hangout” en DesarrolloWeb.com, estamos comenzando a apreciar algunas de las posibilidades de sistemas realmente complejos, que nos permiten automatizar muchos procesos verdaderamente útiles. Sin embargo, nos gusten o no las tecnologías de Microsoft para el desarrollo de software, hemos de admitir que en Azure y la compañía de Redmond en general van un paso, o varios, por delante de los frameworks que podemos conocer en lenguajes como Python o PHP.

Que nadie se sienta herido, pues se conoce de sobra que en DesarrolloWeb.com animamos a usar cualquier tipo de sistema abierto y tenemos que reconocer que para una amplia mayoría de profesionales las propuestas en ese sentido son más que suficientes. Es decir, para los proyectos que la mayoría estamos acostumbrados a realizar, un framework PHP o Python es más que de sobra para facilitarnos la vida. Sin embargo, si tuviera que realizar un sistema más complejo de lo común, echaría un vistazo en profundidad a las posibilidades que me ofrece Azure para su desarrollo y despliegue.

En ese sentido hay que quitarse el sombrero a lo que hoy nos han mostrado y por resumir, aquí dejaré, un poco más adelante, unos cuantos ejemplos de cosas que se hacen extremadamente simples cuando estamos desarrollando en la nube con Azure.

Disponibilidad y versatilidad

Pero antes de ponernos a dar ejemplos de las cosas que nos han mostrado, merece la pena conocer un poco más sobre qué es la nube. Realmente hace años que venimos dando algunas pistas en DesarrolloWeb.com para conocer las ventajas de desplegar las aplicaciones en la nube. Hoy nos han vuelto a dar claves interesantes y que merece la pena repasar.

Hoy los sistemas operativos y aplicaciones en general están cada vez más conectados a Internet. Si vemos los Live Tiles de Windows 8 observaremos que hay vida detrás de estos sistemas gracias a una conexión permanente a todo lo que hay alrededor de las personas o entidades a las que sigues. Esto es así hasta tal punto que durante los últimos meses hemos escuchado algunas voces que dudan sobre si Internet se colapsará por hacer un uso tan intensivo de la Red para la transferencia de todo tipo de datos. Observemos que todas las notificaciones de los Live Tiles, que se refrescan cada momento, están en la nube y los consumen cientos de miles o millones de personas en cada instante. Hace falta infraestructura para todo eso!

Pero bueno, dejando aparte el alarde de infraestructura del que hace gala con orgullo Microsoft, Las ventajas de contar con la nube de Azure en la práctica para nosotros sería disponer del número de máquinas que necesitemos en cada momento, la capacidad en bandeja y al instante, con solo tocar unas teclas o hacer unos clics de ratón, la auto-replicación de datos y máquinas y la disponibilidad de nuevas, de manera transparente si algo falla en las que estamos usando... se puede saber más sobre las ventajas de tener servidores en la nube si lees otros artículos publicados anteriormente. Ver Qué son los servicios en la nube y ejemplos de carga y cómo la nube ayuda.

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

7

Page 8: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

Desarrollo de aplicaciones web en la nube

Quizás nos sorprendan más un par de ejemplos concretos que hemos visto en la presentación de hoy. El primero que voy a recoger en este artículo es sobre la creación de un sistema multimedia en el que podamos cargar vídeo, no solo nosotros, sino cualquier usuario que lo necesite y que éste se encuentre disponible instantáneamente. Vamos, imaginar que tenéis que hacer un Youtube a vuestra manera y que no queréis complicaros con los procesos de upload, codificación, visualización, etc.

Esto se hace en cuestión de minutos o segundos. Parecía tan sencillo según nos lo mostraron que hasta uno podría dudar si realmente es cierto. Ok, para que te hagas una idea, todo esto lo hicieron con ¿2? ¿3? líneas de código (no las conté).

Otro ejemplo que nos mostraron ¿qué hay si un cliente te pide hacer un sitio que exponga datos por medio de un API?, que se pueda consultar desde cualquier otro sistema. Pues para eso también hay soluciones que realmente hacen que, si lo sabes hacer, crear un API sea un juego de niños! Luego el propio API gracias a la capacidad de carga de los servidores de Azure lo podrán consultar tantas veces como sea necesario.

También nos mostraron ejemplos, realizados en segundos en directo, sobre hasta qué punto sería sencillo conectar el sistema de login de Facebook o Twitter en una aplicación desarrollada con Azure y sin saber nada sobre las APIs de autenticación de esos proveedores.

Desarrollo sobre otros sistemas Microsoft

Todo esto también nos ha servido para encontrar otros nichos de mercado y nuevas posibilidades que tendremos para integrar nuestros servicios en ciertos sistemas de Microsoft. Para empezar nos mostraron lo sencillo que es integrar, de manera prácticamente automática, nuestras aplicaciones o servicios web con Windows 8 para que en los Live Tiles te muestren automáticamente los procesos que se van realizando.

Otras posibilidades interesantes serían integrar nuestras aplicaciones dentro del propio Office 365 y hasta dentro de Azure. Nos mostraron que el propio Azure dispone de una tienda de aplicaciones con servicios que se pueden utilizar fácilmente en nuestros desarrollos y que nos permiten poner en marcha elementos que desde cero nos costaría mucho más trabajo desarrollar, como pasarelas de pago, servicios de envío de correo, transporte de datos, búsquedas, información climática, etc.

Conclusión

En definitiva, a no ser que seas un especialista en Azure, en cuyo caso este artículo posiblemente no te haya dicho mucho nuevo, es muy probable que no sepas muy bien qué detrás de esta tecnología y cómo puede ayudarte a desarrollar programas impactantes de una manera rápida. Lo cierto es que los ejemplos que hemos visto en la Keynote tienen mucho interés seguramente para más de uno.

Yo os recomendaría ver la grabación, porque os va a dar una idea más detallada de lo que habréis podido adquirir al leer este artículo. Yo creo que merece mucho la pena, puesto que podréis entender cómo Microsoft piensa que debe ser el desarrollo del futuro, ya disponible en el presente.

Artículo por Miguel Angel Alvarez

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

8

Page 9: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

La plataforma Windows AzureEn este artículo hablaremos de la plataforma Windows Azure creada por Microsoft.

En el artículo anterior estuvimos hablando sobre el concepto cloud computing además de sus ventajas e inconvenientes. También comentamos que las grandes empresas estaban involucradas activamente en este escenario.

¿Qué es Windows Azure Platform?

Windows Azure Platform se trata de la apuesta de Microsoft por el cloud computing. Bajo este nombre se ofrecen diferentes servicios con el fin de proporcionar a sus clientes todos los recursos necesarios para que sus aplicaciones y sus datos puedan ser trasladados a la nube de la manera menos traumática posible.

Durante estos últimos años la empresa ha invertido recursos de manera considerable en este modelo de negocio, construyendo numerosos data centers alrededor del mundo con el objetivo de que todos sus futuros clientes puedan a día de hoy disfrutar del servicio que prestan.

¿Qué necesito para acceder a la plataforma?

El primer paso para comenzar a trabajar con la nube es obtener una subscripción. Existen dos tipos ofertas: Aquellas pensadas para los suscriptores de MSDN y Microsoft Partners y por otro lado ofertas estándar para aquellos clientes que no tengan relación previa con Microsoft.

Podemos contratar y conocer las ofertas a través del siguiente enlace: http://www.microsoft.com/windowsazure/offers/

Si nos fijamos en cualquiera de las ofertas, nos hablan de transacciones, horas de computación, almacenamiento, etcétera. Si teníamos un seguimiento previo de estos valores, podemos hacer uso de una calculadora que nos estimará los recursos necesarios y su coste de manera orientativa a través de este enlace: http://www.microsoft.com/windowsazure/economics/default.aspx

¿Qué servicios ofrece la plataforma?

Aunque a día de hoy se están ultimando algunos de los servicios, vamos a enumerar aquellos de los que tengamos conocimiento:

Windows Azure Si bien los términos Windows Azure Platform y Windows Azure pueden parecer lo mismo el significado de ambos es totalmente distinto. Windows Azure Platform se refiere a la plataforma en su conjunto, englobando todo el paquete de servicios que se ofrece y, por otro lado, Windows Azure nos habla del servicio de computación que brinda la plataforma.

¿Qué posibilidades nos da tener un servicio de computación? Como ventaja fundamental tenemos la posibilidad de centrarnos en nuestros desarrollos gracias a la abstracción más que parcial de toda la administración de la plataforma en la que se aloja la aplicación, es decir: mantenimiento de los servidores, actualizaciones, instalación y configuración de sistemas operativos, etcétera. Desplegar una aplicación en producción será tan sencillo como desarrollar la aplicación y despreocuparse del acondicionamiento del entorno.

Las herramientas, lenguajes y tecnologías necesarias para utilizar este servicio son las mismas que para cualquier otro tipo de servidor on-premise, es decir, dentro de la empresa del cliente.

Windows Azure Storage y Content Delivery Network El servicio Windows Azure Storage nos proporciona almacenamiento no relacional en la nube. Este servicio a su vez se divide en cuatro tipos de almacenamiento:

• Binary Large Object (BLOB) service para almacenar archivos binarios de gran tamaño, como por ejemplo videos, imágenes, backups, etcétera.

• Table service donde podemos guardar información de una forma estructurada, aunque no relacional.

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

9

Page 10: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

• Queue service para el almacenamiento de mensajes no superiores a 8KB con el fin de lograr una comunicación entre aplicaciones.

• Windows Azure Drive permite a las aplicaciones en Windows Azure montar un disco duro virtual NTFS.

Si además queremos mejorar el tiempo de latencia de nuestros recursos podemos activar Content Delivery Network para replicar el contenido en distintos lugares del mundo.

SQL Azure Del mismo modo que necesitamos un entorno para alojar nuestras aplicaciones, es necesario disponer de un sistema para almacenar los datos. Dentro del contexto en el que nos encontramos, Microsoft ha desarrollado una nueva base de datos relacional llamada SQL Azure basada en su popular producto SQL Server.

Esta base de datos nos aporta una funcionalidad similar a la que podemos encontrar en SQL Server a excepción de algunas características, probablemente incorporadas a futuro. Las ventajas más destacadas de esta base de datos son su alta disponibilidad, alta escalabilidad y la capacidad de ser multi-tenant, es decir, pensada para trabajar con distintos clientes a la vez.

Por otro lado, no es necesario aprender un nuevo lenguaje para realizar consultas sino que podemos utilizar T-SQL de la misma manera que lo haríamos con SQL Server. De hecho, podemos hacer uso de SQL Server Management Studio para interactuar con las bases de datos alojadas en la nube.

Existen diferentes tamaños de bases de datos, con un mínimo de 1GB y un máximo de 50GB.

SQL Azure Data Sync Como servicio adicional para SQL Azure, se va a proporcionar una la opción de sincronización entre distintas bases de datos dentro del mismo o diferente data center e incluso con bases de datos on-premise. Lo más interesante de esta novedad, aún en su versión CTP , es que no será necesario código adicional para configurar el servicio. Se podrá establecer la sincronización programada, ejecutarla bajo demanda, manejar los conflictos cuando los datos han sido modificados en distintas bases de datos, así como trazar y monitorizar los posibles errores que puedan ocurrir.

Los escenarios más comunes para beneficiarse de este servicio son:

• Sincronización de bases de datos que están en la nube con las que están on-premise. • Extender la información de bases de datos SQL Azure a otras localizaciones para mejorar el tiempo de latencia.

SQL Azure Reporting SQL Azure Reporting nos va a proporcionar muchas de las funcionalidades ya conocidas en SQL Server Reporting Services 2008 R2 para poder crear nuestros propios informes, gráficos, mapas, etcétera y poder desplegar los mismos en servidores on-premise o bien en la nube.

Esta funcionalidad está aún en su versión CTP.

Windows Azure AppFabric Uno de los retos más importantes y complejos trata de la seguridad de nuestras aplicaciones. Windows Azure AppFabric nos ofrece un alto nivel de abstracción de la capa de seguridad, reduciendo la complejidad en nuestra aplicación.

Este servicio está compuesto de 5 funcionalidades diferentes:

• Service Bus: Nos proporciona una comunicación segura entre aplicaciones con la capacidad de atravesar Firewalls, dispositivos NAT, etcétera.

• Access Control: Se trata de un servicio que nos facilita la autenticación para nuestras aplicaciones, incluyendo Active Directory, Windows Live ID, Google, Yahoo! y Facebook.

• Caching: Nos proporcionará un sistema de caché distribuido para Windows Azure y SQL Azure de alta velocidad y disponibilidad, además de escalable (se podrá aumentar o disminuir la caché en función de nuestras necesidades). Esta funcionalidad sólo está disponible en Windows Azure AppFabric LABS sin opción de contratación por el momento.

• Integration: En un futuro próximo también disfrutaremos de este servicio con el que podremos integrar aplicaciones dentro de la plataforma Windows Azure con otras expuestas en SaaS de terceros. Esta funcionalidad no está disponible todavía.

• Composite App: Automatización del despliegue y la administración sin la necesidad de la generación de

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

10

Page 11: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

manuales para la puesta en producción. Esta funcionalidad no está disponible aún.

Windows Azure Virtual Network Dentro de una empresa solemos tener un conjunto de servidores que juntos conforman las aplicaciones de negocio. Si elimináramos o trasladáramos uno de los integrantes fuera del alcance del resto podría generar un fallo en el sistema al no poder contactar con el mismo. Para ello, el equipo de la plataforma Windows Azure abrirá próximamente un abanico de posibilidades gracias a Windows Azure Virtual Network, un nuevo servicio que ofrecerá la creación de redes virtuales entre otras características, por el momento desconocidas, con el fin de conectar los servidores alojados en la nube con aquellos que aún permanecen on-premise.

Por el momento podemos solicitar el acceso a la CTP de Windows Azure Connect a través del portal de la plataforma para la creación de redes privadas virtuales.

Windows Azure Plataform Appliance Por último, una de las últimas incorporaciones a los servicios ofrecidos por el cloud de Microsoft es Windows Azure Platform Appliance, el servicio que te permite llevarte la nube a casa.

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

11

Page 12: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

Algunos clientes son reacios a trasladar su negocio fuera de su empresa pero es posible que aun así necesiten las facilidades que Windows Azure Platform ofrece. Por ello, gracias a este nuevo servicio los clientes podrán contratar su propio data center para alojarlo en su organización, incluyendo la posibilidad de utilizar Windows Azure, SQL Azure así como la configuración específica de Microsoft para la red, almacenamiento y hardware.

Por el momento no está disponible para el público en general pero próximamente se generará un roadmap dependiendo de las experiencias con los partners y clientes seleccionados para la prueba piloto.

En resumen

En este artículo hemos visto los servicios actuales de la plataforma, además de los que presentarán en su versión final a lo largo del año. A día de hoy hemos comprobado que podemos cubrir la mayor parte de nuestras necesidades base para poder plantearnos el salto a la nube.

En el siguiente artículo comenzaremos con el servicio de computación Windows Azure para conocer cómo afrontar un proyecto para la nube, cómo desplegarlo, etcétera.

Artículo por Gisela Torres Buitrago

Introducción a Windows AzureVemos las posibilidades que nos presenta Windows Azure y la programación en la nube y la preparación de su entorno.

El pasado 4 de enero, Microsoft oficializó el lanzamiento de Windows Azure, su apuesta en el terreno de la computación en la nube (Cloud Computing), ampliando así la oferta existente en el mercado, por parte principalmente de Amazon y Google. A lo largo de este manual intentamos desgranar la propuesta de la compañía de Redmond, apuntando los conceptos más importantes desde un punto de vista práctico y con ojos de desarrollador.

Azure, ampliando posibilidades

asta ahora, cuando desarrollábamos aplicaciones a desplegar en servidores Windows teníamos dos opciones: usar infraestructura propia (tanto equipos como canales de comunicación) o contratarlos mediante un servicio de hosting. Azure nos abre una tercera vía, ampliándonos las posibilidades a la hora de distribuir nuestros desarrollos y situándonos en un escenario donde:

• Podemos dimensionar el hardware que aloja nuestros desarrollos sin intermediarios administrativos, siendo posible, por ejemplo, configurar la potencia de los servidores o el número de los mismos en cualquier momento; se nos permite, incluso, optar a programar la cantidad de recursos por fecha y hora según las previsiones de tráfico a las que queramos dar respuesta.

• Pagamos solo por lo que consumimos, con aplicación de tarifas competitivas. • Disponemos de la fiabilidad y potencia de los Data Centers de Microsoft, a la vez que podemos decidir entre

los diferentes centros para, por ejemplo, optimizar las comunicaciones dependiendo de la ubicación geográfica de los usuarios de nuestros servicios, o por cuestiones legales asociadas a dicha zona.

• La gestión del balanceo de carga entre servidores nos es totalmente transparente. • Nos olvidamos del mantenimiento de los equipos, la redundancia de datos o la actualización del software de

los servidores. • Los costes de licencia se reducen considerablemente y se simplifican los modelos de licenciamiento.

En resumen, disponemos de la potencia necesaria, sea cual sea el escenario, tanto de proceso como a nivel de ancho de banda, a la vez que gestionamos todo ello con nuestras propias manos. Si eso no fuera suficiente, la plataforma implementa una serie de servicios (muchos de los cuales iremos descubriendo en éstas páginas) de los que nuestros

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

12

Page 13: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

desarrollos podrán aprovecharse. Azure, por tanto, no es solo una plataforma donde ejecutar nuestro código, sino que también nos provee a los desarrolladores de un elenco de herramientas en formato SaaS (Software As A Service) y DaaS (Data As A Service) a explotar desde nuestras soluciones. Una vez ubicados en las posibilidades de la plataforma, veamos cómo podemos realizar nuestra primera toma de contacto con el nuevo Windows en la nube.

Preparando el entorno

Al contrario de lo que muchos piensan y aunque parezca paradójico, podemos empezar a jugar con Azure sin estar tan siquiera conectados a Internet.

Para ello tan solo necesitaremos a nuestro querido Visual Studio, en sus versiones 2008 con SP1 ó 2010, sobre el que instalaremos un conjunto de herramientas de Windows Azure que, aparte de la integración con el entorno de desarrollo, incluye también su SDK. La forma más sencilla de instalar dichas herramientas es mediante el Web Platform Installer; dentro del apartado "Herramientas del desarrollador", pulsamos en la acción "Personalizar" de la opción "Visual Studio Tools", para por último seleccionar "Windows Azure Tools para Microsoft Visual Studio" y pulsar el botón "Instalar".

Nota: Es importante destacar que deberemos contar con IIS 7.0 y SQL Server instalados en nuestro equipo local.

En el siguiente artículo veremos cómo realizar nuestro primer programa "Hola nube" con Windows Azure.

Artículo por Toni Recio y Gerard López

Creando nuestro primer "Hola nube" en Windows AzureVamos a tratar de hacer un ejemplo mínimo, para centrarnos en Azure como plataforma y que por otro lado nos permita ver "nubes" de inmediato.

En anteriores entregas vimos una pequeña introducción a Windows Azure, un producto de Microsoft para programación en la nube. Ahora estamos en condiciones de ponernos manos a la obra con un primer ejemplo básico, el típico "Hola Mundo" que nosotros hemos llamado en esta ocasión "Hola nube".

Nuestro ejemplo será una simple página Web que muestre la última fotografía del satélite meteorológico Meteosat. En ella podremos introducir observaciones sobre la imagen y guardar los datos mediante un botón de comando, pero de momento nos conformaremos con mostrar la fotografía, dejando para más adelante la implementación de la manipulación y almacenamiento de datos.

Para empezar, arrancamos Visual Studio con privilegios de administrador, dado que el entorno de simulación local de la plataforma requerirá de ciertos permisos sobre nuestra máquina. Creamos un proyecto de la nueva categoría "Cloud", seleccionando como plantilla "Windows Azure Cloud Service", y asignamos los nombres WeatherService y CloudMania al proyecto y la solución, respectivamente.

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

13

Page 14: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

Una vez que aceptamos el diálogo, se nos consultará qué roles debe implementar el servicio que queremos desarrollar. Podemos ver los roles como las máquinas virtuales que vamos a utilizar para desplegar nuestra aplicación en la nube. Cada rol nos presenta una configuración distinta de máquina orientada a unas tareas concretas. Los roles que se nos proponen son los siguientes:

• ASP.NET Web Role, destinado a aplicaciones ASP.NET tradicionales que también podremos utilizar, por ejemplo, para alojar aplicaciones Silverlight. Destacar que cuando hagamos uso de este rol para agregar una aplicación que ya teníamos desarrollada previamente, ésta no podrá ser del tipo "Web Site", ya que por ahora dichas plantillas no están soportadas, por lo que tendremos que migrar nuestro sitio Web a un proyecto de tipo "Web Application" para poder incluirlo en el Cloud Service.

• ASP.NET MVC 2 Web Role, orientado a desarrollos de aplicaciones con el nuevo framework MVC. • WCF Service Web Role, para programar servicios basados en WCF. • Worker Role, enfocado al desarrollo de servicios sin interfaz de usuario. • CGI Web Role, para el despliegue de aplicaciones basadas en el protocolo FastCGI, como pueden ser gestores

de contenido desarrollados en PHP.

Nota: En la actualidad, Azure también da soporte a desarrollos realizados con Ruby, Python o Java, pero éstos requieren de la instalación de software adicional en nuestra máquina de desarrollo.

Dada la naturaleza de nuestro ejercicio, tan solo necesitamos un rol Web ASP.NET. Al indicarlo, se nos generará la estructura de nuestra solución (figura 1), donde nos encontraremos con un nuevo proyecto: al proyecto WeatherService, que contiene la configuración y metadatos del nuevo servicio, se añadirá otro llamado WebRole1, que contiene una implementación prácticamente igual a lo que sería un proyecto ASP.NET tradicional. Centrémonos de momento en Default.aspx para mostrar la última imagen del Meteosat (listado 1); bastará con insertar una etiqueta (tag) de imagen en la página y ubicar un par de controles con el espacio para los comentarios y el botón de guardar. Ahora ya estamos en disposición de arrancar nuestra solución; no almacena datos, pero ya mostrará la última fotografía del satélite. Al ejecutar, advertiremos que nos aparece un nuevo icono de notificación, ubicado en la esquina inferior derecha de la pantalla, que muestra el estado de los servicios asociados a nuestro entorno de desarrollo. En estos momentos se están levantando los entornos de desarrollo locales de los dos servicios clave de la plataforma Azure: Development Fabric y Development Storage.

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

14

Page 15: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

Listado 1. Mostrar última imagen del Meteosat (Default.aspx) <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"Inherits="WebRole1._Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"><title></title></head><body><form id="form1" runat="server"><div style="float:left; margin-right: 20px;"><img ID="Imagen" runat="server" alt="Foto Meteosat"src="http://www.meteosat.com/imagenes/meteosat/sp/ultima_meteosat-visible.jpg"/></div><div><asp:TextBox ID="txtObservaciones" runat="server" TextMode="MultiLine"Height="100px" Width="300px"/><br/><asp:Button ID="btnGuardar" runat="server" Text="Almacenar"onclick="btnGuardar_Click" /></div></form></body>

Development Fabric es el servicio que nos simula el Fabric Controller de Azure, un servicio vital del sistema, dado que es el encargado de monitorizar, mantener y provisionar el entorno donde se ejecuten nuestras aplicaciones en la nube. Por otro lado, con Development Storage dispondremos en local de todas las herramientas disponibles en Azure para que nuestros desarrollos puedan almacenar datos no relacionales accesibles vía REST. El servicio contempla tres modelos de almacenamiento:

• Tablas. Se trata de un modelo prácticamente idéntico al de una tabla de una base de datos convencional, pero sin la capacidad de relacionarse con otras tablas: información estructurada, pero no relacionada.

• Blobs: Estructura orientada a almacenar archivos binarios de gran tamaño (hasta un total de 200 Gb. En nuestro entorno local, el tamaño máximo se reduce a 2 Gb).

• Colas: Funcionalidad orientada a comunicar diferentes procesos me - diante mensajes de menos de 8 Kb. No se trata tanto de almacenar información, sino de ponerla a disposición de varios servicios, tanto en la nube como fuera de ella.

Para implementar los tres modelos, y aunque parezca paradójico, la plataforma local se sustenta sobre SQL Server. De hecho, lo primero que veremos antes de que se nos muestre nuestra aplicación es la ventana de inicialización del Storage, la cual, una vez aceptada, dará paso al navegador con nuestra aplicación. Ahora que ya tenemos desarrollada la primera parte de nuestra "nube local", tendremos la posibilidad de interactuar con los servicios de Fabric y Storage mediante los administradores accesibles en el menú contextual del icono de notificación. También podremos configurar nuestro servicio editando en el proyecto WeatherService los archivos ServiceConfiguration.cscfg y ServiceDefinition.csdef o, sin necesidad de tocar XML, configurar directamente vía WebRole1 (ver figura 2). Es de destacar con qué facilidad podremos definir el número de máquinas virtuales que soportarán nuestra aplicación, la potencia de las mismas (tabla 1) o la sencilla configuración de los endpoints.

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

15

Page 16: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

Para probar, ¿primero hay que pasar la tarjeta?

¿Y cómo podemos hacer pruebas reales en la nube? Microsoft ofrece dos modalidades gratuitas en promoción, una para suscriptores MSDN y otra para el público general. Las dos modalidades constan de una serie de recursos limitados, y en caso de superar los consumos establecidos deberemos abonar los costes adicionales. Todas las labores administrativas relacionadas con Azure se gestionan desde el portal Microsoft Online Services, al que accederemos para pedir nuestra cuenta.

Nota: Si deseamos usar la oferta para suscriptores MSDN, deberemos acceder primero desde el enlace que aparece en el menú de suscripción del propio portal de MSDN. En la zona "Suscripciones" accederemos a la opción "Plataforma Windows Azure" para poder disfrutar de la oferta con mayores recursos disponibles y durante un período de tiempo más extenso.

Si es la primera vez que accedemos al portal de servicios en línea de Microsoft, se nos requerirá una serie de datos de contacto; una vez rellenados los formularios, dependiendo del tipo de promoción iremos por un camino u otro. En el caso de la promoción pública, nos dirigimos a la pestaña "Servicios", seleccionamos "Plataforma Windows Azure" y en "Ofertas especiales" elegimos "Comprar ahora" (figura 3); mientras que los suscriptores MSDN se encontrarán ya en el carro de la compra y tendrán que pulsar "Pagar" para continuar. En ambos casos, entre los datos que nos piden está el número de tarjeta de crédito que es obligatorio facilitar, dado que si excedemos los recursos asignados se nos podrá cobrar.

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

16

Page 17: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

Cuando hayamos facilitado todos los datos que se nos requieren, Microsoft nos enviará un par de correos avisándonos de la activación del servicio y dándonos instrucciones para el acceso al portal de desarrollo de Azure. Dos detalles importantes a tener en cuenta: primero, si no queremos descuidarnos y exceder los límites gratuitos de las promociones, podemos consultar la cantidad de recursos consumidos hasta un momento determinado (la información no es instantánea, tarda unas horas en actualizarse) desde el apartado "Acciones", pulsando el enlace "Ver mis facturas". Y segundo, el hecho de que por defecto nuestra suscripción a la plataforma Azure está activada para renovarse automáticamente cuando finalice el plazo de prueba. Si no queremos pasar a un servicio de pago sin nuestra intervención, podemos cancelar la renovación automática en la pestaña de suscripciones mediante la acción "Cancelar suscripción de renovación automática".

Nota: El sistema implementa una serie de avisos, vía correo electrónico, que nos advierten cuando estamos a punto de sobrepasar los límites establecidos en las cuentas de evaluación.

Artículo por Toni Recio y Gerard López

Subiendo nuestra aplicación a una nube realDespués de programar la aplicación en local, camos a subirlaa la nube, en los data centers de Microsoft.

Para continuar con el Manual introductorio a Windows Azure, vamos a aprender ahora cómo subir a la nube una aplicación desarrollada en local.

Una vez que hemos realizado nuestras pruebas en entorno local (podríamos decir que nuestra aplicación está en la niebla ;-) como hemos visto en los artículos anteriores de nuestro manual de Windows Azure y hemos obtenido una cuenta con acceso a Azure, estamos en condiciones de publicar nuestro "Hola nube" en los Data Centers de Microsoft.

Para publicar nuestro proyecto WeatherService, volveremos a Visual Studio y utilizaremos la opción "Publish" del menú "Build", lo que nos abrirá una carpeta local donde están ubicados nuestros dos únicos ficheros necesarios para hacer la publicación, y también nos lanzará nuestro navegador predeterminado mostrando el portal de desarrollo de Azure. Si es la primera vez que accedemos al portal, tendremos que crear un servicio mediante el enlace "New Service" y seleccionar entre crear una cuenta Storage o un Hosted Service. Para el ejemplo que nos ocupa, elegiremos el servicio, introduciremos un nombre y descripción para el mismo, y después tendremos que elegir una URL para nuestra

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

17

Page 18: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

aplicación, que será un subdominio de cloudapp.net. Observe que tenemos un botón para comprobar que la dirección está disponible. Hemos de tener en cuenta que ni el nombre ni la URL podrán ser modificados posteriormente. Otro aspecto importante a decidir será en qué zona geográfica queremos que sea alojada nuestra aplicación. Aquí también podemos seleccionar un grupo de afinidad, porque si vamos a subir varias aplicaciones a la nube que interactúan entre ellas, esto nos asegura que se mantengan en una misma región geográfica. Si cuando creamos un servicio no especificamos un grupo de afinidad, después no podremos agregárselo, con lo que tendríamos que eliminar el servicio y volver a crearlo.

Una vez que tenemos el servicio creado, nos aparece un panel de gestión (figura 4). En dicho panel podemos controlar el despliegue en producción y en el entorno de staging (entorno de pruebas). Si pulsamos en la flecha de la derecha veremos los dos entornos; esto nos sirve para poder mantener una versión publicada en la nube pero en un entorno de pruebas al que podremos acceder con una URL diferente (podemos restringir el acceso), y cuando hayamos probado nuestra versión, pasarla a producción con un simple clic (figura 5). Este paso entre entornos nos desplegará la versión de staging en producción, y a su vez hará una copia de la versión de producción en staging para mantenerla de backup.

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

18

Page 19: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

Para realizar la publicación, deberemos pulsar el botón "Deploy" (en nuestro ejemplo, lo haremos sobre el entorno de producción) e indicar la ubicación de los ficheros que nos habia generado Visual Studio al publicar: el Application Package (fichero .cspkg) y el Configuration Settings (fichero .cscfg). Entonces pulsaremos de nuevo el botón "Deploy" y esperaremos unos minutos hasta que la aplicación se haya desplegado por completo. Una vez desplegada, el cubo que representa nuestra aplicación se nos mostrará en azul, y veremos que se nos habilitan algunas nuevas opciones (figura 6). Desde la opción "Configure", podremos modificar el fichero .cscfg, donde por ejemplo podríamos establecer nuevamente el número de instancias levantadas para balancear la carga de nuestra aplicación.

Ahora ya solo nos faltaría arrancar la aplicación utilizando el botón "Run"; paciencia de nuevo, esto puede tardar unos minutos. Cuando el proceso haya finalizado, veremos que el estado de nuestra aplicación es Ready; a partir de este momento ¡estamos en la nube!, y podemos visitar nuestra aplicación desde la URL asociada.

Debemos tener claro que siempre que tengamos una aplicacion desplegada, esta estara consumiendo recursos de proceso, incluso aunque estuviera en estado Stopped. Si queremos dejar de consumir recursos para no sobrepasar las horas establecidas en las cuentas gratuitas, debemos eliminar el despliegue (!el cubo debe quedar gris!). Todo el proceso

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

19

Page 20: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

de publicación puede realizarse de una manera automatizada mediante Windows Azure Service Management API. Los detalles de esta API basada en REST se escapan del alcance de este articulo; puede ver un escenario completo y funcional de su utilizacion en uno de los ejemplos publicados por Microsoft, CSManage.

Artículo por Toni Recio y Gerard López

Trabajando con el Storage de Windows AzureTrabajamos con el servicio Storage de Windows Azure, que nos permite almacenar información a modo de base de datos.

En el Manual de Windows Azure estamos tratando esta herramienta para la programación en la nube. De modo que, ahora que ya sabemos lo necesario para jugar un poco con Azure, vamos a interactuar con el servicio Storage

Este servicio incorporado en Windows Azure nos permite almacenar información, como si de una base de datos se tratara. En este artículo, a modo de simple pincelada introductoria, veremos qué debemos hacer para que nuestro pequeño ejemplo trabaje con datos utilizando con el Storage.

Listado 2. Entidad de metadatos (imgMetaData.cs) inteusingSystem;using Microsoft.WindowsAzure.StorageClient;namespace WebRole1{public class imgMetaData : TableServiceEntity{public imgMetaData(){PartitionKey = "meteosat";RowKey = Guid.NewGuid().ToString();}public string Observacion { get; set; }public DateTime Fecha { get; set; }public string ContainerRef { get; set; }public string BlobRef { get; set; }}}

Nota: Al trabajar con .NET, podemos utilizar la librería Microsoft.WindowsAzure. StorageClient, que nos encapsulará las llamadas vía REST para que nos resulte más cómodo trabajar con Storage.

Para almacenar los datos en una tabla, lo primero que vamos a necesitar es crear una estructura que represente los metadatos de la imagen que deseamos almacenar. Lo haremos mediante una nueva clase que implemente una entidad heredando de TableServiceEntity, clase que ubicaremos en un nuevo fichero imgMetaData.cs dentro del proyecto de rol Web (listado 2). En el constructor de nuestra nueva entidad se inicializan las propiedades heredadas PartitionKey y RowKey, que implementan claves de agrupación e identificación de datos en la nube.

Listado 3. Servicio de contexto (imgMetaDataServiceContext.cs) using System;using System.Linq;using Microsoft.WindowsAzure;using Microsoft.WindowsAzure.StorageClient;namespace WebRole1{public class imgMetaDataServiceContext : TableServiceContext{public imgMetaDataServiceContext(string baseAdress,StorageCredentials credentials) : base(baseAdress, credentials){}

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

20

Page 21: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

public IQueryable<imgMetaData> imgMetaData{get { return this.CreateQuery<imgMetaData>("imgMetaData"); }}public void AddImage(string observacion, DateTime fecha,string containerRef, string blobRef){AddObject("imgMetaData", new imgMetaData {Observacion = observacion, Fecha = fecha,ContainerRef = containerRef, BlobRef = blobRef });SaveChanges();}}}

Ahora que ya tenemos nuestra entidad, deberemos generar el codigo minimo necesario para interactuar con colecciones de dichas entidades. Para ello, tambien en el rol Web, creamos otra nueva clase en el fichero imgMetaDataService] �Context.cs, esta vez heredando de TableServiceContext (listado 3). En nuestro ejemplo nos centraremos en dos metodos: uno para recuperar entidades de metadatos y otro para agregarlas.

Nota: Es necesario agregar una referencia a la librería System.Data.Services. Client para poder compilar el código.

Vamos ahora a crear la cadena de conexión, que de momento apuntará a nuestro entorno local: dentro de la carpeta Roles del proyecto WeatherService, accedemos a las propiedades del WebRole1 (tal y como veíamos en la figura 2), y en el apartado "Settings" añadimos el elemento DataConnectionString con valor UseDevelopmentStorage=true. A continuación, nos centraremos en el evento OnStart del rol Web. En él mapeamos la configuración del servicio y nos conectamos al Storage, para así poder crear el contenedor BLOB de imágenes y la tabla que contendrá los metadatos. Todo ello puede verse en el listado 4.

Listado 4. Evento OnStart en WebRole.cs // Creamos la conexión con el servicio de StorageCloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) => {configSetter(ConfigurationManager.ConnectionStrings[configName].ConnectionString);});var storageAccount = CloudStorageAccount.FromConfigurationSetting("DataConnectionString");// Creamos el contenedor BLOB para almacenar las imágenesCloudBlobClient blobStorage = storageAccount.CreateCloudBlobClient();CloudBlobContainer container = blobStorage.GetContainerReference("meteosat");container.CreateIfNotExist();// Configuramos el contenedor con acceso públicovar permissions = container.GetPermissions();permissions.PublicAccess = BlobContainerPublicAccessType.Container;container.SetPermissions(permissions);// Creamos la tabla para almacenar los metadatosCloudTableClient.CreateTablesFromModel(typeof(imgMetaDataServiceContext), storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials);

Por último, nos queda implementar el evento Click del botón btnGuardar, cuyo cuerpo se muestra en el listado 5.

Listado 5. BtnGuardar_Click en Default.aspx.cs // Inicializamos la cuenta de Storagevar storageAccount =CloudStorageAccount.FromConfigurationSetting("DataConnectionString");// El nombre del contenedor no puede tener mayúsculasstring containerName = "meteosat";// Almacenamos la imagenCloudBlobClient blobStorage = storageAccount.CreateCloudBlobClient();CloudBlobContainer container = blobStorage.GetContainerReference(containerName);string uniqueBlobName = string.Format("Imagenes/{0}", Guid.NewGuid().ToString());CloudBlockBlob blob = container.GetBlockBlobReference(uniqueBlobName);WebRequest req = WebRequest.Create(Imagen.Src);WebResponse response = req.GetResponse();Stream stream = response.GetResponseStream();blob.UploadFromStream(stream);// Almacenamos los metadatos en la tabla

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

21

Page 22: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

var operations = new imgMetaDataServiceContext(storageAccount.TableEndpoint.ToString(), storageAccount.Credentials);operations.AddImage(txtObservaciones.Text, DateTime.Now, containerName,uniqueBlobName);

Con estos sencillos pasos, nuestra aplicación ya almacena datos en el Storage; pero deberemos tener en cuenta que los datos se almacenan en local. Para interactuar con la nube, tenemos que cambiar nuestra cadena de conexión con los datos, que obtendremos como resultado de crear un servicio de Storage en el portal de desarrollo de Azure (del mismo modo que antes hemos creado un Hosted Service).

En el siguiente artículo veremos el SQL Azure que nos permite trabajar con almacenamiento relacional.

Artículo por Toni Recio y Gerard López

SQL AzureWindows Azure nos da la posibilidad de trabajar con almacenamiento relacional en la nube.

Uno de los factores diferenciales de la plataforma Azure que estamos estudiando en este manual, con respecto a otras alternativas de computación en la nube es la posibilidad de trabajar con almacenamiento relacional. Microsoft, recogiendo el feedback de la comunidad, decidió apostar por un SQL Server en la nube que nos permita trasladar nuestros desarrollos ya realizados a Azure con un simple cambio en la cadena de conexión. Pese a que SQL Azure cuenta con algunas limitaciones (ver tabla 2) con respecto a su versión tradicional, puede satisfacer plenamente las necesidades de la mayoría de los proyectos.

La curva de aprendizaje de SQL Azure es mínima, y podemos utilizar SQL Server Management Studio (SSMS) para su administración, mientras que nuestros desarrollos accederán a los datos mediante el mismo código ADO.NET. Para obtener los datos del servidor y poder realizar las conexiones pertinentes, debemos recurrir al portal de gestión de SQL Azure y pulsar en el apartado "DataBase". Pese a todo, no nos resultará inmediato conectarnos mediante SSMS, que nos mostrará un mensaje de error al tratar de conectar con el servidor. El problema no es otro que el hecho de que SQL Azure tiene cerradas por defecto todas las puertas de acceso. Para solventar esta situación, volvemos al apartado "Database" del portal y en él seleccionamos la pestaña "Firewall Settings"; añadimos una nueva regla en el cortafuegos indicando nuestra dirección IP y esperamos unos minutos a que la regla se replique.

Una vez solventado el escollo de la seguridad, nos encontraremos con otro error derivado del hecho de que SSMS espera conectarse a un servidor de SQL Server tradicional, no compatible al 100% con SQL Azure, lo que puede provocar algunas incompatibilidades con herramientas de administración como el propio SSMS. Para sortear este último escollo, cancelamos la ventana de conexión y pulsamos el botón "Nueva consulta". De nuevo se visualizará la ventana de conexión, en la que pulsamos el botón "Opciones" e indicamos, en la pestaña "Propiedades de Conexión", el nombre de la base de datos con la que deseemos trabajar. En nuestro caso, al no haber creado ninguna, indicaremos la base de datos master. Pese a no disponer de toda la potencia de gestión de SSMS, podremos ahora ejecutar sentencias de

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

22

Page 23: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

Transact- SQL contra nuestra base de datos en la nube. Es importante destacar que estos primeros problemas de compatibilidad ya se encuentran solventados en el recientemente publicado SQL Server 2008 R2.

Nota: Será de vital importancia optimizar las consultas y los accesos a la base de datos, ya que es importante recordar que en el entorno de la nube pagamos por su uso; ¡los SELECT * siempre son más caros!

Por último, es importante destacar que existen dos versiones de SQL Azure:

la Web Edition, de 1 Gb de capacidad, y la Business Edition, de 10 Gb. Si necesitamos superar los 10 Gb de información relacional, deberemos hacer uso de más de un servidor de bases de datos. Pese a todo, en el pasado MIX de Las Vegas se anunció, con disponibilidad inmediata, una nueva edición de 50 Gb.

Un amplio horizonte de posibilidades

En la actualidad, Azure ya ofrece algunos otros interesantes servicios en producción, además de los que hemos mencionado hasta ahora, así como otros servicios de momento disponibles en evaluación:

• AppFabric (no confundir con el Fabric Controller). Se trata de un conjunto de potentes servicios orientados a las comunicaciones, como el Service Bus, que mediante una implementación del patrón Enterprise Service Bus nos permite registrar y exponer servicios entre diferentes redes a través de dispositivos de control de accesos como firewalls o NAT, o el Access Control, con el que podremos exponer dichos servicios de forma segura.

• Windows Azure Drive. Es un servicio que nos da acceso a una API NTFS, mediante la cual podemos hacer uso de un espacio de disco permanente, implementado con Windows Azure Page Blob. No está pensado para que lo utilicemos como almacenamiento de datos, pues para eso ya tenemos las herramientas de Storage y SQL Azure, sino que está orientado a facilitarnos la migración de desarrollos existentes que hacen uso de recursos locales (por ejemplo, archivos locales de configuración). Cuenta con un límite de 1 TB de información por page blob. Actualmente se encuentra en fase beta.

• Codename Dallas. Es un servicio de datos (DaaS) que nace con la idea de englobar fuentes de datos para que puedan ser consumidas por programadores e information workers. Nosotros también dispondremos de la posibilidad de proveer nuestra información creando servicios propios, que podremos publicar para que sean consumidos por terceros. Este producto se encuentra en CTP, pero para que nos hagamos una idea y clarificar el concepto, entre los servicios actuales se encuentran NASAMars Orbital Images y UNESCO UIS Data.

Un buen modo de estar al dia con relacion a la aparacion de nuevos servicios y utilidades alrededor de Azure es el portal PinPoint de Microsoft o el centro de desarrollo para Azure en MSDN.

Conclusiones

La conclusión más importante que podemos extraer acerca del tema de este manual sobre Windows Azure es el empeño que ha puesto Microsoft en no hacer traumático el camino de nuestras aplicaciones hacia la nube, que en muchos casos puede producirse con un simple cambio en la cadena de conexión. Por añadidura, nos ofrece una plataforma de despliegue profesional asequible tanto para nuestro día a día como para los servicios destinados a ser los nuevos casos de éxito de la red; todo ello de una forma sencilla, y aislándonos de la problemática de gestión de servidores y comunicaciones. ¿Y tú? ¿Cuánto vas a tardar en subirte a la nube?

Artículo por Toni Recio y Gerard López

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

23

Page 24: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

Servicio de computación: Windows AzureWindows Azure es el servicio de computación de la plataforma, donde disponemos de un entorno para desplegar nuestras aplicaciones en la nube.

En este artículo profundizaremos algo más sobre este servicio.

¿Qué ofrece Windows Azure Compute?

Windows Azure Compute nos proporciona un entorno para nuestras aplicaciones. De esta manera podremos centrarnos en el desarrollo de las mismas y abstraernos de la mayor parte de la administración, tanto de los servidores de pre producción como de producción.

Nuestras aplicaciones serán alojadas en máquinas virtuales dentro de los data center de Microsoft, con Windows Server 2008 R2 Enterprise de 64 bits como sistema operativo. Dependiendo de las necesidades de nuestras aplicaciones, la plataforma nos ofrece distintos tamaños de máquinas virtuales:

Tipo de apliaciones

En cuanto a las aplicaciones, podemos señalar dos tipos bien diferenciados:

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

24

Page 25: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

¿Por dónde empiezo?

En este artículo vamos a centrarnos en .NET pero es importante saber que podemos desarrollar aplicaciones en cualquier otro lenguaje, como por ejemplo Java, Ruby o PHP. Para obtener más información al respecto tenemos disponible el siguiente enlace.

Hasta la versión 1.2 del SDK las versiones del IDE soportadas eran Visual Studio 2008 y 2010. Sin embargo, con la última actualización del SDK a la versión 1.3, en la actualidad solamente está disponible para la versión 2010 de Visual Studio y Visual Studio Express. Para descargar las herramientas necesarias tenemos dos opciones: Realizar la instalación través de Windows Platform Installer o bien mediante la descarga directa.

Una vez instalado, iniciamos Visual Studio 2010 con privilegios de administrador. Iniciamos la creación de un nuevo proyecto donde podemos ver un nuevo apartado para las aplicaciones de tipo Cloud.

Seleccionamos Windows Azure Project y modificamos el nombre del proyecto a HelloCloud. Hacemos clic en el botón OK para continuar con el asistente.

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

25

Page 26: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

Como comentábamos en el apartado anterior, podemos dividir las aplicaciones en dos tipos: Web role y Worker role. Llegados a este punto podemos elegir cuales son los roles que queremos añadir a nuestro desarrollo:

• ASP.NET Web Role: Añade un proyecto del tipo Web Application. • ASP.NET MVC 2 Web Role: Si bien a día de hoy ya podemos disfrutar de la versión 3 de ASP.NET MVC,

cuando se publicó la última versión del SDK la última versión correspondía con ASP.NET MVC 2. • WCF Service Web Role: Proyecto para crear servicios utilizando Windows Communication Foundation. • Worker Role: Plantilla que nos permite la creación de aplicaciones que se ejecutan en segundo plano. • CGI Web Role: Este rol está pensado específicamente para aplicaciones de tipo FastCGI. El ejemplo por

excelencia es la creación de sitios PHP.

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

26

Page 27: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

Para este ejemplo utilizaremos la primera opción. Si quisiéramos modificar el nombre del proyecto podemos hacerlo a través del lápiz situado a la derecha de aquellos que estén agregados:

Pulsamos OK para aceptar el Web role seleccionado y que proceda a generar la solución. Una vez finalizada la carga de los proyectos vemos que tenemos el siguiente resultado:

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

27

Page 28: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

Como podemos ver, existen algunos cambios respecto a un proyecto Web Application. En primer lugar vemos que existe un nuevo proyecto en la parte superior que fundamentalmente se encargar de recopilar toda la información relativa al entorno cloud:

La carpeta Roles contendrá un archivo por cada proyecto que posteriormente deba desplegarse en Windows Azure. Si hacemos doble clic sobre WebRole1 podemos visualizar la configuración para ese rol en concreto:

La primera pestaña está destinada a una configuración muy general del rol. En ella podemos establecer el nivel de confianza que la plataforma va a utilizar para ejecutar la aplicación (Será importante tener Full trust si queremos ejecutar código no manejado como c++ por ejemplo), el número de instancias que queremos que sirvan nuestra aplicación, el tamaño de la máquina virtual, el protocolo de inicio que vamos a utilizar para las peticiones y un último apartado para habilitar y almacenar las trazas para el diagnóstico.

Nota: Siempre que aparezca la línea UseDevelopmentStorage=true estamos especificando que queremos utilizar Storage Emulator para el almacenamiento. Si este código se subiera a la nube no presentaría ningún error pero tampoco almacenaría ninguna información.

El apartado Settings será nuestro equivalente en la nube a la sección appSettings del archivo de configuración de la aplicación utilizado hasta ahora. Debido a que el archivo web.config no podrá ser modificado, a no ser que realicemos un despliegue nuevo, es importante almacenar en esta sección todas aquellas propiedades dinámicas que pueden ser susceptibles de cambio.

Endpoints será el encargado de registrar todos aquellos puntos de entrada que vayan a estar disponibles para interactuar

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

28

Page 29: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

con nuestra aplicación.

Local storage es un apartado donde podemos reservar directorios dentro de la instancia de la máquina virtual que se está ejecutando. Este apartado puede ser muy eficaz para ser usado como caché, almacenamiento de archivos temporales, etcétera.

Para configurar un directorio elegiremos un nombre, el tamaño máximo del espacio (el tamaño mínimo es 1 MB) y si queremos que ese espacio se limpie cuando el rol se recicle, es decir, si se reinicia, se actualiza el S.O, etcétera.

El apartado de Certificates tiene como objetivo asociar aquellos certificados disponibles a través de la plataforma. Un ejemplo de uso para este apartado es registrar aquellos certificados que estarán asociados a las peticiones HTTPS.

Por último, Virtual Network solamente se utilizará para aquellas aplicaciones que requieran conexión con servidores on premise a través de Windows Azure Connect.

Una vez que hemos repasado toda la configuración disponible a través de pestañas, podemos decir que ServiceConfiguration.cscfg y ServiceDefiniton.csdef almacenan de manera conjunta la misma información mostrada en los apartados anteriores en formato XML :-)

Por otro lado, dentro de la aplicación web aparece un nuevo archivo llamado WebRole.cs. Este archivo es el punto de entrada a la aplicación donde frecuentemente podemos encontrar parámetros de configuración iniciales.

Para este ejemplo, solamente vamos a modificar sutilmente el código del Default.aspx , para mostrar el nombre del servidor que está sirviendo esta página.

<%@ 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>Welcome to ASP.NET!</h2><p><%:Server.MachineName %></p><p>

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

29

Page 30: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

You can also find <a href="http://go.microsoft.com/fwlink/?LinkID=152368&clcid=0x409"title="MSDN ASP.NET Docs">documentation on ASP.NET at MSDN</a>.</p></asp:Content>

Entorno de pruebas

Para evitar el gasto innecesario a la hora de probar nuestras aplicaciones, el equipo de Windows Azure Platform nos ha proporcionado un entorno de pruebas en local para simular el despliegue de nuestra aplicación en la nube :-) Este entorno está divido en dos: Compute Emulator para simular los roles que hemos implementado y Storage Emulator para el servicio Windows Azure Storage, del cual hablaremos en los próximos artículos.

Centrándonos en Compute Emulator, cuando arrancamos la aplicación desde Visual Studio 2010 de forma automática ejecutará los dos entornos de simulación. Para acceder a los mismos basta con pulsar sobre el siguiente icono de la barra de tareas con el botón derecho:

Si pulsamos sobre Show Compute Emulator UI podemos visualizar la interfaz de este emulador:

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

30

Page 31: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

En él visualizamos los desarrollos que están siendo simulados. En este caso concreto vemos nuestra solución HelloCloud con el WebRole1 que creamos anteriormente. El círculo de color verde se trata de la instancia que tenemos iniciada para nuestra aplicación. En realidad estas instancias se tratan del número de máquinas virtuales que queremos que sirvan los desarrollos. Por cada instancia que tengamos iniciada tendremos una consola donde nos informa del estado de la misma así como las trazas que hayamos registrado.

Resumén

En este artículo hemos visto qué es necesitamos para crear una aplicación apta para Windows Azure, cuáles son los parámetros de configuración existentes así como el entorno de emulación de plataforma en local.

En el próximo artículo veremos cómo desplegar nuestra aplicación en los data centers de Microsoft.

Artículo por Gisela Torres Buitrago

Windows Azure Storage Blob Service�Uno de los servicios disponibles en la plataforma Windows Azure trata varios tipos de almacenamiento no relacional y es conocido como Windows Azure Storage.

En este artículo vamos a tratar uno de los componentes de dicho servicio conocido como Blob. Esta palabra se corresponde con las siglas Binary Large Object y está pensada para almacenar archivos de gran tamaño, como por ejemplo:

Podemos decir que cada blob es en realidad un archivo con una URI independiente dentro del cloud. Cada uno de estos blobs debe estar alojado obligatoriamente dentro de un contenedor en concreto.

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

31

Page 32: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

Estos contenedores pueden almacenar uno o más archivos, los cuales no tienen que ser necesariamente del mismo tipo:

En cuanto a las URIs que referencian a cada uno de los blobs, siguen un patrón en función de tres valores fundamentales: storageAccount, container y blobName.

http://<storageAccount>.blob.core.windows.net/<container>/<blobName>

Por ejemplo, una URI válida para uno de los archivos mostrados en la imagen anterior podría ser la siguiente:

http://mediastorage.blob.core.windows.net/pop/Fly.mp3

Para verlo con un ejemplo vamos a crear una aplicación que almacene nuestras imágenes en un contenedor llamado mypics. En primer lugar creamos un nuevo proyecto ASP.NET Web Application llamado Blobs.

Abrimos el archivo Default.aspx donde añadiremos el siguiente código, que nos permitirá seleccionar cualquier archivo que queramos adjuntar, además de visualizar los que ya han sido almacenados en el contenedor a través de un gridView:

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

32

Page 33: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"CodeBehind="Default.aspx.cs" Inherits="Blobs._Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"></asp:Content><asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"><div id="divUpload"><asp:FileUpload ID="fuScript" runat="server" /><asp:Button ID="btnUpload" runat="server" Text="Upload!" OnClick="btnUpload_Click" /></div><div class="picsData"><asp:GridView ID="grvMyPics" runat="server" DataKeyNames="Uri" AutoGenerateDeleteButton="true"AutoGenerateColumns="false" OnRowDeleting="grvMyPics_RowDeleting"><Columns><asp:TemplateField HeaderText="Container"><ItemTemplate><%# Eval("Container.Name")%></ItemTemplate></asp:TemplateField><asp:BoundField HeaderText="Uri" DataField="Uri" /><asp:ImageField HeaderText="Pic" DataImageUrlField="Uri" /></Columns></asp:GridView></div></asp:Content>

La página es bastante sencilla: En primer lugar tenemos un apartado donde podemos seleccionar una imagen de nuestro equipo local y subirla a un blob de nuestro storage. En el segundo apartado se nos mostrarán los archivos ya almacenados.

Antes de implementar la funcionalidad para los dos casos anteriores, debemos añadir una referencia a Microsoft.WindowsAzure.StorageClient.dll la cual se trata de un wrapper que nos facilitará las llamadas a la API REST que se comunica con el servicio Windows Azure Storage.

Ruta: C:\Program Files\Windows Azure SDK\v1.4\ref

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

33

Page 34: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

Como funcionalidad tendremos lo siguiente:

using System;using System.Web.UI;using System.Web.UI.WebControls;using Blobs.WindowsAzureServices;

namespace Blobs{public partial class _Default : Page{protected void Page_Load(object sender, EventArgs e){if (!Page.IsPostBack)BindFiles();}

protected void btnUpload_Click(object sender, EventArgs e){if (fuScript.HasFile){new BlobService().AddBlob(fuScript.FileBytes, fuScript.FileName);

BindFiles();}}

private void BindFiles(){grvMyPics.DataSource = new BlobService().GetBlobs();grvMyPics.DataBind();}

protected void grvMyPics_RowDeleting(object sender, GridViewDeleteEventArgs e){var uri = (Uri)grvMyPics.DataKeys[e.RowIndex].Value;

new BlobService().DeleteBlob(uri.AbsoluteUri);

BindFiles();

}}}

En el Page_Load vamos a lanzar el método BindFiles, declarado más abajo, el cual nos va a cargar el gridView con los blobs que hayan sido almacenados. Para ello, se ha creado una clase llamada BlobService donde vamos a declarar una serie de métodos que se encargarán de la llamada a la API a través del wrapper.

Si volvemos a fijarnos en el código de la página Default.aspx, vemos que existe un método enlazado al botón btnUpload en su evento click. En él vamos a comprobar si el usuario añadió algún archivo y, de ser así, utilizaremos de nuevo BlobService para incluir el mismo dentro de un blob. Una vez añadido, llamaremos de nuevo a BindFiles para refrescar la información del grid.

Por último, se ha declarado un último método asociado al evento RowDeleting del grid con el objetivo de eliminar el blob seleccionado haciendo un último uso de la clase mencionada anteriormente.

En cuanto al código de BlobService, se ha creado una clase independiente con el objetivo de simplificar la lógica:

using System.Collections.Generic;using Microsoft.WindowsAzure;using Microsoft.WindowsAzure.StorageClient;

namespace Blobs.WindowsAzureServices{public class BlobService{private readonly CloudBlobClient _blobClient;private const string ContainerName = "mypics";

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

34

Page 35: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

public BlobService(){var account = CloudStorageAccount.DevelopmentStorageAccount;_blobClient = new CloudBlobClient(account.BlobEndpoint, account.Credentials);}

private CloudBlobContainer GetContainer(string containerName){var container = _blobClient.GetContainerReference(containerName);

if (container.CreateIfNotExist()){var containerPermissions = container.GetPermissions();containerPermissions.PublicAccess = BlobContainerPublicAccessType.Container;container.SetPermissions(containerPermissions);}

return container;}

public void AddBlob(byte[] fileBytes, string fileName){var blob = GetContainer(ContainerName).GetBlobReference(fileName);blob.UploadByteArray(fileBytes);}

public IEnumerable<IListBlobItem> GetBlobs(){var container = GetContainer(ContainerName);return container.ListBlobs();}

public void DeleteBlob(string uri){var blob = GetContainer(ContainerName).GetBlobReference(uri);blob.DeleteIfExists();}}}

Si nos fijamos en el constructor de la clase, vemos que necesitamos dos elementos que trabajan de forma conjunta: Por un lado debemos recuperar la cuenta con la que vamos a trabajar, donde caben dos opciones: En primer lugar podemos hacer uso de la cuenta de desarrollo, la cual es una simulación del storage que está alojado en el cloud. Esta simulación necesita ejecutar una aplicación llamada Storage Emulator la cual nos proporciona tres endpoints para cada uno de los servicios disponibles en Windows Azure Storage:

Por otro lado, podemos utilizar una cuenta real que apunte a nuestro servicio ya en la nube, del cual hablaremos al final de este artículo :-)

Una vez recuperada la cuenta, creamos un objeto del tipo CloudBlobClient el cual nos proporcionará los métodos necesarios para contactar con la API.

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

35

Page 36: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

El primer paso a seguir en cualquiera de las acciones, Añadir, eliminar, listar, etcétera es recuperar el contenedor sobre el que vamos a operar. Para ello, se ha creado un método llamado GetContainer donde rescatamos en este caso el contenedor mypics y lo creamos en el caso de que no exista. Otro punto muy importante en relación con el contenedor trata del nivel de acceso que queramos asignarle. A día de hoy existen tres niveles de acceso:

• Blob: La información de un blob dentro de un contenedor puede ser leída por un usuario anónimo, pero la información a nivel de contenedor no está disponible, es decir, no es posible listar los blobs dentro de un contenedor.

• Container: Acceso anónimo donde los clientes pueden leer la información a nivel del contenedor y la información de los blobs. Por otro lado, no es posible listar los contenedores dentro de un storage account de forma anónima.

• Off: Acceso restringido solamente al propietario de la cuenta.

Por último, cada vez que queramos crear o recuperar un blob debemos solicitar la referencia al mismo, aunque este no exista, a través del método GetBlobReference. Lo que conseguimos con ello es bien lo que será la dirección del nuevo blob o bien la URL del ya existente.

En el caso de AddBlob cuando recuperamos dicha referencia, dentro de un objeto del tipo CloudBlob, utilizamos la misma para subir el array de bytes que compone el archivo. Si bien en este ejemplo hemos utilizado UploadByteArray, existen varios métodos disponibles para esta función:

En el caso de que necesitáramos realizar la descarga de un blob, el proceso sería bastante similar, al igual que los métodos:

Por otro lado, para el caso de GetBlobs disponemos de un método a nivel del objeto CloudBlobContainer llamado ListBlobs que nos permite listar todos los blobs dentro de un contenedor.

Para finalizar con la clase BlobService podemos ver la forma de eliminar un archivo en el método DeleteBlob donde basta con llamar al método DeleteIfExists una vez recuperada la referencia al blob.

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

36

Page 37: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

Con esta implementación estamos listos para poder listar, añadir y eliminar blobs en nuestro storage : Arrancamos la aplicación pulsando F5 para visualizar la siguiente imagen:

A medida que vayamos agregando imágenes, podremos ver el nombre del contenedor donde están alojadas las mismas, la Uri independiente de cada una y la su previsualización:

Del mismo modo, si queremos eliminar cualquiera de las imágenes añadidas anteriormente podremos hacerlo de forma independiente seleccionando el link Delete de la fila deseada.

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

37

Page 38: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

Una vez que estemos listos para dar el paso a producción accedemos al portal de Windows Azure y damos de alta un nuevo servicio de Storage:

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

38

Page 39: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

Cuando el nuevo storage tenga como status Created, en el apartado de Properties tendremos todos los datos necesarios para realizar la conexión desde nuestra aplicación:

Respecto al código, basta con modificar las siguientes líneas en el constructor de la clase BlobService:

public BlobService(){//var account = CloudStorageAccount.DevelopmentStorageAccount;CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) =>configSetter(ConfigurationManager.ConnectionStrings[configName].ConnectionString));

var account = CloudStorageAccount.FromConfigurationSetting("PicStorage");_blobClient = new CloudBlobClient(account.BlobEndpoint, account.Credentials);}

En la primera línea estamos definiendo la forma de obtener la configuración de la Storage Account. En este caso le indicamos que el nombre pasado como parámetro, configName, vamos a ser el nombre de la connection string alojada en el archivo web.config del sitio, utilizando la clase ConfigurationManager.

Por lo tanto, la cuenta será aquella en el archivo de configuración con el nombre PicStorage. Un ejemplo de cadena de conexión podría ser la siguiente:

<connectionStrings><add name="PicStorage" connectionString="DefaultEndpointsProtocol=https;AccountName=mypicsstorage;AccountKey=lCjRbkXc4KNwhy

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

39

Page 40: Manual Windows Azure

Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

5y9kgetKmivdIsPkeZInuwgZ7yubskdQzjlHx5lcLxv5ZlkBfd5gD5ehKaX2VulwJOrG1MBQ=="/></connectionStrings>

Nota: AccountKey se corresponde con el campo Primary Access Key recuadrado en la imagen anterior.

Si ejecutamos de nuevo la aplicación comprobamos que, al subir de nuevo nuestras imágenes, la URI de las mismas varía, apuntando esta vez al storage en el cloud:

Conclusión

En este artículo hemos visto la forma de trabajar con los blobs del servicio Windows Azure Storage. También hemos comprobado que este servicio no debe estar relacionado necesariamente con una aplicación del cloud sino que puede utilizarse independientemente con otras aplicaciones on-premise, es decir, dentro de nuestras instalaciones. ¡Espero que haya sido de utilidad!

Artículo por Gisela Torres Buitrago

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html © Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorización.

40