Sto riscontrando un problema con una classe singleton che sto esponendo tramite remote. Nel mio server ho:Utilizzo di singleton in .Net Remoting
TcpChannel channel = new TcpChannel(Settings.Default.RemotingPort);
ChannelServices.RegisterChannel(channel, false);
RemotingConfiguration.RegisterWellKnownServiceType(
typeof(RemotableObject), "RemotableObject",
WellKnownObjectMode.Singleton);
RemotableObject è un oggetto Singleton che eredita MarshalByRefObject.
mio client si connette ad esso tramite:
remoteObject = (RemotableObject)Activator.GetObject(
typeof(RemotableObject),
string.Format("tcp://{0}:{1}/RemotableObject", serverIP, serverPort));
Tutto funziona alla grande per quanto riguarda la comunicazione remota va, ma quando accedo l'oggetto Singleton nel mio codice del server in questo modo:
int someValue = RemotableObject.Instance.SomeDynamicValue;
E ' accede a un'istanza diversa da quella dei client. Ho anche verificato che il costruttore privato in RemotableObject venga colpito due volte durante il debug.
Posso ottenere il comportamento desiderato se ottengo un'istanza di RemotableObject tramite remoting nel mio codice server, ma esiste un modo per accedere allo stesso oggetto dei miei client dal server senza il sovraccarico di servizi remoti?
Che ha funzionato perfettamente! Grazie per la risposta rapida! – Todd
Quale dovrebbe essere il valore di 'MesgURI'? Il mio canale tcp si chiama 'UsersTcp' e ho provato con quel nome e con uri:' tcp: // localhost: 5000/UserTcp' ed entrambi mi danno un errore di servizio non trovato. – moondaisy
Dovrebbe essere 'tcp: // [ServerName]: [PortNumber]/MesgUri' come in' tcp: // MYSERVERNAME: 5212/UsersTcp' –