Sie sind auf Seite 1von 51

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 on-premise, es decir, en las instalaciones del cliente. Como ventaja
principal el cliente disfruta de una nube de su propiedad donde l es el nico que reside en ella,
aunque los gastos de mantenimiento corren a cuenta del propietario.
Nubes 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 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.







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. Po 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.
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.



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.

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 auto-replicacin 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.

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.
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.
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 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 junt os 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.

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.


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 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.









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.

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 virt uales 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.
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.


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.

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.



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 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 especif icamos 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.

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 de publicacion
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.




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)
{
}
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.Credentia ls);
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
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.
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 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?

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.
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:

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.

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.
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:

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 petic iones 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 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>
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:

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.


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. 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:
<%@ 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
Como funcionalidad tendremos lo siguiente:
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using Blobs.WindowsAzureServices;

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

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

BindFiles();
}
}

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

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

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

BindFiles();

}
}
}
En el Page_Load vamos a lanzar el 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";

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.
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.
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.
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:

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
=lCjRbkXc4KNwhy5y9kgetKmivdIsPkeZInuwgZ7yubskdQzjlHx5lcLxv5ZlkBfd5gD5ehKaX2
VulwJOrG1MBQ=="/>
</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!

Das könnte Ihnen auch gefallen