Skip to main content

Découverte par l'exemple d'une application Windows Azure

PIC_0189 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

PIC_0184

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:

PIC_0187

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

Popular posts from this blog

Learn Meteor book available

I'm pleased to announce the general release of my Learn Meteor book. It is now available as an ebook or print book from various sources: Learn Meteor print (paperback) on Lulu Learn Meteor ebook on LeanPub Learn Meteor ebook on Barnes & Noble Learn Meteor ebook on iBooks Learn Meteor ebook on Kobo Learn Meteor ebook on Scribd Learn Meteor ebook on Inktera Page Foundry Learn Meteor ebook on 24symbols Learn Meteor ebook on Amazon US Learn Meteor ebook on Amazon UK Learn Meteor ebook on Amazon France Learn Meteor ebook on Amazon Deutschland Learn Meteor ebook on Amazon Canada Learn Meteor ebook on Amazon India Learn Meteor ebook on Amazon Brasil Learn Meteor ebook on Amazon Mexico Learn Meteor ebook on Amazon España Learn Meteor ebook on Amazon Italia Learn Meteor ebook on Amazon Netherlands Learn Meteor ebook on Amazon Japan Learn Meteor ebook on Amazon Australia More sources are coming soon for the print version. Learn Meteor has been a fun experienc