Foros del Web » Programación para mayores de 30 ;) » .NET »

[SOLUCIONADO] Binary deserialize

Estas en el tema de Binary deserialize en el foro de .NET en Foros del Web. Hola a todos =D Tengo una aplicación cliente-servidor, y ahora estoy implementando unos cambios en el socket para, en vez de texto tal cual, sean ...
  #1 (permalink)  
Antiguo 11/07/2013, 09:25
Avatar de Nekeniehl  
Fecha de Ingreso: julio-2009
Ubicación: Berlin, Alemania / Granada, España
Mensajes: 132
Antigüedad: 15 años, 5 meses
Puntos: 6
Pregunta Binary deserialize

Hola a todos =D

Tengo una aplicación cliente-servidor, y ahora estoy implementando unos cambios en el socket para, en vez de texto tal cual, sean objetos, para esto uso Binary serialization.

Como la comunicación funciona bien, os pego la parte de código que uso para serializar y deserializar:

En la parte cliente serializo con esto: (this, es la clase que serializo)
Código C#:
Ver original
  1. public MemoryStream SerializeObject()
  2.         {
  3.             MemoryStream stream = new MemoryStream();
  4.  
  5.             BinaryFormatter formatter = new BinaryFormatter();
  6.  
  7.             formatter.Serialize(stream, this);
  8.  
  9.             return stream;
  10.         }

En la parte servidor deserializo con esto:

Código C#:
Ver original
  1. BinaryFormatter formatter = new BinaryFormatter();
  2. Stream str = new MemoryStream(inMessage);
  3.  
  4. BroadcastMessage m = (BroadcastMessage) formatter.Deserialize(str);

El problema:

Cuando hago la serializacion y deserializacion en el namespace en el cual uso el dll "BroadcastMessage", me lo hace perfectamente.

Pero cuando serializo, lo mando a traves del socket (recibo correctamente) y deserializo, me encuentro con que intenta buscar el namespace donde fue serializado el objecto, la cosa es que el servidor tambien usa el dll "BroadcastMessage", lanzando la excepción TargetInvocationException diciendo que no encuentra el paquete (donde fue serializado)

¿Alguna sugerencia/ayuda? Muchas gracias gurus! =D
__________________
Antes de cambiar el mundo...dá tres vueltas por tu casa

Usa Google es tu amigo ;)
  #2 (permalink)  
Antiguo 11/07/2013, 09:29
Avatar de Nekeniehl  
Fecha de Ingreso: julio-2009
Ubicación: Berlin, Alemania / Granada, España
Mensajes: 132
Antigüedad: 15 años, 5 meses
Puntos: 6
Respuesta: Binary deserialize

Pensando hace un rato se me ha ocurrido que a lo mejor tengo que indicar en el atributo [Serializable] de la clase BroadcastMessage en qué "namespace/assembly" tiene que mirar. Pero tampoco he encontrado nada de info al respecto =(

EDIT:
Efectivamente, si añado el namespace de mi proyecto de pruebas al servidor, me deserializa sin problemas, sin embargo, no puedo ir añadiendo en referencias todos los proyectos donde se va a implementar o usar la clase "BroadcastMessage", ¿Alguna solución?
__________________
Antes de cambiar el mundo...dá tres vueltas por tu casa

Usa Google es tu amigo ;)

Última edición por Nekeniehl; 11/07/2013 a las 09:45 Razón: Medio fix
  #3 (permalink)  
Antiguo 12/07/2013, 01:51
Avatar de Nekeniehl  
Fecha de Ingreso: julio-2009
Ubicación: Berlin, Alemania / Granada, España
Mensajes: 132
Antigüedad: 15 años, 5 meses
Puntos: 6
Respuesta: Binary deserialize

Nadie sabe de lo que hablo? o es que no se entiende? =(
__________________
Antes de cambiar el mundo...dá tres vueltas por tu casa

Usa Google es tu amigo ;)
  #4 (permalink)  
Antiguo 12/07/2013, 05:08
Avatar de Nekeniehl  
Fecha de Ingreso: julio-2009
Ubicación: Berlin, Alemania / Granada, España
Mensajes: 132
Antigüedad: 15 años, 5 meses
Puntos: 6
Respuesta: Binary deserialize

Bueno, el problema básicamente era que estaba suscrito a un evento en el paquete donde serializaba, eliminado esto, se pasa el objecto mediante sockets perfectamente =)
__________________
Antes de cambiar el mundo...dá tres vueltas por tu casa

Usa Google es tu amigo ;)

Etiquetas: binary
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:01.