Beruflich Dokumente
Kultur Dokumente
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.
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
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?
Torres Buitrago
Nota: Otra visin introductoria sobre cloud computing se puede ver en el artculo Qu es el cloud computing?
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.
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.
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.
Corts Flores
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.
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
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.
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
10
11
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
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
12
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
13
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.
14
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.
15
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.
16
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.
17
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.
18
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
19
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)
{
}
20
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
21
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
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
22
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.
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
23
Tipo de apliaciones
En cuanto a las aplicaciones, podemos sealar dos tipos bien diferenciados:
24
Seleccionamos Windows Azure Project y modificamos el nombre del proyecto a HelloCloud. Hacemos clic en el botn
OK para continuar con el asistente.
25
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:
26
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:
27
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
28
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>
29
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:
30
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
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.
31
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:
32
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.
33
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";
34
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.
35
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.
36
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.
37
38
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
39
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
40