Remoting y event handler

03/12/2003 - 18:50 por Pineda | Informe spam
Hola a todos, gracias de antemano,
Mi problema es algo complicado de explicar, no obstante intentare
explicarlo de la forma mas sencilla posible, tengo las siguientes proyectos:

// REMServer (DLL)
public class REMServer : MarshalByRefObject, IDisposable
{
public delegate void OnChanged();
public event OnChanged TituloCambiado;
public event OnChanged AutorCambiado;

private string m_Titulo = null;
private string m_Autor = null;

public string Autor
{
get
{ return m_Autor; }
set
{
m_Autor = value;
if(AutorCambiado != null)
{ AutorCambiado(); }
}
}

public string Titulo
{
get
{ return m_Titulo; }
set
{
m_Titulo = value;
if(TituloCambiado != null)
{ TituloCambiado(); }
}
}

// ... resto de la clase, miembros de IDisposable... etc
}

// Server (WinForm)
public class Server
{
public Server()
{
BinaryServerFormatterSinkProvider serverProv = new
BinaryServerFormatterSinkProvider();
BinaryClientFormatterSinkProvider clientProv = new
BinaryClientFormatterSinkProvider();

serverProv.TypeFilterLevel System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;

IDictionary Properties = nes Hashtable();
Properties["port"] = 8082;

TcpChannel Channel = new TcpChannel(Properties, clientProv,
serverProv);
ChannelServices.RegisterChannel(Channel);


RemotingConfiguration.RegisterWellKnownServiceType(typeof(REMServer.REMServe
r)), "REMServer", System.Runtime.Remoting.WellKnownObjectMode.Singleton);

rem = (REMServer.REMServer)
Activator.GetObject(typeof(REMServer.REMServer),
"tcp://localhost:8082/REMServer");
rem.AutorCambiado += new REMServer.REMServer.OnChanged(HayCambios);
// < Aqui da error de serialization
rem.AutorCambiado += new REMServer.REMServer.OnChanged(HayCambios);

rem.Autor = "Pineda";
rem.TItulo = "Remoting y event Handlers";
}

private void HayCambios()
{ MessageBox.Show("Cambiados los valores..."); }
}

Pues bien, todo es perfecto, ya que con los BinaryServerSinkProvider, y
BinaryClientSinkProvider, elimino el error de SecurityException, pero ahora
no consigo capturar los eventos, me da un error de SerializationException,
dado que la clase SERVER no esta marcada como serializable, no se si como lo
estoy haciendo esta bien, o como puedo solucionar este tema, ya que necesito
capturar esos eventos.

Nota, haceros una idea de que los clientes (que tambien los hay), hacen
una cosa parecida al constructor de la clase Server, por ello no los he
puesto.

Otra cuestion, ¿ seria lo mismo con webservices ?, es decir, ¿ se pueden
capturar eventos tambien ?

Gracias por vuestra ayuda, si necesitais aclaraciones al respecto, no
dudeis en preguntar soy el primero en tener interes. ;-D
Pineda.
 

Leer las respuestas

#1 Pineda
04/12/2003 - 04:58 | Informe spam
Ya lo solucione, asi que si a alguien le interesa saberlo, puedo darle
algun enlace, o bien pasarle un trozo de codigo.

Saludos, Pineda

Preguntas similares