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 :

WCF + CallBack optionnel


Sujet :

C#

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut WCF + CallBack optionnel
    Bonjour,

    Je suis en train de faire un service WCF et j'utilise des CallBack pour informer le client (du service) de la progression des méthodes.

    Ça marche bien.

    Mais maintenant, je cherche une façon de rendre mon service aussi accessible sans CallBack (afin de ne pas imposer l'implémentation de l'interface de callback pour un client qui n'en aurait cure).

    Comment est-ce que je peux faire pour rendre le service compatible tantôt avec un client qui gère le callback, tantôt avec un client qui ne le gère pas ?

    Note : voici par exemple une ligne de code non "compatible" pour version "non callback"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    IServiceCallBack callback = OperationContext.Current.GetCallbackChannel<IServiceCallBack>();
    Merci.

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Bonjour

    Le plus simple est quand même d'exposer deux endpoint : un avec call back et l'autre sans, le tout appelant le même code.

    Ensuite, dans ton code, tu peux examiner les attributs du channel (? à vérfier) pour déterminer par quel endpoint tu es appelé (j'avais écrit un truc similaire il y a 3 ou 4 ans mais je n'ai pas le code sous la main - et ne pourrais pas l'avoir sous la main avant plusieurs jours, désolé).

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    Je suis assez nouveau dans le domaine et j'ai effectué plusieurs recherche pour comprendre comment faire une distinction entre les channel mais je n'ai pas trouvé (sauf faire un dégoûtant try catch, évidemment).

    Ce n'est pas urgent mais pressé quand même donc si quelqu'un d'autre voit à quoi Bluedeep fait allusion ou a une suggestion, merci d'avance.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Par défaut
    Si le client qui intègre ton API peut prendre la décision entre s'abonner à un callback ou non, il a tout autant la possibilité d'invoquer une méthode différente du même service ou d'un autre service.

    Faire de l'inspection de source de requête c'est une solution à un non-problème.

    Exemple: Amazon S3

    http://docs.amazonwebservices.com/sd...ferUtility.htm

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    Citation Envoyé par Babyneedle Voir le message
    Si le client qui intègre ton API peut prendre la décision entre s'abonner à un callback ou non, il a tout autant la possibilité d'invoquer une méthode différente du même service ou d'un autre service.

    Faire de l'inspection de source de requête c'est une solution à un non-problème.

    Exemple: Amazon S3

    http://docs.amazonwebservices.com/sd...ferUtility.htm
    Je ne veux pas créer intégralement plusieurs services similaires.
    J'aimerais n'écrire le code qu'une seule fois et avoir un mécanisme comme illustré par le pseudo code ci dessous :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var callbackType1 = si [compatible callbackType1] alors [channel callbackType1] sinon [objet défautCallBackType1]
    var callbackType2 = si [compatible callbackType2] alors [channel callbackType2] sinon [objet défautCallBackType2]
     
    callbackType1.méthode() // qui ne fait rien dans défautCallBackType1
    callbackType2.méthode() // qui ne fait rien dans défautCallBackType2

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    Bluedeep, avez-vous retrouvé le code ?

Discussions similaires

  1. Service WCF Paramètres Optionnels
    Par timlartiste dans le forum Services Web
    Réponses: 31
    Dernier message: 29/06/2011, 17h36
  2. WCF callback -- Silverlight
    Par micka132 dans le forum Windows Communication Foundation
    Réponses: 4
    Dernier message: 24/08/2010, 09h01
  3. [WCF] callback sur PDA
    Par ralf91 dans le forum Windows Mobile
    Réponses: 0
    Dernier message: 04/03/2010, 21h44
  4. [tuto Chatez avec WCF] probleme de callback en DuplexChannel
    Par giova_fr dans le forum Windows Communication Foundation
    Réponses: 4
    Dernier message: 12/01/2010, 15h43
  5. [WCF] Cherche solution pour reconnection sur Callback
    Par Bluedeep dans le forum Windows Communication Foundation
    Réponses: 1
    Dernier message: 11/01/2008, 09h41

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