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

C# Discussion :

Comment bien utiliser un serveur asynchrone dans une application


Sujet :

C#

  1. #1
    Membre actif Avatar de Masmeta
    Homme Profil pro
    Ing. R&D informatique industrielle
    Inscrit en
    Mai 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ing. R&D informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 472
    Points : 221
    Points
    221
    Par défaut Comment bien utiliser un serveur asynchrone dans une application
    Bonjour à tous.

    Je suis à la recherche de la meilleur façon d'avoir une architecture logiciel qui utilise un serveur asynchrone.
    Le but du logiciel est de récupérer par Ethernet des données. A la réception des données je dois les traiter en les sauvegardant dans un base de données, et suivant le type string le transférer via une liaison série. Et pour finir je dois mettre à jour l'IHM.
    J'ai créé un application WPF avec le modèle MVVM. J'ai réalisé mon serveur TCP/IP asynchrone. Par contre je ne sais pas comment ensuite faire la liaison pour le traitement des données.
    Je me complique peut être la vie mais je pensais faire :
    • un thread principal pour l'affichage de l'IHM.
    • un thread secondaire qui gère le traitement de données et gère le serveur.

    Je pense utiliser pour l'échange d'information entre le serveur et le thread secondaire, une collection de type BlockingCollection<T> pour prendre le modèle producteur/consommateur. Est ce que c'est une bonne idée?
    Pour permettre le rafraichissement, je pense utiliser un timer dans le MainViewModel. Est ce que c'est une bonne idée?
    Est ce qu'il y a une meilleur architecture à réaliser?

    Je vous remercie de votre participation.
    Cdl
    "Nulla Tenaci Invia Est Via"
    Aux persévérants aucune route n'est interdite

  2. #2
    Expert confirmé
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 4 062
    Points
    4 062
    Par défaut
    Pour le threading le thread principal de ton processus devient généralement le thread UI en lançant la pompe à messages (comportement par défaut).
    Créer un nouveau thread secondaire (pense bien à le mettre en background) pour la réception des données est la bonne approche.

    Pour la suite tout dépend de ton flux de données :
    - s'il est modéré alors tu peux tout simplement pusher un traitement dans la queue du Dispatcher du thread UI via Dispatcher.BeginInvoke(...).
    - s'il est important alors tu risques de saturer ton thread UI avec des MAJ intempestives sans doute inutiles puisque l'utilisateur ne verra pas la différence.
    Donc là utiliser un timer (un DispatcherTimer pour être exact) qui permet de throttle le taux de rafraichissement à un niveau convenu est aussi une bonne idée.

    Pour assurer le transfert des données tu peux utiliser une ConcurrentQueue qui a une méthode non bloquante TryDequeue() pour ne pas freezer ton thread UI.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

Discussions similaires

  1. Traitement asynchrone dans une application serveur
    Par ZouBi dans le forum Développement Web en Java
    Réponses: 10
    Dernier message: 03/11/2012, 09h59
  2. Réponses: 3
    Dernier message: 18/09/2007, 14h54
  3. Réponses: 3
    Dernier message: 29/05/2007, 20h37
  4. Réponses: 1
    Dernier message: 05/10/2006, 17h21
  5. Utilisation des fichiers CSS dans une application Struts
    Par menzlitsh dans le forum Struts 1
    Réponses: 4
    Dernier message: 22/09/2006, 16h29

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