Par Pierre Lagarde et David Rousset, relations techniques avec les développeurs.
Nous allons voir comment faire une applications Web qui permet de déposer des photos.
Pourquoi le nuage?
Il s'agit d'une plateforme d'hébergement d'applications. Microsoft prend en charge le coût d'infrastructure et on ne paie que l'utilisation. Cela permet notamment de faire face aux pics d'utilisation simplement.
Avantages:
- réduire les coûts d'investissement et opérationnels
- simplification de l'administration et du déploiement des applications
- souplesse et simplification de la montée en charge
La plateforme de services Azure
On peut héberger tout ou partie d'une application dans le nuage Azure. Je peux par exemple conserver chez moi la partie qui gère les données sensibles.
- Services: environnement d'exécution, analogue à un services Windows
- Compute
- Storage
- Management
Démo d'une application complète
Architecture de l'application:
StorageClient est un projet du SDK qui permet de simplifier l'accès par code aux services d'Azure.
Etapes à suivre (le code source sera publié par Pierre Lagarde mais en utilisant le modèle MVC d'ASP.NET):
- Ajout d'un projet Web+Worker nommé "Keynote service". Cela crée un projet référençant deux projets classiques dont l'un Web, ce qui permet d'intégrer une application Web existante.
- Ajout d'un fichier "Web Form", AddImage.aspx. C'est de l'ASP.NET standard.
- Ajout de contrôles FileUpload et Button à la page AddImage.aspx. Dans le CodeBehind, pour stocker les photos on utilise Azure. On référence le projet StrorageClient.
- Déclaration de variables BlobContainer et StorageAccountContainer, que l'on obtient avec des méthodes GetXXX et BlobStorage.Create. Le fichier de configuration ServiceDefinition.csdef permet de configurer les storages.
- Transformation du Stream du FileUpload en blob.
- Astuce: un projet CodePlex AzureStorageExplorer permet de retrouver les fichier placés sur le service de stockage durant le développement.
- Ajout d'un handler ViewImage.ashx. Dedans on ouvre le blob avec StorageAccountInfo et BlobStorage.Create. Cela permet de récupérer une image d'après son nom de fichier.
- Astuce: penser à redéployer dans la DevFabric après une modification. Il ne suffit pas de recompiler.
- Pour manipuler les données qui sont dans une table, il y a un provider LINQ. Il suffit alors d'hériter de TableStorageEntity avec une classe pour que les propriétés de l'objet dans la table soient découvertes et mappées sur notre classe!
Partie 2: création du service de création des vignettes
- Le WorkerRole est analogue à un service Windows, et il a notamment des méthodes Start et Stop.
- On utilise les mêmes classes StorageAccountInfo et BlobStorage.Create pour récupérer les images dans les tables.
- Astuce: ajouter des traces avec RoleManager.WriteToLog, ce qui simplifiera le déboguage après déploiement.
- On crée une boucle infinie qui attend avec Thread.Sleep et traite des messages: queueThumbnail.GetMessage(). On n'a pas à se poser de questions de synchronisation pour le traitement des messages, c'est fait par Azure.
- Astuce: en hébergement Azure, on est plus proche du "Medium trust" que du "Full trust". Faire attention aux permissions utilisées. Il s'agit d'Azure trust.
- Pour la génération du thumbnail de l'image, on utilise les classes du Framework .NET classique, puis on repousse l'image sur la table.
- On supprime alors le message de la queue avec DeleteMessage.
- Astuce: plutôt qie F5, il vaut mieux faire Ctrl-F5 pour ne pas créer une DevFabric à chaque fois. Mais il faut du coup penser à arrêter la DevFabric quand on a fini.
- Dans la page Web, on ajout un message (méthode PushMessage) pour informer le WorkerRole qu'une image doit être traitée.
- Astuce: lors du déploiement, les tables n'existent pas dans Azure. Il suffit d'appeler CreateSchema pour qu'elles soient créées.
SDKs et disponibilité des services
Il faut récupérer un "token". C'était très compliqué à faire. Le token est lié au Live ID. Il faut demander à Microsoft un token, et on passe en file d'attente. Sur Azure ça va assez vite, sur Mesh ça prend du temps.
SLA et pricing ne sont pas encore disponibles. Ils seront probablement annoncés au Mix à Las Vegas.
Pour aller plus loin, si vous cherchez un tutorial étape par étape pour la création d'une application Azure simple, allez voir ce billet de David Rousset.
Comments