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 :

Callback Contract avec un service WCF en single mode


Sujet :

Windows Communication Foundation .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut Callback Contract avec un service WCF en single mode
    Salut tlm

    J'ai mon service qui est configurer en Single mode comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    [ServiceBehavior(
            InstanceContextMode = InstanceContextMode.Single,
            ConcurrencyMode = ConcurrencyMode.Single
        )]
    Je connecte plusieurs clients a mon service ; comme faire pour que chacun des clients connecte recoivent le callback lorsqu il est declenche par l un des client.


    Par exemple

    Client 1 : Lance Start() -> Recois l evenement Started
    Client 2 : Recois l evenement Started
    Client 3 : Recois l evenement Started
    ...
    etc...

    Merci d avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Je ne sais pas ce que tu veux faire mais si c'est pour ne pas exécuter la fonction Start si au moins un des clients l'a exécutée alors l'idée suivante est la plus simple.

    Vu que tu as mis les propriétés InstanceContextMode à Single et ConcurrencyMode à Single cela veut dire qu'il n'y aura qu'une instance de service en cours d'exécution et que tous les clients devront attendre que la requête du client en cours d'exécution se termine pour pouvoir continuer. alors je te conseille de créer un champ booléen IsStarted que tu utiliseras comme suit dans le code de l'implémentation de ton contrat de service :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    private bool isStarted = false;
    public void Start() {
        if (this.isStarted) return;
     
        // Exécution normale de la fonction
     
     
        // On met la valeur à true pour spécifier que cette 
        // fonction a déjà été exécutée par un des clients. 
        this.isStarted = true; 
    }

  3. #3
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut
    Merci h2s84 !

    en fait, ce que je cherche a faire (service en single ou non) c est de creer un service qui s occupe d un/de traitement ; les clients doivent pouvoir demarrer le(s) traitement(s) et si ils sont connecte au service etre notifier des changement d 'etats (processus demarrer, arreter, erreur, etc....)

    Les clients connectes doivent pourvoir egalement recuperer diverses infos.

    merci

  4. #4
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Par défaut
    Je pense que l'exemple suivant devrais t'aider. Dans l'exemple de Chat lorsqu'un client envoie un message tous les autres sont prévenu avec le callback.
    http://badger.developpez.com/tutorie...atez-avec-WCF/

  5. #5
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut
    Citation Envoyé par meziantou Voir le message
    Je pense que l'exemple suivant devrais t'aider. Dans l'exemple de Chat lorsqu'un client envoie un message tous les autres sont prévenu avec le callback.
    http://badger.developpez.com/tutorie...atez-avec-WCF/
    Merci
    Justement je suis en train de l etudier !

    Mais dans cette exemple je ne comprend pas trop la notion de session .... 1 instance de la classe service par client ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Tu peux poser tes questions en rapport avec ce tuto ici et peut-être avec un peu de chance il te répondra. Sinon il y a MSDN pour appréhender au mieux la notion de session en WCF.

  7. #7
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Par défaut
    Citation Envoyé par Seth77 Voir le message
    Mais dans cette exemple je ne comprend pas trop la notion de session .... 1 instance de la classe service par client ?
    L'astuce vient des champs static (partagés par toutes les instances).

  8. #8
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut
    Citation Envoyé par meziantou Voir le message
    L'astuce vient des champs static (partagés par toutes les instances).
    Oui j avais compris l astuce des evenements static.

    Si j ai bien compris dans le cas du chat ; on a une instance par client et les evenements en static (chaque client se connecte a l evenement)

    En fait si l on veut que les clients "partage" des infos il faut les mettre en static ...

    pas une solution en ayant le service en "single" et partager tout de meme les evenements ?

Discussions similaires

  1. Probleme avec CallBack/Communication avec le service
    Par Seth77 dans le forum Windows Communication Foundation
    Réponses: 2
    Dernier message: 19/06/2012, 23h03
  2. Réponses: 6
    Dernier message: 04/08/2010, 15h21
  3. Réponses: 1
    Dernier message: 01/02/2010, 11h57
  4. [WCF]Service WCF avec Visual Studio 2008
    Par chiv dans le forum Windows Communication Foundation
    Réponses: 5
    Dernier message: 23/02/2008, 17h07
  5. [3.0] [Service Wcf] problème avec le fichier .svc
    Par marc_dd dans le forum Windows Communication Foundation
    Réponses: 1
    Dernier message: 14/08/2007, 17h21

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