Sie sind auf Seite 1von 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 cmo nos
permite desarrollar la programacin en la nube.

Autores del manual


Este manual ha sido realizado por los siguientes colaboradores de DesarrolloWeb.com:
Toni Recio y Gerard Lpez

Project Manager y Analista Programador,


ambos en Pasiona Consulting
(5 captulos)

Gisela Torres Buitrago

Desarrolladora en tecnologas .NET y


Windows Azure MVP
http://www.returngis.net/
(4 captulos)

Mario Corts Flores

SharePoint Lead en Plain Concepts


http://geeks.ms/blogs/mcortes/
(1 captulo)

Miguel Angel Alvarez

Director de DesarrolloWeb.com y EscuelaIT


http://www.desarrolloweb.com
(1 captulo)

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com

Qu es el cloud computing?
En estos ltimos aos 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 trmino para referirse a aquellos servicios alojados en la red. De hecho
esa es la primera cosa que a la mayora de nosotros se nos viene a la cabeza sobre "Cloud Computing". Por ello,
podemos decir que la palabra nube sera equivalente a lo que conocemos como Internet. Sin embargo, el concepto tiene
mucho ms alcance y es algo que pretendemos relatar en el presente artculo.

Tipos de cloud
En la actualidad existen 3 tipos de nubes:

Nubes pblicas: Se trata de aquellas que son administradas por el proveedor del servicio. La gran ventaja de las
mismas es que no requieren de una inversin 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 pblicas, son administradas por el cliente para obtener
un mayor control. Debido a esto, supone una inversin inicial en la infraestructura ya que esta ser alojada onpremise, 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 hbridas: Por ltimo tenemos esta opcin intermedia entre las dos nubes anteriores. Si bien dicen que
este tipo ser el ms 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 administracin 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 adems 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 autorizacin.

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com

son la computacin 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 ms 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 ms 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 versin online como SharePoint Online, Exchange Online, Office
Live Meeting y Office Communications Online. Otro grupo de aplicaciones dentro de este mbito seran
Salesforce, conocidos principalmente por su CRM en la nube, y Basecamp donde su producto estrella es su
herramienta de colaboracin para proyectos.

Ventajas
Como ventajas de este modelo de administracin y desarrollo podemos destacar el ahorro de costes como la ms
importante, adems de la alta escalabilidad, fiabilidad, as como la abstraccin 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 trmino "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 cuestin de minutos
una puesta en produccin que podra suponer meses, tratndose 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 percepcin de inseguridad al desplazar nuestra informacin fuera de nuestro alcance fsico, 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 localizacin de los servicios,
estamos atados a esta necesidad, por lo que es recomendable disponer de una segunda conexin en caso de fallo de la
principal.
Aunque cada da menos, todava existe cierta inmadurez en alguno de los servicios ofrecidos por falta de funcionalidad,
en relacin a productos similares diseados 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 tecnolgica de las grandes
empresas para referirse a los diferentes servicios alojados en Internet, as como los distintos tipos de nubes disponibles
en el mercado. Adems hemos enumerado los tipos de servicios disponibles a da de hoy y cmo algunas empresas ya
los ofrecen al pblico.
En el siguiente artculo veremos cmo la plataforma Windows Azure encaja dentro del cloud y cules son los servicios
disponibles y futuros conocidos.
Nota: Otra aproximacin a este novedoso concepto que poco a poco se integrar en la tecnologa de nuestro da a da se puede apreciar
en el artculo 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 autorizacin.

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com

Artculo por Gisela

Torres Buitrago

Cloud computing una realidad?


Qu es Cloud Computing y qu caractersticas debe tener un servicio para ser considerado como Cloud
Computing. Por qu significa una revolucin y cules son las ventajas principales y las claves de su
importancia.
"El Cloud Computing no est de moda, es una realidad!" Con esta afirmacin me gustara empezar a discutir cmo esta
nueva forma de entender y consumir la informtica est calando en el sector de las IT.
Pero Qu es el cloud computing?, se podra resumir que el cloud computing es la capacidad de consumir servicios IT
de forma gil y flexible. Podramos 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 rpida.
Debe ser escalable
Debe proporcionar herramientas de autoservicio al usuario.

Nota: Otra visin introductoria sobre cloud computing se puede ver en el artculo 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 tuviramos ya disponibles en nuestro
servicio. Un ejemplo sera 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 nmero de instancias
del servicio para poder responder a una mayor demanda de usuarios o peticiones.
Adems 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 aproximacin se podra pensar que el Cloud computing es algo similar que un hosting, pero estaramos
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 podra decir que un hosting es un subconjunto del Cloud computing o que el cloud computing es una
evolucin 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 autorizacin.

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com

Por ejemplo Amazon EC2 permite crear instancias de mquinas virtuales pudiendo ajustar la memoria RAM, el
tamao de los discos, el SO,
El PaaS proporciona caractersticas adicionales al IaaS como puedan ser: despliegue automatizado de
aplicaciones, sistemas de gestin de autenticacin, sistemas de comunicacin de colas o mensajes, sistemas de
monitorizacin,
Un ejemplo podra ser el rol web de Azure que permite desplegar una aplicacin web sin necesidad de
configurar el SO ni el IIS y sin necesidad de conocer las mquinas desde donde se ejecutan la aplicacin.
El SaaS permite utilizar como servicio un software existente sin realizar instalaciones ni configuraciones.
Como ejemplo: CRM Online es una versin del CRM de Microsoft en modo cloud computing con el que los
clientes contratan desde una web el nmero de usuarios y en unos instantes disponen de la funcionalidad de
CRM sin realizar ninguna instalacin.

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 gestin 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 funcin de donde se encuentre el
datacenter:

Nube Pblica, 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 Hbrida, 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 ubicacin de los datos


Para muchos clientes la ubicacin de los datos es un factor crtico a la hora de plantear una solucin 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 legislacin.
Antes de plantear cualquier solucin habr que estudiar si los datos podrn ubicarse fuera de nuestras infraestructuras y
en qu pas se ubicarn para determinar si la legislatura vigente en ese pas no afectar a nuestro servicio.
Los organismos pblicos por ejemplo, solo podrn mover fuera del pas origen aquellos datos que sean totalmente
pblicos, por lo que no podrn plantear soluciones de Nube privada para datos sensibles.
Una alternativa sera plantear nubes hbridas con proveedores locales que tengan que cumplir con las misma legislacin.
Para ms informacin sobre jurisprudencia en este tema puede consultar el vdeo "Implicaciones legales del Cloud
Computing" de Pablo Garca Mexa.

Para quin est pensado el Cloud computing?


Se podra decir que el cloud computing no est pensado para un tipo de cliente especfico sino para un tipo de proyecto
o aplicativo que quiera aprovecharse de las caractersticas que se han mencionado anteriormente. Las pequeas
empresas por ejemplo podrn utilizar aplicativos sin necesidad de adquirir una infraestructura que le supondra 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 permitirn
ser ms competitivos y podrn ahorrar en costes en IT.
El cloud computing no vale para todas las soluciones, pero si es una opcin 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 autorizacin.

Tu mejor ayuda para aprender a hacer webs


www.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 ms 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 (Espaa)
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 ms giles a la hora de crear nuevos servicios y ms 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 generacin 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 ms rpidos podremos adaptarnos a las
futuras versiones.
Esperar dos aos 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 ms
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
artculo La plataforma Windows Azure.

Artculo por Mario

Corts Flores

Windows Azure: cambiando el desarrollo aceleradamente


Resumen y conclusiones sobre la Keynote 2 del Build 2012 sobre Windows Azure, donde hemos visto una
aproximacin a un modelo de desarrollo nuevo, que altera sustancialmente lo que conocemos.
Quizs muchos desarrolladores tengamos una idea difusa de lo que es Windows Azure, y de hecho es probable que sea
as porque muchas herramientas y tecnologas se unen bajo ese nombre. Si como yo no tienes una exacta idea de lo que
es, quizs ver la Keynote 2 del Build 2012 te va a dar una referencia mejor sobre la tecnologa 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 autorizacin.

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com

As en pocas palabras hemos entendido que nuestra comunidad cada vez ms 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 rpida. De hecho, cada vez ms, se trata de tener un conocimiento profundo de APIs, frameworks y
programas, por encima incluso de dominar un lenguaje de programacin dado. El uso de esas herramientas har
nuestras vidas ms sencillas y nuestro da a da mucho ms productivo. Al leer este artculo y ver el vdeo de la Keynote
podrs comprobar que existen personas que dedican mucho esfuerzo a pensar en todas estas cosas e ingenieros que
estn diseando 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 presentacin a ms de uno
se nos ha abierto la boca al comprobar por dnde 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 tecnologas de Microsoft para el desarrollo de software, hemos de admitir que en Azure y la compaa
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 mayora de profesionales las propuestas en ese sentido
son ms que suficientes. Es decir, para los proyectos que la mayora estamos acostumbrados a realizar, un framework
PHP o Python es ms que de sobra para facilitarnos la vida. Sin embargo, si tuviera que realizar un sistema ms
complejo de lo comn, echara 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 ms
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 ms sobre
qu es la nube. Realmente hace aos 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 estn cada vez ms conectados a Internet. Si vemos los Live Tiles
de Windows 8 observaremos que hay vida detrs de estos sistemas gracias a una conexin 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, estn 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 prctica para nosotros sera disponer del nmero de mquinas que necesitemos en cada
momento, la capacidad en bandeja y al instante, con solo tocar unas teclas o hacer unos clics de ratn, la autoreplicacin de datos y mquinas y la disponibilidad de nuevas, de manera transparente si algo falla en las que estamos
usando... se puede saber ms sobre las ventajas de tener servidores en la nube si lees otros artculos publicados
anteriormente. Ver Qu son los servicios en la nube y ejemplos de carga y cmo 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 autorizacin.

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com

Desarrollo de aplicaciones web en la nube


Quizs nos sorprendan ms un par de ejemplos concretos que hemos visto en la presentacin de hoy. El primero que
voy a recoger en este artculo es sobre la creacin de un sistema multimedia en el que podamos cargar vdeo, no solo
nosotros, sino cualquier usuario que lo necesite y que ste se encuentre disponible instantneamente. Vamos, imaginar
que tenis que hacer un Youtube a vuestra manera y que no queris complicaros con los procesos de upload,
codificacin, visualizacin, etc.
Esto se hace en cuestin de minutos o segundos. Pareca tan sencillo segn nos lo mostraron que hasta uno podra dudar
si realmente es cierto. Ok, para que te hagas una idea, todo esto lo hicieron con 2? 3? lneas de cdigo (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 tambin hay soluciones que realmente hacen que, si
lo sabes hacer, crear un API sea un juego de nios! Luego el propio API gracias a la capacidad de carga de los
servidores de Azure lo podrn consultar tantas veces como sea necesario.
Tambin nos mostraron ejemplos, realizados en segundos en directo, sobre hasta qu punto sera sencillo conectar el
sistema de login de Facebook o Twitter en una aplicacin desarrollada con Azure y sin saber nada sobre las APIs de
autenticacin de esos proveedores.

Desarrollo sobre otros sistemas Microsoft


Todo esto tambin 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 prcticamente automtica, nuestras aplicaciones o servicios web con Windows 8 para que en los Live Tiles te
muestren automticamente los procesos que se van realizando.
Otras posibilidades interesantes seran 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
fcilmente en nuestros desarrollos y que nos permiten poner en marcha elementos que desde cero nos costara mucho
ms trabajo desarrollar, como pasarelas de pago, servicios de envo de correo, transporte de datos, bsquedas,
informacin climtica, etc.

Conclusin
En definitiva, a no ser que seas un especialista en Azure, en cuyo caso este artculo posiblemente no te haya dicho
mucho nuevo, es muy probable que no sepas muy bien qu detrs de esta tecnologa y cmo puede ayudarte a
desarrollar programas impactantes de una manera rpida. Lo cierto es que los ejemplos que hemos visto en la Keynote
tienen mucho inters seguramente para ms de uno.
Yo os recomendara ver la grabacin, porque os va a dar una idea ms detallada de lo que habris podido adquirir al leer
este artculo. Yo creo que merece mucho la pena, puesto que podris entender cmo Microsoft piensa que debe ser el
desarrollo del futuro, ya disponible en el presente.
Artculo 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 autorizacin.

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com

La plataforma Windows Azure


En este artculo hablaremos de la plataforma Windows Azure creada por Microsoft.
En el artculo anterior estuvimos hablando sobre el concepto cloud computing adems de sus ventajas e inconvenientes.
Tambin 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 traumtica posible.
Durante estos ltimos aos 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
da 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 subscripcin. Existen dos tipos ofertas: Aquellas
pensadas para los suscriptores de MSDN y Microsoft Partners y por otro lado ofertas estndar para aquellos clientes que
no tengan relacin previa con Microsoft.
Podemos contratar y conocer las ofertas a travs del siguiente enlace: http://www.microsoft.com/windowsazure/offers/
Si nos fijamos en cualquiera de las ofertas, nos hablan de transacciones, horas de computacin, almacenamiento,
etctera. Si tenamos 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 travs de este enlace:
http://www.microsoft.com/windowsazure/economics/default.aspx

Qu servicios ofrece la plataforma?


Aunque a da de hoy se estn ultimando algunos de los servicios, vamos a enumerar aquellos de los que tengamos
conocimiento:
Windows Azure
Si bien los trminos 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 computacin que brinda la
plataforma.
Qu posibilidades nos da tener un servicio de computacin?
Como ventaja fundamental tenemos la posibilidad de centrarnos en nuestros desarrollos gracias a la abstraccin ms
que parcial de toda la administracin de la plataforma en la que se aloja la aplicacin, es decir: mantenimiento de los
servidores, actualizaciones, instalacin y configuracin de sistemas operativos, etctera. Desplegar una aplicacin en
produccin ser tan sencillo como desarrollar la aplicacin y despreocuparse del acondicionamiento del entorno.
Las herramientas, lenguajes y tecnologas 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 tamao, como por ejemplo
videos, imgenes, backups, etctera.
Table service donde podemos guardar informacin 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 autorizacin.

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com

Queue service para el almacenamiento de mensajes no superiores a 8KB con el fin de lograr una comunicacin
entre aplicaciones.
Windows Azure Drive permite a las aplicaciones en Windows Azure montar un disco duro virtual NTFS.

Si adems 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 excepcin de
algunas caractersticas, probablemente incorporadas a futuro. Las ventajas ms 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 haramos 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 tamaos de bases de datos, con un mnimo de 1GB y un mximo de 50GB.
SQL Azure Data Sync Como servicio adicional para SQL Azure, se va a proporcionar una la opcin de sincronizacin
entre distintas bases de datos dentro del mismo o diferente data center e incluso con bases de datos on-premise. Lo ms
interesante de esta novedad, an en su versin CTP , es que no ser necesario cdigo adicional para configurar el
servicio. Se podr establecer la sincronizacin 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 ms comunes para beneficiarse de este servicio son:

Sincronizacin de bases de datos que estn en la nube con las que estn on-premise.
Extender la informacin 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, grficos, mapas, etctera y poder desplegar los mismos en
servidores on-premise o bien en la nube.
Esta funcionalidad est an en su versin CTP.
Windows Azure AppFabric
Uno de los retos ms importantes y complejos trata de la seguridad de nuestras aplicaciones. Windows Azure AppFabric
nos ofrece un alto nivel de abstraccin de la capa de seguridad, reduciendo la complejidad en nuestra aplicacin.
Este servicio est compuesto de 5 funcionalidades diferentes:

Service Bus: Nos proporciona una comunicacin segura entre aplicaciones con la capacidad de atravesar
Firewalls, dispositivos NAT, etctera.
Access Control: Se trata de un servicio que nos facilita la autenticacin 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, adems de escalable (se podr aumentar o disminuir la cach en funcin de
nuestras necesidades). Esta funcionalidad slo est disponible en Windows Azure AppFabric LABS sin opcin
de contratacin por el momento.
Integration: En un futuro prximo tambin 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 todava.
Composite App: Automatizacin del despliegue y la administracin sin la necesidad de la generacin 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 autorizacin.

10

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com
manuales para la puesta en produccin. Esta funcionalidad no est disponible an.

Windows Azure Virtual Network


Dentro de una empresa solemos tener un conjunto de servidores que juntos conforman las aplicaciones de negocio. Si
eliminramos o trasladramos uno de los integrantes fuera del alcance del resto podra generar un fallo en el sistema al
no poder contactar con el mismo. Para ello, el equipo de la plataforma Windows Azure abrir prximamente un abanico
de posibilidades gracias a Windows Azure Virtual Network, un nuevo servicio que ofrecer la creacin de redes
virtuales entre otras caractersticas, por el momento desconocidas, con el fin de conectar los servidores alojados en la
nube con aquellos que an permanecen on-premise.
Por el momento podemos solicitar el acceso a la CTP de Windows Azure Connect a travs del portal de la plataforma
para la creacin 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 autorizacin.

11

Tu mejor ayuda para aprender a hacer webs


www.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 podrn contratar su
propio data center para alojarlo en su organizacin, incluyendo la posibilidad de utilizar Windows Azure, SQL Azure as
como la configuracin especfica de Microsoft para la red, almacenamiento y hardware.
Por el momento no est disponible para el pblico en general pero prximamente se generar un roadmap dependiendo
de las experiencias con los partners y clientes seleccionados para la prueba piloto.

En resumen
En este artculo hemos visto los servicios actuales de la plataforma, adems de los que presentarn en su versin final a
lo largo del ao. A da 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 artculo comenzaremos con el servicio de computacin Windows Azure para conocer cmo afrontar un
proyecto para la nube, cmo desplegarlo, etctera.
Artculo por Gisela

Torres Buitrago

Introduccin a Windows Azure


Vemos las posibilidades que nos presenta Windows Azure y la programacin en la nube y la preparacin
de su entorno.
El pasado 4 de enero, Microsoft oficializ el lanzamiento de Windows Azure, su apuesta en el terreno de la
computacin 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 compaa de Redmond, apuntando los conceptos ms
importantes desde un punto de vista prctico y con ojos de desarrollador.

Azure, ampliando posibilidades


asta ahora, cuando desarrollbamos aplicaciones a desplegar en servidores Windows tenamos dos opciones: usar
infraestructura propia (tanto equipos como canales de comunicacin) o contratarlos mediante un servicio de hosting.
Azure nos abre una tercera va, amplindonos las posibilidades a la hora de distribuir nuestros desarrollos y situndonos
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 nmero de los mismos en cualquier
momento; se nos permite, incluso, optar a programar la cantidad de recursos por fecha y hora segn las
previsiones de trfico a las que queramos dar respuesta.
Pagamos solo por lo que consumimos, con aplicacin 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 ubicacin geogrfica
de los usuarios de nuestros servicios, o por cuestiones legales asociadas a dicha zona.
La gestin del balanceo de carga entre servidores nos es totalmente transparente.
Nos olvidamos del mantenimiento de los equipos, la redundancia de datos o la actualizacin 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 pginas) 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 autorizacin.

12

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com
desarrollos podrn aprovecharse. Azure, por tanto, no es solo una plataforma donde ejecutar nuestro cdigo, sino que
tambin 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 cmo 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 paradjico, 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 integracin con el entorno de desarrollo,
incluye tambin su SDK. La forma ms sencilla de instalar dichas herramientas es mediante el Web Platform Installer;
dentro del apartado "Herramientas del desarrollador", pulsamos en la accin "Personalizar" de la opcin "Visual Studio
Tools", para por ltimo seleccionar "Windows Azure Tools para Microsoft Visual Studio" y pulsar el botn "Instalar".
Nota: Es importante destacar que deberemos contar con IIS 7.0 y SQL Server instalados en nuestro equipo local.

En el siguiente artculo veremos cmo realizar nuestro primer programa "Hola nube" con Windows Azure.
Artculo por Toni

Recio y Gerard Lpez

Creando nuestro primer "Hola nube" en Windows Azure


Vamos a tratar de hacer un ejemplo mnimo, para centrarnos en Azure como plataforma y que por otro
lado nos permita ver "nubes" de inmediato.
En anteriores entregas vimos una pequea introduccin a Windows Azure, un producto de Microsoft para programacin
en la nube. Ahora estamos en condiciones de ponernos manos a la obra con un primer ejemplo bsico, el tpico "Hola
Mundo" que nosotros hemos llamado en esta ocasin "Hola nube".
Nuestro ejemplo ser una simple pgina Web que muestre la ltima fotografa del satlite meteorolgico Meteosat. En
ella podremos introducir observaciones sobre la imagen y guardar los datos mediante un botn de comando, pero de
momento nos conformaremos con mostrar la fotografa, dejando para ms adelante la implementacin de la
manipulacin y almacenamiento de datos.
Para empezar, arrancamos Visual Studio con privilegios de administrador, dado que el entorno de simulacin local de la
plataforma requerir de ciertos permisos sobre nuestra mquina. Creamos un proyecto de la nueva categora "Cloud",
seleccionando como plantilla "Windows Azure Cloud Service", y asignamos los nombres WeatherService y
CloudMania al proyecto y la solucin, 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 autorizacin.

13

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com

Una vez que aceptamos el dilogo, se nos consultar qu roles debe implementar el servicio que queremos desarrollar.
Podemos ver los roles como las mquinas virtuales que vamos a utilizar para desplegar nuestra aplicacin en la nube.
Cada rol nos presenta una configuracin distinta de mquina 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 tambin podremos utilizar, por
ejemplo, para alojar aplicaciones Silverlight. Destacar que cuando hagamos uso de este rol para agregar una
aplicacin que ya tenamos desarrollada previamente, sta no podr ser del tipo "Web Site", ya que por ahora
dichas plantillas no estn 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 tambin da soporte a desarrollos realizados con Ruby, Python o Java, pero stos requieren de la instalacin
de software adicional en nuestra mquina 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 solucin (figura 1), donde nos encontraremos con un nuevo proyecto: al proyecto WeatherService,
que contiene la configuracin y metadatos del nuevo servicio, se aadir otro llamado WebRole1, que contiene una
implementacin prcticamente igual a lo que sera un proyecto ASP.NET tradicional. Centrmonos de momento en
Default.aspx para mostrar la ltima imagen del Meteosat (listado 1); bastar con insertar una etiqueta (tag) de imagen en
la pgina y ubicar un par de controles con el espacio para los comentarios y el botn de guardar.
Ahora ya estamos en disposicin de arrancar nuestra solucin; no almacena datos, pero ya mostrar la ltima fotografa
del satlite. Al ejecutar, advertiremos que nos aparece un nuevo icono de notificacin, 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 estn 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 autorizacin.

14

Tu mejor ayuda para aprender a hacer webs


www.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 va REST. El servicio contempla tres modelos
de almacenamiento:

Tablas. Se trata de un modelo prcticamente idntico al de una tabla de una base de datos convencional, pero
sin la capacidad de relacionarse con otras tablas: informacin estructurada, pero no relacionada.
Blobs: Estructura orientada a almacenar archivos binarios de gran tamao (hasta un total de 200 Gb. En
nuestro entorno local, el tamao mximo 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 informacin, sino de ponerla a disposicin de varios servicios, tanto en la nube
como fuera de ella.

Para implementar los tres modelos, y aunque parezca paradjico, la plataforma local se sustenta sobre SQL Server. De
hecho, lo primero que veremos antes de que se nos muestre nuestra aplicacin es la ventana de inicializacin del
Storage, la cual, una vez aceptada, dar paso al navegador con nuestra aplicacin.
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
notificacin. Tambin podremos configurar nuestro servicio editando en el proyecto WeatherService los archivos
ServiceConfiguration.cscfg y ServiceDefinition.csdef o, sin necesidad de tocar XML, configurar directamente va
WebRole1 (ver figura 2). Es de destacar con qu facilidad podremos definir el nmero de mquinas virtuales que
soportarn nuestra aplicacin, la potencia de las mismas (tabla 1) o la sencilla configuracin 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 autorizacin.

15

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com

Para probar, primero hay que pasar la tarjeta?


Y cmo podemos hacer pruebas reales en la nube? Microsoft ofrece dos modalidades gratuitas en promocin, una para
suscriptores MSDN y otra para el pblico 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
suscripcin del propio portal de MSDN. En la zona "Suscripciones" accederemos a la opcin "Plataforma Windows Azure" para poder
disfrutar de la oferta con mayores recursos disponibles y durante un perodo de tiempo ms extenso.

Si es la primera vez que accedemos al portal de servicios en lnea de Microsoft, se nos requerir una serie de datos de
contacto; una vez rellenados los formularios, dependiendo del tipo de promocin iremos por un camino u otro. En el
caso de la promocin pblica, nos dirigimos a la pestaa "Servicios", seleccionamos "Plataforma Windows Azure" y en
"Ofertas especiales" elegimos "Comprar ahora" (figura 3); mientras que los suscriptores MSDN se encontrarn ya en el
carro de la compra y tendrn que pulsar "Pagar" para continuar. En ambos casos, entre los datos que nos piden est el
nmero de tarjeta de crdito 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 autorizacin.

16

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com

Cuando hayamos facilitado todos los datos que se nos requieren, Microsoft nos enviar un par de correos avisndonos
de la activacin del servicio y dndonos 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 lmites gratuitos de las
promociones, podemos consultar la cantidad de recursos consumidos hasta un momento determinado (la informacin no
es instantnea, tarda unas horas en actualizarse) desde el apartado "Acciones", pulsando el enlace "Ver mis facturas". Y
segundo, el hecho de que por defecto nuestra suscripcin a la plataforma Azure est activada para renovarse
automticamente cuando finalice el plazo de prueba. Si no queremos pasar a un servicio de pago sin nuestra
intervencin, podemos cancelar la renovacin automtica en la pestaa de suscripciones mediante la accin "Cancelar
suscripcin de renovacin automtica".
Nota: El sistema implementa una serie de avisos, va correo electrnico, que nos advierten cuando estamos a punto de sobrepasar los
lmites establecidos en las cuentas de evaluacin.

Artculo por Toni

Recio y Gerard Lpez

Subiendo nuestra aplicacin a una nube real


Despus de programar la aplicacin 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 cmo subir a la nube una
aplicacin desarrollada en local.
Una vez que hemos realizado nuestras pruebas en entorno local (podramos decir que nuestra aplicacin est en la
niebla ;-) como hemos visto en los artculos 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 opcin "Publish" del
men "Build", lo que nos abrir una carpeta local donde estn ubicados nuestros dos nicos ficheros necesarios para
hacer la publicacin, y tambin 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 descripcin para el mismo, y despus 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 autorizacin.

17

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com
aplicacin, que ser un subdominio de cloudapp.net. Observe que tenemos un botn para comprobar que la direccin
est disponible. Hemos de tener en cuenta que ni el nombre ni la URL podrn ser modificados posteriormente. Otro
aspecto importante a decidir ser en qu zona geogrfica queremos que sea alojada nuestra aplicacin. Aqu tambin
podemos seleccionar un grupo de afinidad, porque si vamos a subir varias aplicaciones a la nube que interactan entre
ellas, esto nos asegura que se mantengan en una misma regin geogrfica. Si cuando creamos un servicio no
especificamos un grupo de afinidad, despus no podremos agregrselo, con lo que tendramos que eliminar el servicio y
volver a crearlo.

Una vez que tenemos el servicio creado, nos aparece un panel de gestin (figura 4). En dicho panel podemos controlar
el despliegue en produccin 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 versin 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 versin, pasarla a produccin con un simple clic (figura 5). Este paso entre entornos nos desplegar la versin
de staging en produccin, y a su vez har una copia de la versin de produccin 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 autorizacin.

18

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com

Para realizar la publicacin, deberemos pulsar el botn "Deploy" (en nuestro ejemplo, lo haremos sobre el entorno de
produccin) e indicar la ubicacin 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 botn "Deploy"
y esperaremos unos minutos hasta que la aplicacin se haya desplegado por completo. Una vez desplegada, el cubo que
representa nuestra aplicacin se nos mostrar en azul, y veremos que se nos habilitan algunas nuevas opciones (figura
6). Desde la opcin "Configure", podremos modificar el fichero .cscfg, donde por ejemplo podramos establecer
nuevamente el nmero de instancias levantadas para balancear la carga de nuestra aplicacin.

Ahora ya solo nos faltara arrancar la aplicacin utilizando el botn "Run"; paciencia de nuevo, esto puede tardar unos
minutos. Cuando el proceso haya finalizado, veremos que el estado de nuestra aplicacin es Ready; a partir de este
momento estamos en la nube!, y podemos visitar nuestra aplicacin 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 autorizacin.

19

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com
de publicacin 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.
Artculo por Toni

Recio y Gerard Lpez

Trabajando con el Storage de Windows Azure


Trabajamos con el servicio Storage de Windows Azure, que nos permite almacenar informacin a modo de
base de datos.
En el Manual de Windows Azure estamos tratando esta herramienta para la programacin 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 informacin, como si de una base de datos se
tratara. En este artculo, a modo de simple pincelada introductoria, veremos qu debemos hacer para que nuestro
pequeo ejemplo trabaje con datos utilizando con el Storage.
Listado 2. Entidad de metadatos (imgMetaData.cs)
inteusing
System;
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 librera Microsoft.WindowsAzure. StorageClient, que nos encapsular las llamadas va
REST para que nos resulte ms cmodo 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 agrupacin e identificacin 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 autorizacin.

20

Tu mejor ayuda para aprender a hacer webs


www.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 librera System.Data.Services. Client para poder compilar el cdigo.

Vamos ahora a crear la cadena de conexin, 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 veamos en la figura 2), y
en el apartado "Settings" aadimos el elemento DataConnectionString con valor UseDevelopmentStorage=true. A
continuacin, nos centraremos en el evento OnStart del rol Web. En l mapeamos la configuracin del servicio y nos
conectamos al Storage, para as poder crear el contenedor BLOB de imgenes y la tabla que contendr los metadatos.
Todo ello puede verse en el listado 4.
Listado 4. Evento OnStart en WebRole.cs
// Creamos la conexin con el servicio de Storage
CloudStorageAccount.SetConfigurationSettingPublisher(
(configName, configSetter) => {
configSetter(ConfigurationManager.ConnectionStrings[configName].ConnectionString);
});
var storageAccount = CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
// Creamos el contenedor BLOB para almacenar las imgenes
CloudBlobClient blobStorage = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobStorage.GetContainerReference("meteosat");
container.CreateIfNotExist();
// Configuramos el contenedor con acceso pblico
var permissions = container.GetPermissions();
permissions.PublicAccess = BlobContainerPublicAccessType.Container;
container.SetPermissions(permissions);
// Creamos la tabla para almacenar los metadatos
CloudTableClient.CreateTablesFromModel(typeof(imgMetaDataServiceContext),
storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials);

Por ltimo, nos queda implementar el evento Click del botn btnGuardar, cuyo cuerpo se muestra en el listado 5.
Listado 5. BtnGuardar_Click en Default.aspx.cs

// Inicializamos la cuenta de Storage


var storageAccount =
CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
// El nombre del contenedor no puede tener maysculas
string containerName = "meteosat";
// Almacenamos la imagen
CloudBlobClient 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 autorizacin.

21

Tu mejor ayuda para aprender a hacer webs


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

Con estos sencillos pasos, nuestra aplicacin 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 conexin 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 artculo veremos el SQL Azure que nos permite trabajar con almacenamiento relacional.
Artculo por Toni

Recio y Gerard Lpez

SQL Azure
Windows 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 computacin 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 conexin. Pese a que SQL Azure
cuenta con algunas limitaciones (ver tabla 2) con respecto a su versin tradicional, puede satisfacer plenamente las
necesidades de la mayora de los proyectos.

La curva de aprendizaje de SQL Azure es mnima, y podemos utilizar SQL Server Management Studio (SSMS) para su
administracin, mientras que nuestros desarrollos accedern a los datos mediante el mismo cdigo ADO.NET. Para
obtener los datos del servidor y poder realizar las conexiones pertinentes, debemos recurrir al portal de gestin 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 situacin, volvemos al apartado
"Database" del portal y en l seleccionamos la pestaa "Firewall Settings"; aadimos una nueva regla en el cortafuegos
indicando nuestra direccin 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 administracin como el propio SSMS. Para sortear este
ltimo escollo, cancelamos la ventana de conexin y pulsamos el botn "Nueva consulta". De nuevo se visualizar la
ventana de conexin, en la que pulsamos el botn "Opciones" e indicamos, en la pestaa "Propiedades de Conexin", 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 gestin 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 autorizacin.

22

Tu mejor ayuda para aprender a hacer webs


www.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 ms 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
informacin relacional, deberemos hacer uso de ms de un servidor de bases de datos. Pese a todo, en el pasado MIX de
Las Vegas se anunci, con disponibilidad inmediata, una nueva edicin de 50 Gb.

Un amplio horizonte de posibilidades


En la actualidad, Azure ya ofrece algunos otros interesantes servicios en produccin, adems de los que hemos
mencionado hasta ahora, as como otros servicios de momento disponibles en evaluacin:

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 implementacin del patrn Enterprise Service Bus
nos permite registrar y exponer servicios entre diferentes redes a travs 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 migracin de desarrollos existentes que hacen uso de recursos
locales (por ejemplo, archivos locales de configuracin). Cuenta con un lmite de 1 TB de informacin 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 tambin dispondremos de la
posibilidad de proveer nuestra informacin 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 conclusin ms importante que podemos extraer acerca del tema de este manual sobre Windows Azure es el empeo
que ha puesto Microsoft en no hacer traumtico el camino de nuestras aplicaciones hacia la nube, que en muchos casos
puede producirse con un simple cambio en la cadena de conexin. Por aadidura, nos ofrece una plataforma de
despliegue profesional asequible tanto para nuestro da a da como para los servicios destinados a ser los nuevos casos
de xito de la red; todo ello de una forma sencilla, y aislndonos de la problemtica de gestin de servidores y
comunicaciones. Y t? Cunto vas a tardar en subirte a la nube?
Artculo por Toni

Recio y Gerard Lpez

Windows Azure: www.desarrolloweb.com/manuales/windows-azure-dotnet.html


Los manuales de DesarrolloWeb.com tienen el copyright de sus autores. No reproducir sin autorizacin.

23

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com

Servicio de computacin: Windows Azure


Windows Azure es el servicio de computacin de la plataforma, donde disponemos de un entorno para
desplegar nuestras aplicaciones en la nube.
En este artculo profundizaremos algo ms 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 administracin, tanto de los servidores de pre
produccin como de produccin.
Nuestras aplicaciones sern alojadas en mquinas 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 tamaos de mquinas virtuales:

Tipo de apliaciones
En cuanto a las aplicaciones, podemos sealar 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 autorizacin.

24

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com

Por dnde empiezo?


En este artculo 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 ms informacin al respecto tenemos
disponible el siguiente enlace.
Hasta la versin 1.2 del SDK las versiones del IDE soportadas eran Visual Studio 2008 y 2010. Sin embargo, con la
ltima actualizacin del SDK a la versin 1.3, en la actualidad solamente est disponible para la versin 2010 de Visual
Studio y Visual Studio Express. Para descargar las herramientas necesarias tenemos dos opciones: Realizar la
instalacin travs de Windows Platform Installer o bien mediante la descarga directa.
Una vez instalado, iniciamos Visual Studio 2010 con privilegios de administrador. Iniciamos la creacin 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 botn
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 autorizacin.

25

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com

Como comentbamos 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 aadir a nuestro desarrollo:

ASP.NET Web Role: Aade un proyecto del tipo Web Application.


ASP.NET MVC 2 Web Role: Si bien a da de hoy ya podemos disfrutar de la versin 3 de ASP.NET MVC,
cuando se public la ltima versin del SDK la ltima versin corresponda con ASP.NET MVC 2.
WCF Service Web Role: Proyecto para crear servicios utilizando Windows Communication Foundation.
Worker Role: Plantilla que nos permite la creacin de aplicaciones que se ejecutan en segundo plano.
CGI Web Role: Este rol est pensado especficamente para aplicaciones de tipo FastCGI. El ejemplo por
excelencia es la creacin 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 autorizacin.

26

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com
Para este ejemplo utilizaremos la primera opcin. Si quisiramos modificar el nombre del proyecto podemos hacerlo a
travs del lpiz situado a la derecha de aquellos que estn agregados:

Pulsamos OK para aceptar el Web role seleccionado y que proceda a generar la solucin. 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 autorizacin.

27

Tu mejor ayuda para aprender a hacer webs


www.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 informacin
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 configuracin para ese rol en concreto:

La primera pestaa est destinada a una configuracin muy general del rol. En ella podemos establecer el nivel de
confianza que la plataforma va a utilizar para ejecutar la aplicacin (Ser importante tener Full trust si queremos
ejecutar cdigo no manejado como c++ por ejemplo), el nmero de instancias que queremos que sirvan nuestra
aplicacin, el tamao de la mquina virtual, el protocolo de inicio que vamos a utilizar para las peticiones y un ltimo
apartado para habilitar y almacenar las trazas para el diagnstico.
Nota: Siempre que aparezca la lnea UseDevelopmentStorage=true estamos especificando que queremos utilizar Storage Emulator para
el almacenamiento. Si este cdigo se subiera a la nube no presentara ningn error pero tampoco almacenara ninguna informacin.

El apartado Settings ser nuestro equivalente en la nube a la seccin appSettings del archivo de configuracin de la
aplicacin 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 seccin todas aquellas propiedades dinmicas 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 autorizacin.

28

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com
con nuestra aplicacin.

Local storage es un apartado donde podemos reservar directorios dentro de la instancia de la mquina virtual que se est
ejecutando. Este apartado puede ser muy eficaz para ser usado como cach, almacenamiento de archivos temporales,
etctera.
Para configurar un directorio elegiremos un nombre, el tamao mximo del espacio (el tamao mnimo 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, etctera.

El apartado de Certificates tiene como objetivo asociar aquellos certificados disponibles a travs de la plataforma. Un
ejemplo de uso para este apartado es registrar aquellos certificados que estarn asociados a las peticiones HTTPS.

Por ltimo, Virtual Network solamente se utilizar para aquellas aplicaciones que requieran conexin con servidores on
premise a travs de Windows Azure Connect.
Una vez que hemos repasado toda la configuracin disponible a travs de pestaas, podemos decir que
ServiceConfiguration.cscfg y ServiceDefiniton.csdef almacenan de manera conjunta la misma informacin mostrada en
los apartados anteriores en formato XML :-)
Por otro lado, dentro de la aplicacin web aparece un nuevo archivo llamado WebRole.cs. Este archivo es el punto de
entrada a la aplicacin donde frecuentemente podemos encontrar parmetros de configuracin iniciales.
Para este ejemplo, solamente vamos a modificar sutilmente el cdigo del Default.aspx , para mostrar el nombre del
servidor que est sirviendo esta pgina.
<%@ 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 autorizacin.

29

Tu mejor ayuda para aprender a hacer webs


www.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 aplicacin 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 prximos artculos.
Centrndonos en Compute Emulator, cuando arrancamos la aplicacin desde Visual Studio 2010 de forma automtica
ejecutar los dos entornos de simulacin. Para acceder a los mismos basta con pulsar sobre el siguiente icono de la barra
de tareas con el botn 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 autorizacin.

30

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com
En l visualizamos los desarrollos que estn siendo simulados. En este caso concreto vemos nuestra solucin
HelloCloud con el WebRole1 que creamos anteriormente. El crculo de color verde se trata de la instancia que tenemos
iniciada para nuestra aplicacin. En realidad estas instancias se tratan del nmero de mquinas 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.

Resumn
En este artculo hemos visto qu es necesitamos para crear una aplicacin apta para Windows Azure, cules son los
parmetros de configuracin existentes as como el entorno de emulacin de plataforma en local.
En el prximo artculo veremos cmo desplegar nuestra aplicacin en los data centers de Microsoft.
Artculo 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 artculo 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 tamao, 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 autorizacin.

31

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com

Estos contenedores pueden almacenar uno o ms 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 patrn en funcin de tres valores
fundamentales: storageAccount, container y blobName.
http://<storageAccount>.blob.core.windows.net/<container>/<blobName>

Por ejemplo, una URI vlida para uno de los archivos mostrados en la imagen anterior podra ser la siguiente:
http://mediastorage.blob.core.windows.net/pop/Fly.mp3

Para verlo con un ejemplo vamos a crear una aplicacin que almacene nuestras imgenes en un contenedor llamado
mypics. En primer lugar creamos un nuevo proyecto ASP.NET Web Application llamado Blobs.

Abrimos el archivo Default.aspx donde aadiremos el siguiente cdigo, que nos permitir seleccionar cualquier archivo
que queramos adjuntar, adems de visualizar los que ya han sido almacenados en el contenedor a travs 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 autorizacin.

32

Tu mejor ayuda para aprender a hacer webs


www.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 pgina 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 mostrarn los archivos ya
almacenados.
Antes de implementar la funcionalidad para los dos casos anteriores, debemos aadir 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 autorizacin.

33

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com
Como funcionalidad tendremos lo siguiente:
using
using
using
using

System;
System.Web.UI;
System.Web.UI.WebControls;
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 mtodo BindFiles, declarado ms 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 mtodos que se encargarn de la llamada a la API a travs del wrapper.
Si volvemos a fijarnos en el cdigo de la pgina Default.aspx, vemos que existe un mtodo enlazado al botn btnUpload
en su evento click. En l vamos a comprobar si el usuario aadi algn archivo y, de ser as, utilizaremos de nuevo
BlobService para incluir el mismo dentro de un blob. Una vez aadido, llamaremos de nuevo a BindFiles para refrescar
la informacin del grid.
Por ltimo, se ha declarado un ltimo mtodo 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 cdigo de BlobService, se ha creado una clase independiente con el objetivo de simplificar la lgica:
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 autorizacin.

34

Tu mejor ayuda para aprender a hacer webs


www.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 simulacin del storage que est alojado en el cloud. Esta simulacin
necesita ejecutar una aplicacin 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 artculo :-)
Una vez recuperada la cuenta, creamos un objeto del tipo CloudBlobClient el cual nos proporcionar los mtodos
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 autorizacin.

35

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com
El primer paso a seguir en cualquiera de las acciones, Aadir, eliminar, listar, etctera es recuperar el contenedor sobre
el que vamos a operar. Para ello, se ha creado un mtodo 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 relacin con el contenedor
trata del nivel de acceso que queramos asignarle. A da de hoy existen tres niveles de acceso:

Blob: La informacin de un blob dentro de un contenedor puede ser leda por un usuario annimo, pero la
informacin a nivel de contenedor no est disponible, es decir, no es posible listar los blobs dentro de un
contenedor.
Container: Acceso annimo donde los clientes pueden leer la informacin a nivel del contenedor y la
informacin de los blobs. Por otro lado, no es posible listar los contenedores dentro de un storage account de
forma annima.
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 travs del mtodo GetBlobReference. Lo que conseguimos con ello es bien lo que ser la direccin 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 mtodos disponibles para esta funcin:

En el caso de que necesitramos realizar la descarga de un blob, el proceso sera bastante similar, al igual que los
mtodos:

Por otro lado, para el caso de GetBlobs disponemos de un mtodo 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 mtodo DeleteBlob donde
basta con llamar al mtodo 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 autorizacin.

36

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com
Con esta implementacin estamos listos para poder listar, aadir y eliminar blobs en nuestro storage : Arrancamos la
aplicacin pulsando F5 para visualizar la siguiente imagen:

A medida que vayamos agregando imgenes, podremos ver el nombre del contenedor donde estn alojadas las mismas,
la Uri independiente de cada una y la su previsualizacin:

Del mismo modo, si queremos eliminar cualquiera de las imgenes aadidas 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 autorizacin.

37

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com
Una vez que estemos listos para dar el paso a produccin 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 autorizacin.

38

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com
Cuando el nuevo storage tenga como status Created, en el apartado de Properties tendremos todos los datos necesarios
para realizar la conexin desde nuestra aplicacin:

Respecto al cdigo, basta con modificar las siguientes lneas 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 lnea estamos definiendo la forma de obtener la configuracin de la Storage Account. En este caso le
indicamos que el nombre pasado como parmetro, 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 configuracin con el nombre PicStorage. Un ejemplo de cadena de
conexin podra 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 autorizacin.

39

Tu mejor ayuda para aprender a hacer webs


www.desarrolloweb.com
5y9kgetKmivdIsPkeZInuwgZ7yubskdQzjlHx5lcLxv5ZlkBfd5gD5ehKaX2VulwJOrG1MBQ=="/>
</connectionStrings>
Nota: AccountKey se corresponde con el campo Primary Access Key recuadrado en la imagen anterior.

Si ejecutamos de nuevo la aplicacin comprobamos que, al subir de nuevo nuestras imgenes, la URI de las mismas
vara, apuntando esta vez al storage en el cloud:

Conclusin
En este artculo hemos visto la forma de trabajar con los blobs del servicio Windows Azure Storage. Tambin hemos
comprobado que este servicio no debe estar relacionado necesariamente con una aplicacin del cloud sino que puede
utilizarse independientemente con otras aplicaciones on-premise, es decir, dentro de nuestras instalaciones.
Espero que haya sido de utilidad!
Artculo 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 autorizacin.

40

Das könnte Ihnen auch gefallen