Registrare l'oggetto _instances_ anziché _types_ con il servizio remoto .NET?
Domanda
C'è qualcosa che non capisco sul remoting .NET. Bene, due cose in realtà:
-
Perché l'enfasi è di nuovo sulle classi che ereditano da MarshalByRef invece che sulle interfacce nello stile COM originale (che mi è piaciuto)?
-
Perché il remoting .NET ti costringe sempre a creare effettivamente una sorta di pool di oggetti invece di consentire di associare istanze specifiche a un URL?
Codice server:
RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemotingTypes.Server), "MyURL", WellKnownObjectMode.Singleton);
Codice client:
RemotingTypes.Server myInstance = new RemotingTypes.Server();
Ma supponiamo di voler creare il " Server " istanza me stesso e poi semplicemente associarlo a un endpoint?
<*>E adesso? Come posso associare " myInstance " con l'URL " MyURL " ?
Soluzione
Il problema con la risposta di Nickd: volevo sapere come associare un'istanza già creata a un URL, piuttosto che come ottenere un servizio remoto .NET per fare questo per me (alcune istanze che ho creato che non hanno un valore predefinito costruttore, ad esempio).
Speravo che ci sarebbe stata una risposta epica che spiegava la "filosofia" dietro .NET remoting e perché è indissolubilmente accoppiato al sistema di tipi ...
Quello che ho concluso invece è semplicemente che: a) È perché il remoting .NET fa schifo. Non usarlo b) Utilizzare WCF invece
Altri suggerimenti
Non riesco davvero a indirizzare i punti 1 e 2 poiché non ho esperienza di COM e non capisco 2, ma per rispondere alla tua specifica domanda finale, se usi il sistema. Classe Activator, puoi farlo:
RemotingTypes.Server myInstance = (RemotingTypes.Server) Activator.GetObject(typeof(RemotingTypes.Server), MyUrl);
Significa che devi vincolarlo in fase di costruzione, ma è tutto lato client.
Vedi la mia domanda simile .