¿Es posible mantener instancias de objetos a través de C # Remoting?
Pregunta
soy nuevo en comunicación remota, quiero hacer una aplicación de bandeja del sistema que se utilizará para realizar algunas tareas en segundo plano. Tengo otros 2 programas que necesitan acceder a los objetos modificados por la aplicación de la bandeja del sistema, y ??las hago cosas con ellos.
Es más o menos así:
bandeja de aplicaciones -> cargas todo en el fondo
Programa 1 -> Muestra algo de información acerca de "MiObjeto" instancia dentro de la bandeja de aplicaciones
Programa 2 -> Utilidades para "MiObjeto" instancia dentro de la bandeja de aplicaciones, que se conecta a un servidor aleatorio en otros lugares y hacer cosas,
Pero estoy perdido en todo el concepto de interacción remota.
Estoy usando esto:
RemotingConfiguration.RegisterWellKnownServiceType(commonInterfaceType, Constants.ServiceName,
WellKnownObjectMode.Singleton);
Sin embargo, parece que es una referencia a la misma clase de objeto, no una instancia del mismo.
¿Cómo se puede procesar un objeto dentro de una aplicación y dejar que otras aplicaciones lo utilizan? No quiero utilizar bases de datos, o serializar cualquier cosa en otro archivo.
Solución
Para registrar una de las instancias existentes y publicarla en Remoting haga lo siguiente.
Primera llamada:
RemotingServices.SetObjecturilForMarshal(MarshalByRefObject, uri)
A continuación, llamar a uno de los siguientes sobrecargas:
System.Runtime.Remoting.RemotingServices.Marshal(MarshalByRefObject)
System.Runtime.Remoting.RemotingServices.Marshal(MarshalByRefObject, String)
System.Runtime.Remoting.RemotingServices.Marshal(MarshalByRefObject, String, Type)
Eso debería funcionar.