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

Windows Communication Foundation .NET Discussion :

Amélioration d'une communication sur un réseau avec latence


Sujet :

Windows Communication Foundation .NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 36
    Points : 20
    Points
    20
    Par défaut Amélioration d'une communication sur un réseau avec latence
    Bonjour,
    j'ai développé un agent en WCF qui doit pouvoir envoyer par moments un nombre important de messages (100 par seconde) à un autre agent situé sur une machine distante.

    Je n'avais pas de problème lorsque la latence sur le réseau était très faible (1ms), mais depuis que l'on m'impose une latence de 75ms mon premier agent prend du retard à l'envoi des messages. J'ai cru comprendre que cela vient du protocole HTTP avec lequel je ne peux pas envoyer un second message tant que je n'ai pas reçu de ACK (code 202 HTTP) du premier. Cela conduit à un délai d'envoi des messages d'environ 150ms (2x75) par message! Donc je me retrouve avec des délais de plusieurs secondes au final.

    J'ai expérimenté les notions de One-Way, ConcurrencyMode.Multiple, et InstanceContextMode.PerCall sans succès visible.

    Voici mes questions:
    - Ai-je bien identifié mon problème (le fait que mon appli attende un ACK du premier message pour envoyer le suivant)
    - Pensez vous à une solution que je pourrai mettre en place?

    Merci par avance

  2. #2
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Points : 2 161
    Points
    2 161
    Par défaut
    salut,

    1/ même pour un jeu comme un FPS (un bon exemple d'application où le besoin en "réseau temps-réel" figure parmi les plus exigeants), envoyer 100 informations par secondes est très excessif. En règle générale, on ne dépasse guère les 20 ou 30 informations par seconde. Pourquoi veut tu en envoyer autant ?

    2/ pourquoi vouloir utiliser le protocole HTTP qui semble très peu adapté à ton besoin, plutôt que se baser par exemple sur une communication au moyen de sockets TCP 'de base' ?
    Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    Merci pour tes réponses,

    Citation Envoyé par nouknouk Voir le message
    salut,

    1/ même pour un jeu comme un FPS (un bon exemple d'application où le besoin en "réseau temps-réel" figure parmi les plus exigeants), envoyer 100 informations par secondes est très excessif. En règle générale, on ne dépasse guère les 20 ou 30 informations par seconde. Pourquoi veut tu en envoyer autant ?
    En fait je fais passer la position d'un objet sur une IHM à un autre site. Effectivement, si j'arrive à avoir 10 messages par seconde sans délai cela me conviendra très bien.

    Citation Envoyé par nouknouk Voir le message
    2/ pourquoi vouloir utiliser le protocole HTTP qui semble très peu adapté à ton besoin, plutôt que se baser par exemple sur une communication au moyen de sockets TCP 'de base' ?
    Je ne sais pas trop, c'est un projet que j'ai récupéré de l'un de mes collègues, quelle serait la marche à suivre pour faire cela au moyen de sockets TCP? N'y a t'il que le BasicHTTPBinding à changer?

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Points : 2 331
    Points
    2 331
    Par défaut
    Effectivement, miser sur des communications via le NetTCPBinding améliorerait les performances. Mais la communication se fait à travers Internet ? Le cas échéant il faudra router les ports je pense

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/12/2014, 18h01
  2. Changer le nom d'une table sur SQL server avec une requete
    Par Oluha dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 01/02/2014, 23h35
  3. Envoyer des objets sur le réseau avec une midlet
    Par asnaeb dans le forum Développement Mobile en Java
    Réponses: 3
    Dernier message: 26/08/2011, 19h40
  4. Précense d'une machine sur le réseau
    Par ArkAng3 dans le forum MFC
    Réponses: 11
    Dernier message: 09/05/2005, 10h07
  5. probleme d'acces a une machine sur un réseau
    Par zorian dans le forum Développement
    Réponses: 3
    Dernier message: 09/06/2004, 13h04

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