.NET : vers une programmation parallèle plus simple
Avec deux nouvelles librairies du framework de Microsoft

Le , 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 ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de stailer stailer - Membre chevronné http://www.developpez.com
le 18/05/2011 à 11:58
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é.

C'est pas "tout nouveau ça". Async/Await existe déjà depuis quelques temps et j'utilise ces fonctionnalités depuis quelques semaines dans mes applications.

Ou alors des choses ont été rajoutées depuis la version précédente ?
Avatar de tomlev tomlev - Rédacteur/Modérateur http://www.developpez.com
le 18/05/2011 à 12:20
Citation Envoyé par Idelways  Voir le message
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.

Ce 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 : Sélectionner tout
1
2
3
4
5
6
private async void DownloadText(string url) 
{ 
    var client = new WebClient(); 
    string text = await client.DownloadStringTaskAsync(url); 
    textBox1.Text = text; 
}
Bien qu'écrit de façon "normale" (linéaire, comme un code synchrone classique), ce code ne bloque pas sur le téléchargement du texte : au niveau du await, la méthode DownloadText rend la main à la méthode appelante, pendant que le téléchargement s'exécute sur un nouveau thread. Quand le téléchargement se termine, la méthode DownloadText reprend où elle en était, sur le thread d'origine (par exemple le thread UI, ce qui permet de mettre à jour directement l'interface graphique)

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)
Avatar de Thorna Thorna - Membre éclairé http://www.developpez.com
le 18/05/2011 à 17:31
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]
Avatar de stailer stailer - Membre chevronné http://www.developpez.com
le 20/05/2011 à 14:23
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 ?
Avatar de shenron666 shenron666 - Expert confirmé http://www.developpez.com
le 25/05/2011 à 10:25
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 livres
Avatar de Thorna Thorna - Membre éclairé http://www.developpez.com
le 31/05/2011 à 18:22
Citation Envoyé par stailer  Voir le message
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 ?

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
Je ne vois aucune info comme quoi ma version Express est une SP1, ni comment éventuellement charger cette mise à jour que Windows Update ne me propose pas. Quant à la dll, ils disent qu'elle s'appelle AsyncCtpLibrary.dll mais ça n'existe sur aucun des disques de mon PC.

[edit]Après moult recherches, j'ai trouvé 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]
Avatar de stailer stailer - Membre chevronné http://www.developpez.com
le 02/06/2011 à 14:33
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.
Avatar de tomlev tomlev - Rédacteur/Modérateur http://www.developpez.com
le 02/06/2011 à 17:13
Ce 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 SP1
Offres d'emploi IT
Consultant testing expérimenté h/f
Sogeti France - Rhône Alpes - Lyon (69000)
Ingénieur d'études et développement logiciel C/ C++ H/F
Conserto - Ile de France - Paris (75000)
Administrateur réseaux & systèmes
Air Informatique - Aquitaine - Saint-Médard-en-Jalles (33160)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil