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:
Et le remote object est le suivant:
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);
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
8 // Remote object. public class RemoteObject : MarshalByRefObject { public void NewFile(int Id) { Console.WriteLine("NewFile has been called for Id {0}", Id); } }
Jusque là c'est très classique, cela vient de MSDN...
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);
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.
Partager