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 :

Contacter un client en particulier


Sujet :

Windows Communication Foundation .NET

  1. #1
    Membre du Club Avatar de Takumi
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2009
    Messages : 163
    Points : 62
    Points
    62
    Par défaut Contacter un client en particulier
    Bonjour,

    Je développe une application utilisant WCF, pour être plus précis une application de tchat. Dedans chaque utilisateur dispose d'un pseudo unique et il quand un utilisateur envois un message tous le monde le reçois. Cependant je voulais par exemple pouvoir en plus de pouvoir envoyer un message à tous le monde, permettre d'envoyer un message à une personne en particulier.

    La liste des utilisateurs connecté est sauvegardé dans une collection static de mon service. Les objets dans cette collection est une classe User que j'ai crée. Ensuite j'avais configuré mon service de sorte qu'il y ai une instance par session utilisateur. Donc mon service dispose en private d'un attribut de type User (toujours ma classe) et à chaque fois qu'un utilisateur s'y connecte on garde ces informations le concernant pour l'instance qui lui a été crée.

    J'ai crée différent évènements dans mon service auquel chaque instance va venir s'abonner. Par exemple quand un utilisateur se connecte l'évènement est déclenché et ce qui aura pour conséquence de lancer un appel à chaque client étant abonné pour les notifier d'un nouvel arrivant.

    Tout ça pour en venir au fait que jusqu'à maintenant tous ce que je faisais concernait tous le monde. Un message est envoyé tous le monde le reçois par exemple. Donc pour pouvoir par exemple envoyer un message en privée il me faudrait trouver le destinataire concerné et appelé la méthode de réception des message que pour cette utilisateur.

    Si j'écris ce post c'est que j'aurais besoin de votre avis sur la manière dont je comptais procéder. Sachant que j'ai ma liste d'utilisateur connecté en static et donc disponible pour n'importe quelle instance du service, je pensais tous simplement remplacer ma collection d'User (défini de cette manière List<User>) par une collection des instances du services. Car chaque instance de mon service dispose d'information sur l'utilisateur, il me suffirait alors juste de parcourir la collection et quand je tombe sur le type utilise juste son instance pour envoyer le message. Pensez-vous que cela puisse être une bonne idée?

    Voila ce que donne mon service pour le moment:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession,ConcurrencyMode = ConcurrencyMode.Single)]
    public class ServiceChat : IServiceChat
    {
    private static List<User> UserList;
     
    private User Utilisateur;
     
    //suite et fin de la classe
    }
    En faite je me pose quelques questions quand à la mise en place de cette façon, car quand l'utilisateur va se connecter une instance du service va lui être crée donc stockée quelque part par le ServiceHost je suppose, mais je vais moi aussi le rajouter à ma collection static. Donc on aura deux instances du service. Je me pose des questions par exemple dans le cas des event, est-ce qu'elle risque donc de se déclencher deux fois? Est-si je détruit une des instances, est-ce que cela va détruire la connexion? Car quand l'utilisateur va vouloir se déconnecter je vais d'abord devoir retirer son instance de ma collection pour qu'il ne soit plus dans la liste des utilisateurs connectés.

    Je suis désolé si je semble pas clairs. Si du code peut vous aider à mieux m'aider et me conseiller je me ferais un plaisir de vous le donner.

    je vous remercie d'avance pour vos conseils.

  2. #2
    Membre du Club Avatar de Takumi
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2009
    Messages : 163
    Points : 62
    Points
    62
    Par défaut
    Bonsoir,

    Désolé de remonter le sujet mais je voulais donc savoir si quelqu'un avait un avis à me donner, un conseils (des?) pour que je puisse arriver à mes fins.

    Je vous remercie d'avance.

  3. #3
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    Tu peux mettre un filtre dans la méthode qui envoie le message (suite à l'évènement). Si le destinataire correspond à l'utilisateur associé à l'instance courante (variable privée user) alors tu envoies, sinon tu ne fais rien.

Discussions similaires

  1. [MCD] contact client via formulaire
    Par bsquare09 dans le forum Schéma
    Réponses: 13
    Dernier message: 14/11/2008, 00h00
  2. Socket client particulier
    Par NoT dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 21/03/2008, 15h41
  3. Réponses: 1
    Dernier message: 14/05/2007, 23h31
  4. Création client particulier ou entreprise
    Par goutbouyo dans le forum Access
    Réponses: 5
    Dernier message: 15/03/2007, 14h13
  5. Client/serveur particulier
    Par progfou dans le forum REBOL
    Réponses: 1
    Dernier message: 22/09/2005, 10h33

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