2 Le futur de VB et l’asynchronisme [LAN101] 08/02 14h30 Patrice Lamarche GPI
3 Rappels Nouveautés VB10 Co-Evolution ! Continuation de ligne implicite Statements lambdas Propriétés auto-implémentées Initialisation de collections Variance des types génériques Runtime purity (SP1)
4 L’asynchronisme 2 types de traitements : Consommation CPU Consommation I/O
5 Les opérations synchrones I/O Windows I/O Dispatcher Driver NTFS Queue d’IRPs Le Thread est suspendu
6 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
7 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 ?
8 Les opérations asynchrones I/O Windows I/O Dispatcher Driver NTFS Queue d’IRPs ThreadPool Extraction des IRP Le Thread n’est pas suspendu
9 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
10 Pattern APM Asynchronous Programming Model Appel méthode BeginRead Mise en queue de la requête au Windows Device Driver BeginRead retourne l'IAsyncResult (comme un reçu de la demande) Lorsque l'opération est terminée, un thread du ThreadPool appelle le callback
11 Pattern EAP Event based Asynchronous 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
12 Démo Utilisation Pattern APM/EAP
13 Asynchronisme VB vNext Visual Studio Async CTP Nouvelles fonctionnalités Asynchronisme Itérateurs (Enfin !) Se base sur la TPL et sur la classe Task
14 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
15 Nouveau pattern basé sur les Task Task based asynchronous 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 !
16 Démo VB Async
17 Conclusion Développement asynchrone très simplifié Async et Await Utilisation de la Task Parallel Library Accessible pour tout type d’applications Même Silverlight
18 Questions ?
20 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