Aquí vamos a detallar la arquitectura que plantemos para resolver los requerimientos de la aplicación.
Breve descripción de la aplicación
- Su funcionalidad principal es proveer un calendario de eventos
- Crear una comunidad en la que se pueda estar actualizado de los eventos y que permita la interacción de los usuarios mediante: comentarios, fotos, videos, entre otros.
- Ofrecer información detallada de los eventos
- Permitir búsquedas
Servicios de Windows Azure
Los servicios de Windows Azure que vamos a utilizar son:
- Compute
- Storage
- AppFabric Access Control
Detallando la arquitectura
Autenticación:
El usuario solicita un token al ACS. Luego el ACS verifica que sea un usuario válido, y le devuelve un security token. Finalmente el web role verifica que el security token que le llega sea válido.
Almacenar eventos:
Un Evento está compuesto por:
- Artista
- Lugar
- Fecha
- Descripción
- Contador de visitas (Para listar los eventos más consultados, más adelante hablaremos más en detalle)
El web role almacena el evento en la tabla, y manda un mensaje al worker role mediante una cola de mensajes. El worker role se encarga de publicar el evento en Twitter.
Baja y Modificación de eventos:
Cuando se da de baja o modifica un evento, el web role se comunica con el storage.
Listar eventos más consultados:
Cada vez que un evento es visto, el web role encola un mensaje indicando se debe incrementar el contador de ese evento. El worker role toma cierta cantidad de mensajes de la tabla y recién actualiza el contador. Cuando se utiliza cloud, se supone que la aplicación va a ser accedida por muchos usuarios, por eso no es recomendable actualizar cada vez la variable.
Publicar comentario:
Un comentario está compuesto por:
- Mensaje
- Usuario
- Url de la foto
- Url del thumbnail
Cuando un usuario publica un nuevo comentario, el web role carga la imagen al blob y crea una entrada en la tabla. También manda un mensaje al worker role a través de la cola. Luego el worker role se encarga de generar thumbnails, actualiza la tabla y guarda el thumbnail en el blob.
No hay comentarios:
Publicar un comentario