Le futur de VB et l'asynchronisme

20

Transcript of Le futur de VB et l'asynchronisme

2

Le futur de VB et l’asynchronisme [LAN101]08/02 14h30Patrice LamarcheGPIhttp://patricelamarche.nethttp://www.twitter.com/PatriceVBhttp://www.facebook.com/patrice.lamarche

3

Rappels Nouveautés VB10

Co-Evolution !Continuation de ligne impliciteStatements lambdasPropriétés auto-implémentéesInitialisation de collectionsVariance des types génériquesRuntime 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

.net

Win32 User Mode

Windows Kernel Mode

HardwareLe 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 ?

Toujours préférer les versions asynchrones

(ex : Silverlight)

8

Les opérations asynchrones I/O

Windows I/O Dispatcher

.net

Win32 User Mode

Windows Kernel Mode

Hardware Driver NTFS

Queue d’IRPs

ThreadPoolExtraction 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émoUtilisation Pattern APM/EAP

13

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

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émoVB 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

http://technet.com http://msdn.com

Portail administration et infrastructure pour informaticiens

Portail de ressources technique pour développeurs