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

Services Web Discussion :

Gérer des erreurs de résaux lors de la réponse


Sujet :

Services Web

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    110
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 110
    Par défaut Gérer des erreurs de résaux lors de la réponse
    Bonjour,
    J'ai une question un peu idiote mais je trouve pas la réponse.
    J'ai un smart client qui envoie un message à un webservice (internet).
    Le webservice démarre un traitement qui est difficile à inverser et qui ne doit pas être répéter si il a été effectuer.
    le webservice va renvoyer une réponse pour confirmer qu'il a recu le message.
    Je m'inquiète de la situation où le webservice
    1> lance le traitement
    2> renvoie sa réponse positive
    3> la réponse s'évapore (par exemple erreur de réseau)

    Quel type de réponse va recevoir le client? j'imagine qu'il va y avoir un time-out qui va déclencher une exception, est ce bien le cas?

    Pour pouvoir donner une réponse satisfaisante à l'usager humain, je pensais résoudre le problème de la manière suivante:
    * le client appelle une métode Foo par remoting (géré par un framework)
    * Foo appelle le webservice qui se trouve être sur la meme machine ou au pire dans le même LAN (supprime les risques liés au réseau)
    * le webservice retourne à Foo qui met à jour un flagg en BDD pour montrer le succès.
    * Foo retourne un résultat au client.
    Si le client recoit une erreur (ou rien), il peut alors vérifier dans la BDD si l'opération a été menée avec succès ou si il peut réessayer et montrer à l'utilisateur un résultat juste.
    Cela semble-t-il raisonnable ou bien suis-je en train de régler un non-problème?

    Merci de toute réponse,

    Dom
    PS:
    Foo ne peut pas effectuer le traitement lui-même
    il n'est pas possible que le webservice devienne dépendant de la bdd mais aura certainement sa propre base de traitement effectués pour éviter la répétition d'un traitement.

  2. #2
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Si le Web service est définit de la sorte que la signature de la méthode Web retourne une valeur, alors ton cas ne peut pas se produire. Le serveur Web gére toutes pertes de données.

  3. #3
    Membre confirmé
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    110
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 110
    Par défaut
    Salut mehdi_tn,

    Merci de ta réponse. Je réagis tardivement du fait de mes vacances d'été

    Je ne suis pas sûr de comprendre ta réponse et je remarque que j'ai peut être mal exprimé mon cas.
    j'ai 3 prossesus:
    1. Le client A qui est une application winform appelle un webservice B via Internet (et attends donc la réponse de B)
    2. B démarre un autre processus C qui effectue un travail assez long et n'attends pas de réponse.
    3. B retourne une valeur à A
    4. A recoit la réponse de B


    Je ne m'inquiète pas trop des cas d'échecs aux points 1 et 2. Par contre j'ai un doute dans le cas où il y a une faute (de réseau a priori) entre les points 3 et 4 quand le point 3 est executé correctement (le travail est effectué). Un cas typique peut être que l'utilisateur démarre le traitement (depuis A donc) et perd sa connection (rentre dans un tunnel, ...).
    est ce que tu dis que ceci ne peux pas arriver?

    Dom

  4. #4
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Bonjour,

    Le client va attendre la réponse du serveur, pour n'importe quelle raison, si la réponse n'arrive pas après le temps définit dans la proprieté Timeout de ton proxy, une exception WebException va être levée.

    Dans ce cas, il faut gérer ce cas de figure dans ton bloc catch.

    Regarde ce lien : Improving Web Services Performance

  5. #5
    Membre confirmé
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    110
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 110
    Par défaut
    Bonjour mehdi_tn,
    Merci de ta réponse et des liens. Cela confirme ce que je pensais.
    Je vais donc faire l'appel au webservice "localement" depuis le LAN vu que dans mon cas présent je peux éviter de passer par internet. Je dois même pourvoir me passer de l'appel au WS si j'arrive à convaincre le collègue qui développe le web service de mettre la fonctionnalité dans un assembly à part.
    je suis quand même pas un client comme un autre!
    Dom

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [POO] Gérer les erreurs MySQL par des exceptions
    Par thepooh dans le forum Langage
    Réponses: 2
    Dernier message: 04/04/2008, 12h16
  2. [SQL] Gérer les erreurs des requêtes SQL
    Par eagleleader dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/10/2007, 14h28
  3. Réponses: 4
    Dernier message: 13/09/2006, 17h53
  4. Réponses: 3
    Dernier message: 14/06/2006, 13h55

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