200 likes | 295 Views
Le futur de VB et l’asynchronisme [LAN101] 08/02 14h30. Patrice Lamarche GPI http://patricelamarche.net http://www.twitter.com/PatriceVB http://www.facebook.com/patrice.lamarche. Rappels Nouveautés VB10. Co-Evolution ! Continuation de ligne implicite Statements lambdas
E N D
Le futur de VB et l’asynchronisme [LAN101]08/02 14h30 Patrice LamarcheGPI http://patricelamarche.net http://www.twitter.com/PatriceVB http://www.facebook.com/patrice.lamarche
Rappels Nouveautés VB10 • Co-Evolution ! • Continuation de ligne implicite • Statementslambdas • Propriétés auto-implémentées • Initialisation de collections • Variance des types génériques • Runtimepurity (SP1)
L’asynchronisme • 2 types de traitements : • Consommation CPU • Consommation I/O
Les opérations synchrones I/O .net Win32 User Mode Windows Kernel Mode Windows I/O Dispatcher Driver NTFS Queue d’IRPs Hardware Le Thread est suspendu
Inconvénients • Scénario : Application Web, chaque client créé une requête en db • Thread bloqué pour un temps indéfini • Si nouvelle requête durant le blocage • ThreadPool va créer un nouveau thread pour la requête, thread qui va se bloquer • => Beaucoup d’allocations • Quand les résultats arrivent, si beaucoup de threads, CPU overbooké, => Switches de contexte
L’asynchronisme • FileStream.Read() • Que se passe-t-il en cas de non réponse d’un fichier partagé présent sur un autre serveur ? Toujours préférer les versions asynchrones (ex : Silverlight)
Les opérations asynchrones I/O .net Win32 User Mode ThreadPool Extraction des IRP Windows Kernel Mode Windows I/O Dispatcher Driver NTFS Queue d’IRPs Hardware Le Thread n’est pas suspendu
Avantages • Potentiellement un seul thread du threadpool peut gérer toutes les requêtes • Peu d’allocation de ressources • Allocation de threads uniquement si les résultats arrivent plus vite qu’ils ne sont traités. • => Création d’un thread par CPU • => Pas de switch de context
Pattern APM • AsynchronousProgramming Model
Pattern EAP • Event basedAsynchronous Pattern • Créé par l’équipe Windows Forms • Avantages • Support de l’annulation et de la progression • Inconvénients • Peu utilisé • APM très majoritairement utilisé dans le fx.net • 17 classes seulement implémentent EAP • Principale utilisation : BackgroundWorker
Démo Utilisation Pattern APM/EAP
Asynchronisme VB vNext • Visual Studio Async CTP • http://bit.ly/VSAsyncCTP • Nouvelles fonctionnalités • Asynchronisme • Itérateurs (Enfin !) • Se base sur la TPL et sur la classe Task
VB Async CTP • 2 nouveaux mots-clés Async et Await • Async est un suffixe de méthode qui identifie une méthode asynchrone • Opérateur Await suspend l’exécution et permet la reprise de l’exécution du code appelant
Nouveau pattern basé sur les Task • Taskbasedasynchronous pattern (TAP) • Les méthodes Async renvoie une Task • Une tâche représente un travail à effectuer • Ne signifie pas forcément création de Thread !
Démo VB Async
Conclusion • Développement asynchrone très simplifié • Async et Await • Utilisation de la TaskParallel Library • Accessible pour tout type d’applications • Même Silverlight
MSDN et TechNet: l’essentiel des ressources techniques à portée de clic • Portail administration et infrastructure pour informaticiens • Portail de ressources technique pour développeurs http://technet.com http://msdn.com