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 :

Remoting: Problème au niveau des events


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Points : 16
    Points
    16
    Par défaut Remoting: Problème au niveau des events
    Bonjour à tous,

    Essayer de créer un objet distant via le Remoting...je suis confronté à un problème au niveau du client. J'initialise la configuration via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     RemotingConfiguration.Configure("Client.Config");
    Lorsque je souhaite utiliser une instance de l'objet distant, je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ChatCoordinator chatCenter = new ChatCoordinator();
    Au niveau du fichier de config, en voici le contenu :
    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
    16
    17
    18
    19
     
    <configuration>
      <system.runtime.remoting>
        <application>
          <client>
            <wellknown
              type="ChatCoordinator, ChatCoordinator"
              url="http://localhost:8080/Chat"
              />
          </client>
     
          <channels>
            <channel ref="http"
                     port="0"
                     />
          </channels>
        </application>
      </system.runtime.remoting>
    </configuration>
    Apparement lorsque j'essaie d'instancier un objet de type ChatCoordinator

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ChatCoordinator chatCenter = new ChatCoordinator();
    chatCenter.Submission += new SubmissionEventHandler(chatCenter_Submission); //Ici il y a un prioblème
    L'exception levée est la suivante :
    Impossible de charger le fichier ou l'assembly 'ChatCoordinator' ou une de ses dépendances. Le fichier spécifié est introuvable.

    Pourtant j'ai :
    • Mise le fichier ChatCoordinator.dll cointenant la classe ChatCoordinateur au niveau du serveur
    • Mise le fichier ChatCoordinator.dll cointenant la classe ChatCoordinateur au niveau du client


    Au niveau de l'assembly ChatCoordinator :
    Voici son code :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Runtime.Remoting;
     
     
        [Serializable]
        public class SubmitEventArgs : EventArgs
        {
            private string _string = null;
            private string _alias = null;
     
            public SubmitEventArgs(string contribution, string contributor)
            {
                this._string = contribution;
                this._alias = contributor;
            }
     
            public string Contribution
            {
                get
                {
                    return this._string;
                }
            }
     
            public string Contributor
            {
                get
                {
                    return _alias;
                }
            }
        }
     
        public delegate void SubmissionEventHandler(object sender, SubmitEventArgs submitArgs);
     
     
        public class ChatCoordinator : MarshalByRefObject
        {
            public ChatCoordinator()
            {
                Console.WriteLine("ChatCoordinator créée. Instance :" + this.GetHashCode().ToString());
            }
     
            public override object InitializeLifetimeService()
            {
                return null;
            }
     
            public event SubmissionEventHandler Submission;
     
            public void Submit(string contribution, string contributor)
            {
                Console.WriteLine("{0} a écrit : {1}", contributor, contribution);
                SubmitEventArgs e = new SubmitEventArgs(contribution, contributor);
     
                if (Submission != null)
                {
                    Console.WriteLine("Diffusion en cours...");
                    Submission(this, e);
                }
            }
        }
    D'avance j'espère que vous pourrez m'aider...

    Amis du vendredi, Merci

  2. #2
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Il me semble avoir lu récemment dans ce même forum un post invitant à faire attention lors de l'utilisation d'event dans un cadre remoting. Qaund une classe A s'abonne à un event d'une classe B, B a une référence sur A. Donc le process (serveur) dans lequel tourne B doit connaître le type A, ce qui n'est peut être pas ton cas.

    Donc : un process client ne peut pas abonner une classe à lui à un event d'une classe partagée avec un serveur. Il faut ruser autrement pour que event et remoting fassent bon ménage. Google te renseignera mieux que moi
    ಠ_ಠ

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    Je reviens un petit peu à la charge...Pour tout ceux qui chercheraient une bonne ressource, j'ai trouvé un petit tutoriel sympa :
    http://www.codeproject.com/KB/IP/TwoWayRemoting.aspx

    En attendant, je suis confronté à un autre problème avec le remoting, c'est comment faire explicitement pour avoir plusieurs clients "écoutant" un même serveur sur une même machine...


    Enfin soit, je suis toujours à la recette secrète DotNet qui pourrait remplacer à l'identique l' exe activeX du VB6 qui permettait de mettre facilement un objet ainsi que ses events en partage sur la même machine et pour plusieurs processus distincts...sans que l'objet soit à chaque fois réinstancié pour chaque process...

    A bon entendeur, Merci

Discussions similaires

  1. [Eclipse CDT]problème au niveau des include
    Par snoop dans le forum Eclipse C & C++
    Réponses: 6
    Dernier message: 05/04/2009, 14h57
  2. [LDAP] Problème au niveau des accents une interface PHP
    Par Manuxy dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 30/04/2007, 11h16
  3. [phpMyAdmin] problème au niveau des heures avec phpMyAdmin
    Par arti2004 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 13/06/2006, 22h05
  4. [Client FTP][C++] Problème au niveau des commandes
    Par agent007se dans le forum Développement
    Réponses: 4
    Dernier message: 19/04/2006, 15h15
  5. [RCP] Problème au niveau des icones des executables
    Par albeau dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 23/03/2006, 16h24

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