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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Dotnet Discussion :

.NET : vers une programmation parallèle plus simple avec deux nouvelles librairies


Sujet :

Dotnet

  1. #1
    Expert éminent sénior
    Avatar de Idelways
    Homme Profil pro
    Développeur Ruby on Rails / iOS
    Inscrit en
    juin 2010
    Messages
    1 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Ruby on Rails / iOS

    Informations forums :
    Inscription : juin 2010
    Messages : 1 374
    Points : 68 507
    Points
    68 507
    Par défaut .NET : vers une programmation parallèle plus simple avec deux nouvelles librairies
    .NET : vers une programmation parallèle plus simple
    Avec deux nouvelles librairies du framework de Microsoft



    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 ?

  2. #2
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    mars 2003
    Messages
    1 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2003
    Messages : 1 135
    Points : 2 160
    Points
    2 160
    Billets dans le blog
    3
    Par défaut
    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 ?
    .o0o__St@iLeR__oOo.

    Lead Developer

    ASP.NET MVC - MCP/MCSD ASP.NET
    PHP Zend Framework / PhalconPHP
    Cordova/Xamarin IOS/Android
    Kendo UI - ExtJS - JQwidgets
    SQL Server / MySQL

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2004
    Messages : 19 875
    Points : 39 710
    Points
    39 710
    Par défaut
    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 - Visualiser dans une fenêtre à part
    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)

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    décembre 2004
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2004
    Messages : 581
    Points : 1 092
    Points
    1 092
    Par défaut
    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]
    L'avis publié ci-dessus est mien et ne reflète pas obligatoirement celui de mon entreprise.

  5. #5
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    mars 2003
    Messages
    1 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2003
    Messages : 1 135
    Points : 2 160
    Points
    2 160
    Billets dans le blog
    3
    Par défaut
    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 ?
    .o0o__St@iLeR__oOo.

    Lead Developer

    ASP.NET MVC - MCP/MCSD ASP.NET
    PHP Zend Framework / PhalconPHP
    Cordova/Xamarin IOS/Android
    Kendo UI - ExtJS - JQwidgets
    SQL Server / MySQL

  6. #6
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    avril 2005
    Messages
    2 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : avril 2005
    Messages : 2 430
    Points : 4 859
    Points
    4 859
    Par défaut
    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
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    décembre 2004
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2004
    Messages : 581
    Points : 1 092
    Points
    1 092
    Par défaut
    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]
    L'avis publié ci-dessus est mien et ne reflète pas obligatoirement celui de mon entreprise.

  8. #8
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    mars 2003
    Messages
    1 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2003
    Messages : 1 135
    Points : 2 160
    Points
    2 160
    Billets dans le blog
    3
    Par défaut
    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.
    .o0o__St@iLeR__oOo.

    Lead Developer

    ASP.NET MVC - MCP/MCSD ASP.NET
    PHP Zend Framework / PhalconPHP
    Cordova/Xamarin IOS/Android
    Kendo UI - ExtJS - JQwidgets
    SQL Server / MySQL

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2004
    Messages : 19 875
    Points : 39 710
    Points
    39 710
    Par défaut
    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

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/05/2011, 11h35
  2. Envoyer une variable asp.net vers une page php
    Par SonnyFab dans le forum ASP.NET
    Réponses: 11
    Dernier message: 05/01/2011, 17h41
  3. Réponses: 3
    Dernier message: 04/02/2010, 15h28
  4. programme le plus simple du monde !
    Par dpie dans le forum C++
    Réponses: 5
    Dernier message: 02/12/2007, 18h15
  5. Réponses: 1
    Dernier message: 28/04/2006, 16h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo