IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

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

Le , par Idelways

48PARTAGES

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

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de Thorna
Membre éprouvé https://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]
1  0 
Avatar de stailer
Membre chevronné https://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 ?
0  0 
Avatar de tomlev
Rédacteur/Modérateur https://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)
0  0 
Avatar de Thorna
Membre éprouvé https://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]
0  0 
Avatar de stailer
Membre chevronné https://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 ?
0  0 
Avatar de shenron666
Expert confirmé https://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
0  0 
Avatar de stailer
Membre chevronné https://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.
0  0 
Avatar de tomlev
Rédacteur/Modérateur https://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
0  0