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.

Preguntas similare

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
Respuesta Responder a este mensaje
#2 Ricardo Gonzalez
04/12/2003 - 15:54 | Informe spam
Hola Pineda,

sobre tu pregunta de Web Services, no es posible capturar eventos atraves de
Web services, ya que no son referencias a objetos lo que tienes, son
simplemente proxies sin estado (a no ser que mantengas sesion con el Web
Service pero igual no podrías recivir notificaciones de eventos)

un saludo,


Ricardo González Vargas.
MVP


"Pineda" wrote in message
news:
Ya lo solucione, asi que si a alguien le interesa saberlo, puedo darle
algun enlace, o bien pasarle un trozo de codigo.

Saludos, Pineda


Respuesta Responder a este mensaje
#3 Pineda
06/12/2003 - 02:59 | Informe spam
Muchas gracias por la información, es una lastima, aunque por otro lado era
lógico.
Pineda.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida