Bonjour,

C'est la première fois que j'utilise le service System.Runtime.Remoting.Channels.Ipc. J'ai deux executables, et je veux que l'executable A appelle une méthode de l'éxécutable B. Du coup j'ai codé un client IPC côté A et un server IPC côté B.

Côté server le bout de code qui "expose" l'objet ressemble à cela:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
            // Expose an object for remote calls.
            System.Runtime.Remoting.RemotingConfiguration.
                RegisterWellKnownServiceType(
                    typeof(RemoteObject), "RemoteObject.rem", 
                    System.Runtime.Remoting.WellKnownObjectMode.Singleton);
Et le remote object est le suivant:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
        // Remote object.
        public class RemoteObject : MarshalByRefObject
        {
            public void NewFile(int Id)
            {
                Console.WriteLine("NewFile has been called for Id {0}", Id);
            }
        }
Côté client, le bout de code qui "s'enregistre pour l'objet distant" est le suivant:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
            // Register as client for remote object.
            System.Runtime.Remoting.WellKnownClientTypeEntry remoteType =
                new System.Runtime.Remoting.WellKnownClientTypeEntry(
                    typeof(RemoteObject),
                    "ipc://localhost:9090/RemoteObject.rem");
            System.Runtime.Remoting.RemotingConfiguration.
                RegisterWellKnownClientType(remoteType);
Jusque là c'est très classique, cela vient de MSDN...

Le soucis c'est que je ne comprends pas pourquoi il faut que le client connaisse l'implémentation de l'objet qu'elle appelle. Donc je ne veux pas copier-coller dans mon client le même code que ce qui est côté server. Or si je ne mets pas aussi le code côté client, cela ne compile pas à cause de l'appel à WellKnownClientTypeEntry(typeof(RemoteObject),"ipc://localhost:9090/RemoteObject.rem");

J'ai l'impression que je devrais remplacer "WellKnownClientTypeEntry" par autre chose, mais je ne vois pas trop quoi...

J'espère être assez clair.