Le Post Infeeny

Les articles des consultants et experts Infeeny

Future directions for C# and Visual Basic

Message de Roch Baduel (Le 15-09-2011)

Une session dans une grande sale bourrée à craquer de monde… c’est l’effet Anders Hejlsberg.

Heureusement je suis arrivé en avance mais difficile de trouver un siège comme  même : on s’y attendait 😉

Quoi de neuf dans C# 5.0 et VB 11 ?

  • Le focus est sur Windows Runtime et la programmation asynchrone.
  • Règle dans l’api WinRT : si une opération dure plus de 50ms elle doit être asynchrone
  • à WinRT est asynchrone
  • Dans WinRT on utilise IAsynchronous<T> pour représenter les opérations asynchrone alors que .NET  c’est Task<T>
  • L’idée est d’être capable de transformer du code normal en multiple callback
  • async/await : vous connaissez certainement déjà mais voici l’explication :

Dans une méthode marquée async on peut utiliser await pour récupérer le résultat d’un appel asynchrone : le compilateur génère automatiquement une lambda expression pour le reste du code :
Ex :  private async MaMethode()
{
var resultat = await something.getAsyncResult() ;

  •  … faire quelque chose avec resultat sera transformer en lambda pour faire une callback

}
ça permet de composer des appels asynchrones

  • Anders fait une démo de chargement d’une collection de films en asynchrone 20 par 20
  • await  Task.WhenAll() permet d’attendre plusieurs taches asynchrones en même temps
  • Pour attendre une tâche qui s’exécute sur un thread en tâche de fond on peut utiliser :await Task.Run() sinon on reste dans le contexte du thread appelant

Anders passe maintenant à une démo C# et Javascript où C# sera appelé par Javascript :

  • Pour pouvoir interfacer la classe C# qui renvois une task dans une méthode async on utilise la méthode Create de la  classe AsyncFactory qui permet de créer un object IAsynchronous<T> à partir d’un objet Task<T>. On expose ensuite en public uniquement la méthode qui retourne un IAsynchronous<T>. Ceci est nécessaire car les objets WinRT utilisent IAsynchronous<T> et non Task<T>
  • La cloasse C# est également marquée sealed afin de pouvoir être exposée en tant qu’objet WinRT

« Caller Info Attribute » : il s’agit d’une fonctionnalité qui permet d’insérer des informations permettant de tracer des informations sur l’appellant (fichier, numéro de ligne, nom de la méthode).  Cette fonctionnalité est implémentée par les attributs :

CallerFilePath

CallerLineNumber

CallerMemberName

« Roslyn project » :  Vous connaissez certainement : il s’agit d’un ensemble complet d’api permettant d’accéder à tous les éléments du compilateur. Ce qui permet de faire des choses comme de la compilation à la volée, du refactoring, …

  • Annonce : ne CTP sera disponible dans 4 semaines !
  • Anders fait plusieurs démos de roslyn notamment de la compilation à la volée pendant l’execution
  • Anders montre aussi la fenêtre interactive de roslyn qui permet de taper du code le compiler à la volée et de l’exécuter : quelques démos bluffantes à regarder !
  • Il fait également une démo d’une extension pour faire du refactoring sur les propriétés pour implémenter InotifyPropertyChanged.
  • Il fait également une démo de copier C# / coller Visual Basic dans visual studio

 

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :