.NET : vers une programmation parallèle plus simple
Avec deux nouvelles librairies du framework de Microsoft
Le 2011-05-18 11:35:47, par Idelways, Expert éminent sénior
De nouvelles librairies du framework .NET sont disponibles, destinées à faciliter la création de programmes modernes qui tirent profit de la puissance de calcul des différents cœurs des processeurs.
Ces librairies sont aussi vouées à adapter davantage la technologie de Microsoft aux nouvelles exigences de la programmation ayant émergé ces dernières années.
Des programmes en plus en plus connectés au monde qui les entoure, impliquant une utilisation accrue des WebServices et du Cloud Computing. Une exigence qui rend de plus en plus obsolètes les programmes classiques, qui stagnent durant les temps de latence générés par cette connectivité permanente.
La nouvelle approche introduite par la librairie Async se base donc sur la « programmation synchrone » qui adapte les programmes aux nouvelles exigences en matière de traitement des données.
Les programmes dominants aujourd'hui s'attendent à ce que les données soient déjà prêtes et leur quantité connue au préalable avant de les traiter, tandis que les programmes du futur doivent pouvoir gérer des variations importantes et traiter les données à la volée.
En pratique, Async introduit de nouveaux mots clés qui peuvent désigner qu'un bloc de code doit être exécuté en parallèle avec le reste du programme. « Await » indique par exemple que les autres parties du code ne doivent pas attendre les résultats d'une méthode ou d'un bloc de code marqué avec ce mot clé.
Async remplace donc à son installation le compilateur du framework avec une variante qui prend en charge ces nouveaux mots clés.
La deuxième nouvelle librairie dite Task Parallel Library Dataflow (TPL Dataflow) permet aux développeurs de répartir leurs programmes en de « Dataflow Blocks » qui agissent comme des « agents » ; un concept fondamental de la programmation parallèle.
Ces agents fonctionnent d'une manière synchrone et s'appellent mutuellement plusieurs fois, suivant des modèles prédéterminés, jusqu'à ce que chacun d’entre eux obtient les données qu'il requière.
Les Dataflow Blocks créent ainsi une sorte de « réseau de calcul » où les données transitent jusqu'à ce qu'elles soient entièrement et correctement traitées.
La programmation parallèle n'est pourtant pas inédite pour le framework DotNET. Sa version 4 intègre déjà pour mémoire notamment les outils APM (Asynchronous Programming Model) et Event-based Asynchronous Pattern (EAP).
Des modèles de programmation qui affichent cependant leur limites et augmentent considérablement la quantité de code à écrire.
Async et TPL Dataflow sont actuellement disponibles en versions CTP (Community Technology Preview) et seront intégrés d'office aux prochaines versions du framework .NET et de l'IDE Visual Studio 2010.
Seuls C# et Visual Basic sont pour l'instant supportés, mais Microsoft promet d'étendre le support de ces deux librairies aux autres langages de la CLR (Common Language Runtime).
Visual Studio Async CTP est disponible en téléchargement sur cette page
TPL DataFlow est disponible en téléchargement sur cette page
Et vous ?
Avez-vous essayé ces deux nouvelles librairies ?
Qu'en pensez-vous ?
Ces librairies sont aussi vouées à adapter davantage la technologie de Microsoft aux nouvelles exigences de la programmation ayant émergé ces dernières années.
Des programmes en plus en plus connectés au monde qui les entoure, impliquant une utilisation accrue des WebServices et du Cloud Computing. Une exigence qui rend de plus en plus obsolètes les programmes classiques, qui stagnent durant les temps de latence générés par cette connectivité permanente.
La nouvelle approche introduite par la librairie Async se base donc sur la « programmation synchrone » qui adapte les programmes aux nouvelles exigences en matière de traitement des données.
Les programmes dominants aujourd'hui s'attendent à ce que les données soient déjà prêtes et leur quantité connue au préalable avant de les traiter, tandis que les programmes du futur doivent pouvoir gérer des variations importantes et traiter les données à la volée.
En pratique, Async introduit de nouveaux mots clés qui peuvent désigner qu'un bloc de code doit être exécuté en parallèle avec le reste du programme. « Await » indique par exemple que les autres parties du code ne doivent pas attendre les résultats d'une méthode ou d'un bloc de code marqué avec ce mot clé.
Async remplace donc à son installation le compilateur du framework avec une variante qui prend en charge ces nouveaux mots clés.
La deuxième nouvelle librairie dite Task Parallel Library Dataflow (TPL Dataflow) permet aux développeurs de répartir leurs programmes en de « Dataflow Blocks » qui agissent comme des « agents » ; un concept fondamental de la programmation parallèle.
Ces agents fonctionnent d'une manière synchrone et s'appellent mutuellement plusieurs fois, suivant des modèles prédéterminés, jusqu'à ce que chacun d’entre eux obtient les données qu'il requière.
Les Dataflow Blocks créent ainsi une sorte de « réseau de calcul » où les données transitent jusqu'à ce qu'elles soient entièrement et correctement traitées.
La programmation parallèle n'est pourtant pas inédite pour le framework DotNET. Sa version 4 intègre déjà pour mémoire notamment les outils APM (Asynchronous Programming Model) et Event-based Asynchronous Pattern (EAP).
Des modèles de programmation qui affichent cependant leur limites et augmentent considérablement la quantité de code à écrire.
Async et TPL Dataflow sont actuellement disponibles en versions CTP (Community Technology Preview) et seront intégrés d'office aux prochaines versions du framework .NET et de l'IDE Visual Studio 2010.
Seuls C# et Visual Basic sont pour l'instant supportés, mais Microsoft promet d'étendre le support de ces deux librairies aux autres langages de la CLR (Common Language Runtime).
Et vous ?
-
ThornaMembre éprouvéBen euh... Je télécharge Async-CTP.exe, je l'exécute, et ensuite ?
Dans la page de téléchargement, ils disent :
- Compatible with non-English installations of Visual Studio and with Visual Studio Express.
- SP1 versions of Visual Studio 2010 Professional, Premium, Ultimate, or Express
[edit]Après moult recherches, j'ai trouvé où charger le SP1. Le truc qui trompe, c'est qu'il est unique pour les versions complètes et express. Ensuite, installer Async-CTP1.exe, ce qui prend un long moment, et enfin trouver la dll. Quand on pense que ça pourrait tout être dans Windows Update... Y' aplus qu'à tester ![/edit]le 31/05/2011 à 18:22 -
stailerMembre chevronnéEn pratique, Async introduit de nouveaux mots clés qui peuvent désigner qu'un bloc de code doit être exécuté en parallèle avec le reste du programme. « Await » indique par exemple que les autres parties du code ne doivent pas attendre les résultats d'une méthode ou d'un bloc de code marqué avec ce mot clé.
Ou alors des choses ont été rajoutées depuis la version précédente ?le 18/05/2011 à 11:58 -
tomlevRédacteur/ModérateurCe n'est pas vraiment nouveau, la première CTP est sortie fin octobre 2010...
Pour expliquer un peu plus clairement à ceux qui connaissent pas, ça permet d'écrire du code asynchrone quasiment de la même façon qu'on écrirait du code synchrone. En gros on peut faire des choses comme ça :Code : 1
2
3
4
5
6private async void DownloadText(string url) { var client = new WebClient(); string text = await client.DownloadStringTaskAsync(url); textBox1.Text = text; }
Pour plus de détails sur cette fonctionnalité, allez voir la série sur le blog d'Eric Lippert. Pour ceux qui sont pressés, allez voir directement cet article (vu que la série complète est assez longue, quoique très intéressante)le 18/05/2011 à 12:20 -
ThornaMembre éprouvéAh. J'avais testé déjà la première version avec mon Visual C# 2010 express, et ça ne donnait pas grand chose... Je vais me relancer dans le sujet, mais à votre avis, le support des versions Express est-il là ou non ?
[Edit]C'est confirmé, il suffit de lancer le truc : il faut le non-Express.
C'est de la discrimination ![/Edit]le 18/05/2011 à 17:31 -
stailerMembre chevronnéJ'ai pas compris ton message @Thorna ...
Pour utiliser Async/Await il suffit de mettre la dll dans tes références ce que fait bien sur VS Express.
Ou alors tu parles d'autre chose ?le 20/05/2011 à 14:23 -
shenron666Expert confirméA partir du moment où ce n'est pas dispo avec VS Express, difficile de se faire la main "légalement"
c'est déplorable
sinon un peu hors sujet :
Librarie (EN) = Bibliothèque (FR)
une librairie est une boutique où l'on achète des livresle 25/05/2011 à 10:25 -
stailerMembre chevronnéC'est exactement ce que j'allais te répondre : les dll sont dans le répertoire de l'installation, donc forcément sur ton PC.
Par contre concernant le SP1 je suis pas sûr.
Il me semblait à un moment donné ne pas avoir installé le SP1 sur mon VS2010 et pourtant j'utilisais bien cette DLL.le 02/06/2011 à 14:33 -
tomlevRédacteur/ModérateurCe n'est pas lié au SP1, Async CTP est sorti avant le SP1. Par contre il y a une nouvelle version qui est sortie après parce que la première n'était pas compatible avec le SP1le 02/06/2011 à 17:13