Salve a tutti,
ho letto un tutorial su net remoting e poi ho realizzato una piccola applicazione chat per mettere in pratica il tutto.
Ho cominciato creando la versione
server dell'applicazione che contiene questo codice:
TcpChannel channel = new TcpChannel(12345);
ChannelServices.RegisterChannel(channel);
RemotingConfiguration.RegisterWellKnownServiceType(
typeof(myclass),
"mymethod",
WellKnownObjectMode.Singleton );
poi ho creato la versione
client
TcpChannel chan = new TcpChannel();
ChannelServices.RegisterChannel(chan);
obj = (myclass) Activator.GetObject(
typeof(myclass),
"tcp://localhost:12345/mymethod" );
ho lanciato entrambe le versioni dell'applicazione e tutto funziona bene sia in locale che in LAN. Il client riesce ad usare il metodo mymethod esposto dal server.
Come passo successivo ho voluto provare a fare in modo che uno stesso eseguibile si comporti sia da server che da client.
InstanceA invoca mymethod di InstanceB
InstanceB invoca mymethod di InstanceA
ma purtroppo non funziona. Ho semplicemente unito i due pezzi di codice di cui sopra in un'unico eseguibile e poi nonappena lancio la prima istanza dell'applicazione ricevo un errore nella riga in grassetto. Sembra che non mi lasci registrare un canale Client dopo aver registrato quello server.
TcpChannel channel = new TcpChannel(12345);
ChannelServices.RegisterChannel(channel);
RemotingConfiguration.RegisterWellKnownServiceType(
typeof(myclass),
"mymethod",
WellKnownObjectMode.Singleton );
TcpChannel chan = new TcpChannel();
<b>ChannelServices.RegisterChannel(chan);</b>
obj = (myclass) Activator.GetObject(
typeof(myclass),
"tcp://localhost:12345/mymethod" );
Il debugger mi dice semplicemente: "Application has generated an exception that could not be handled".
Che potrebbe essere? Sto sbagliando approccio?
Grazie