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 :

Accès à l'interface avec WCF


Sujet :

Windows Communication Foundation .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 14
    Par défaut Accès à l'interface avec WCF
    Bonjour,

    Je suis nouveau sur ce forum et j'espère avoir posté dans la bonne section.
    Voici mon problème :
    J'ai 2 applications (WPF) l'une est cliente et l'autre serveur et communique actuellement avec WCF.
    Cela fonctionne très bien mais j'aimerais que du coté de mon serveur je puisse accéder à l'interface graphique (récupérer et écrire des valeurs dans les différents controles).

    Voici les pistes que j'ai déja exploré :
    1) Coté Server : une classe qui implémente l'interface serveur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Reentrant, InstanceContextMode = InstanceContextMode.PerSession, UseSynchronizationContext = false)]
      public class FxComServer : IServer
      {
     
        #region IServer Membres
        public string ContractOne(int val1, int val2)
        {
          return (val1 + val2).ToString();
        }
        #endregion
      }
    Je démarre alors mon service de la facon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public partial class Window2 : Window
    {
        public Window2()
        {
          InitializeComponent();
          //Instantiate new ServiceHost
          myServiceHost = new ServiceHost(typeof(Window2));  
     
          NetTcpBinding binding = new NetTcpBinding();
          ServiceEndpoint endPoint = myServiceHost.AddServiceEndpoint(typeof(IServer), binding, "net.tcp://localhost:4000");
     
          //Open myServiceHost
          myServiceHost.Open();
        }
    }
    --> Cela fonctionne mais évidemment ContractOne n'as pas accès au controle de Window2

    2) J'ai ensuite essayé que Window2 implémente directement IServer mais cela me génère une exception lors de l'appel du service :
    Le thread appelant doit être en mode STA, comme l'exigent de nombreux composants de l'interface utilisateur.
    Voilà j'espère avoir été assez clair sur mon problème.

    Merci d'avance aux personnes qui tenterons de m'aider.

  2. #2
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Le message me semble clair il faut tagger le thread appelant par en STA car il me semble(à vérifier) que par défaut c'est en MTA

  3. #3
    Expert confirmé
    Avatar de Webman
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 232
    Par défaut
    Bonjour,

    Soit je n'ai pas compris ton message soit il me semble que tu as un problème d'architecture de ton application avant tout. Me confirmes-tu que tu souhaites que ton service WCF accède à l'interface graphique de ton application serveur qui elle est une appli WPF ?

    Si tel est le cas je ne sais pas si c'est possible (et je ne souhaite pas le savoir ), mais surtout ce n'est pas souhaitable, en terme de best practices, de sécurité ou même à quelque point de vue que ce soit. Pour faire simple une application doit être autonome et directement gérer son interface graphique. C'est à ton application serveur de récupérer ces informations et de mettre à jour son interface elle même si nécessaire.

    N'hésites pas à nous donner des précisions et à m'indiquer si éventuellement je n'ai pas compris ce que tu souhaites faire.

    Bonne chance!

    Cordialement,
    Ronald
    Rédacteur .Net
    MVP C#
    Mes articles - CodeQuake (blog)
    Pas de question technique par MP, merci.

  4. #4
    Membre averti
    Inscrit en
    Septembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 14
    Par défaut
    Merci pour la tentative de réponse mais finalement il y a de forte chance pour que cette idée tombe à l’eau.

    Pour info voici le but premier :
    J'ai une application A (WPF avec architecture MVVM) et une application B (winform ou WPF). L'application B doit pouvoir demander des informations graphique à l'application A (exemple : valeur d'un control ou bien encore sa position) et doit pouvoir aussi agir sur la A (exemple : Setter la valeur d'un control). Il faut donc que B puis envoyer des demandes/commandes à A et recevoir des réponses (ces actions impactent directement l'interface graphique de A).

    J'espère avoir été plus clair et si vous avez des idées je suis toujours preneur.

  5. #5
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Beh chaque application doit être un service et un client wcf.

    Cependant l'application B ne modifiera jamais elle même les contrôles graphique. Plutôt elle appelera un service wcf de l'application B pour lui dire de le faire.

Discussions similaires

  1. Création de fichier et accès avec WCF
    Par PerpetualSnow dans le forum Windows Communication Foundation
    Réponses: 4
    Dernier message: 08/03/2009, 12h29
  2. Interfaces avec le même nom
    Par myuils dans le forum Langage
    Réponses: 2
    Dernier message: 09/11/2004, 18h18
  3. Piloter une interface avec des relais
    Par Yepazix dans le forum API, COM et SDKs
    Réponses: 13
    Dernier message: 26/10/2004, 19h46
  4. Accés multi utilisateurs avec fstab
    Par Sun3clipse dans le forum Administration système
    Réponses: 2
    Dernier message: 26/08/2004, 15h49
  5. Interfaces avec NetBeans
    Par messier79 dans le forum NetBeans
    Réponses: 3
    Dernier message: 26/04/2004, 15h55

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