Wilfried Woivré & .Net

ZeCloud : Prochain Azure Camp le 22 novembre

NOVE5

ZeCloud, ça continue ! Après le dernier Azure Camp chez Microsoft, on remet ça même endroit, même planning ou presque  !

Donc si vous avez loupé les nombreuses annonces de la PDC, ou que vous vouliez simplement découvrir Azure, ou même continuer à travailler sur cette technologie, les Azure Camp sont fait pour vous !

 

L’Azure Camp aura lieu de 15h à 18h ( et au delà pour ceux qui veulent)
Thomas Conté Architecte Evangéliste sur la plateforme Windows Azure sera présent.

 

Le planning est donc le suivant :

15h : Conférence d’introduction: Présentation des nouveautés de la plateforme Azure

15h30 : Brainstorming entre les participants pour décider des projets.

16h à 18h : Coding Party : A la fin, le but est d’avoir un début d’application (ou une appli complète) qui compile et dont on peut faire une démo.

Après 18h: Ce sera l’occasion d’échanger entre les participants, autour de boissons fraiches.

Donc ne manquez pas cet Azure Camp ce sera  l’occasion de démarrer de nouveaux projets, et de partager les retours d’expériences des projets précédents. Et quelques surprises seront au rendez vous.

Un pc portable au minimum pour 2 personnes est requis avec les outils nécessaires pour développer sur Azure.

 

Pour rappel, lors de la dernière session, nous avons commencé l’application OuSuisJe que vous pouvez retrouver sur codeplex à laquelle vous pouvez participer à ce prochain Azure Camp , ou alors venir avec une nouvelle idée de projet!

 

L'adresse du Campus Microsoft :

39 quai du Président Roosevelt

92130 Issy les moulineaux France

Pour se rendre chez Microsoft c’est très simple, c’est juste à coté d’une gare de  RER, du tram et du métro, retrouvez toutes les informations pour vous y rendre sur leur site.

 

Pour s’inscrire un simple mail suffit à Azurecamp@zecloud.fr avec vos  nom et prénom, ou un message sur Twitter.

Remonter

Nouveautés C# 5 : Mots clef async et await

OCTO29

 

Et voilà, la PDC a débuté aujourd”hui même, c’est donc le moment de faire le plein de nouveautés, entre autre sur Windows Azure, mais on en reparlera dans un autre article sur ce blog, ou sur ZeCloud !!

Il y a bien entendu d’autres nouveautés, mais bon ça a commencé il y a juste 6h à l’heure où j’écris cet article, dont des nouveautés sur C# 5, et les méthodes asynchrones !!

 

Alors vu que du code en dit toujours plus long que des belles paroles, prenons l’exemple d’une méthode asynchrone classique :

public void BeforeAsync()
{
    var client = new WebClient();
    client.DownloadStringCompleted += (sender, e) => ParseRss(e.Result);
    client.DownloadStringAsync(new Uri("http://blog.woivre.fr?feed=rss2"));
}

 

Et on parse notre fichier XML de façon assez simple :

 

private void ParseRss(string rss)
{
    XDocument xdoc = XDocument.Parse(rss);

    var titles = from e in xdoc.Root.Descendants("item")
                 select e.Element("title").Value;

    foreach (String title in titles.Take(4))
        Console.WriteLine(title);
}

Voilà jusque là, c’est comme cela qu’on pouvait faire pour récupérer un flux RSS, bon certes si on ne connait pas SyndicationFeed ….

Cependant, comme toute chose à une fin, des nouveautés arrivent, et avec elle le mot clef async, qui va nous simplifier la syntaxe de notre appel en une simple ligne :

public async void WithAsync()
{
    ParseRss(await new WebClient().DownloadStringTaskAsync(new Uri("http://blog.woivre.fr?feed=rss2")));
}

Donc on peut voir en rouge (grâce à Visual Studio qui ne comprend encore rien) que l’on a ajouté deux mots clefs qui sont async et await. Pour faire simple, async va déclarer une méthode comme ayant un fonctionnement asynchrone, et le mot clef await va demander au programme d’attendre le retour de notre fonction avant d’effectuer la suite des opérations. On utilise de plus un DownloadStringTaskAsync à la place du DownloadStringAsync puis ce premier est fourni par le framework Async CTP, et permet de retourner un objet lorsque l’opération est terminée.

 

Alors vu que de toute façon, la vie ne se déroule pas sur un seul Thread, on peut jouer avec plusieurs Thread sans aucun soucis en utilisant le Parallel Framework et Async CTP:

public async void WithAsyncAndParallel()
{
    Task<string> blogWoivre = new WebClient().DownloadStringTaskAsync(new Uri("http://blog.woivre.fr?feed=rss2"));
    Task<string> blogZeCloud = new WebClient().DownloadStringTaskAsync(new Uri("http://www.zecloud.fr/syndication.axd"));

    ParseRss(await blogWoivre);
    ParseRss(await blogZeCloud);
}

 

Voici, donc le résultat final de l’application en ce qui concerne les données, on ne perd à priori aucun temps d’exécution, il faudra cependant tester sur un plus grand jeu de données que le simple flux Rss de ce blog

 

image

Et voilà, encore un peu de sucre syntaxique, mais c’est tellement bon de ne plus se prendre la tête sur ce genre de truc ! Bref ça surpoutre ^^

 

Quelques liens : Async CTP

Blog de Matthieu Mezil qui a posté avant moi, et dont j’ai honteusement piqué le nom des méthodes : http://blogs.developpeur.org/matthieu/archive/2010/10/28/async-et-await-l-asynchrone-avec-c-5-a-surm-gapoutre.aspx

Un peu de ressources anglo saxonne : http://blogs.msdn.com/b/ericlippert/archive/2010/10/28/asynchrony-in-c-5-part-one.aspx

Et les sources, bien entendu !!!

image

Remonter