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 :

[WCF] Récupération de l'instance du service coté serveur


Sujet :

Windows Communication Foundation .NET

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 266
    Points : 135
    Points
    135
    Par défaut [WCF] Récupération de l'instance du service coté serveur
    Bonjour.

    Je travail actuellement sur un projet mettant en place WCF.

    Ma question est :

    Comment puis je récupéréer l'instance du service coté server sans devoir passer par un singleton ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ServiceHost host = new ServiceHost(typeof(Services.Service));
     
    //Ouverture du serveur
    host.Open();
     
    Services.Service service = (Services.Service)host.SingletonInstance;
    Voilà j'aimerais faire un truc comme ca. Dans mon exemple cela ne marche pas car SingleInstance marche cela si je donn une instance a mon serveur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    Services.Service monService = new Services.Service();
    ServiceHost host = new ServiceHost(monService );
     
    //Ouverture du serveur
    host.Open();
     
    Services.Service service = (Services.Service)host.SingletonInstance;
    Mais dans ce cas je me retrouve avec un singleton et tout mes client auront le meme service. je souhaite pouvoir passé un typeof a mon serveur mais récuperer l'instance propre a chaque client.

    Merci

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Bon alors, ce que moi j'ai compris, c'est que quand tu passes un type au constructeur de ServiceHost, tu ne peux pas utiliser SingletonInstance, et que quand tu passes une instance de classe au constructeur de ServiceHost, tu peux alors utiliser la propriété SingletonInstance.

    Et toi, tu voudrais pouvoir utiliser le constructeur qui prend un type en paramètre et en même temps pouvoir utiliser la propriété SingletonInstance ? C'est bien ça ?

    Alors je pense à un méthode 'wrapper' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    private Object _instance;
    private ServiceHost _host;
     
    public Services.Service GetInstance(Type serviceType)
    {
        if (null == _instance)
        {
            _instance = Activator.CreateInstance(serviceType);
            _host = new ServiceHost(instance);
            _host.Open();
        }
     
        return _host.SingletonInstance;
    }
    EDIT : Tu peux ensuite gérer plusieurs types avec une Hashtable qui contient le type comme clé et les instances de servicehost et service comme valeurs.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Salut .

    Avec WCF tu peux publier une instance spécifique d'une classe.
    Si connais le nombre de client ou si tu a un moyen d'interposer une routine dans la connexion (par exemple si tu as un process d'identification ) tu peux faire ça comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Services.Service monService = new Services.Service();
    ServiceHost host = new ServiceHost(monService);
     
    //Ouverture du serveur
    host.Open();
    Sinon tu peux jeter un d'oeil à cette video du DUG
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

Discussions similaires

  1. Récupération de fichiers avec un service web
    Par Fantacassis dans le forum Services Web
    Réponses: 5
    Dernier message: 24/09/2008, 15h38
  2. Debugguer Service Web Coté Serveur ?
    Par zaphibel dans le forum Services Web
    Réponses: 5
    Dernier message: 19/11/2007, 13h21
  3. [WCF] Récupération du type de Binding
    Par NicolasR dans le forum Windows Communication Foundation
    Réponses: 1
    Dernier message: 14/02/2007, 17h36
  4. Multiple instance de service Windows
    Par zubov dans le forum Windows Forms
    Réponses: 1
    Dernier message: 30/01/2007, 09h22
  5. Réponses: 2
    Dernier message: 08/12/2006, 14h38

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