elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Serializacion datatable
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Serializacion datatable  (Leído 9,061 veces)
diego_lp

Desconectado Desconectado

Mensajes: 180


In a free world, who needs gates and windows?


Ver Perfil WWW
Serializacion datatable
« en: 26 Febrero 2010, 19:18 pm »

Hola a todos, estoy en un proyecto de cliente-servidor los cuales se conectan a travez de un socket.
Alguien me podria ayudar a contruir una funcion para serializar un datatable y otra para deserializarlo para poder mandarlo a travez del socket?
Muchas gracias.


En línea

Los programadores hicimos un pacto con Dios, él no hace sistemas y nosotros no hacemos milagros!
elmaro


Desconectado Desconectado

Mensajes: 301


Unas simples palabras...


Ver Perfil
Re: Serializacion datatable
« Respuesta #1 en: 26 Febrero 2010, 20:09 pm »

Código
  1. Public Shared Function Serialize(ByVal Obj As Object, ByVal AsByte As Boolean) As Byte()
  2.        Dim bf As New Runtime.Serialization.Formatters.Binary.BinaryFormatter
  3.        Dim ms As New IO.MemoryStream
  4.        bf.Serialize(ms, Obj)
  5.        Return ms.ToArray
  6. End Function
  7.  
  8. Public Shared Function Deserialize(ByVal Obj As Byte()) As Object
  9.        Dim bf As New Runtime.Serialization.Formatters.Binary.BinaryFormatter
  10.        Dim ms As New IO.MemoryStream(Obj)
  11.        Return bf.Deserialize(ms)
  12. End Function
  13.  


En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Serializacion datatable
« Respuesta #2 en: 26 Febrero 2010, 20:12 pm »

Hola,

para Serializar usa la clase XmlSerializer, y para Deserializar usa XmlDesserializer. Estoy super corto de tiempo pero va algo asi:

Código:

MyClass classinstance= new MyClass();
XmlSerializer s = new XmlSerializer(typeof(MyClass));

MemoryStream writer = new MemoryStream();
ser.Serialize(writer, classinstance);

//Ahora todo esta en el stream.



Saludos!
En línea

diego_lp

Desconectado Desconectado

Mensajes: 180


In a free world, who needs gates and windows?


Ver Perfil WWW
Re: Serializacion datatable
« Respuesta #3 en: 9 Marzo 2010, 17:32 pm »

Gracias a ámbos por contestar, pude solucionarlo con las funciones para serializar y deserializar de elmaro, de todos modos gracias a los dos por tomarse la molestia de contestar.
Tengo una duda mas, el datable que envío por un socket al momento de serializarlo pasa a ocupar al rededor de 400 bytes por registro (es decir, si tiene 100 registros ocupa aproximadamente 40000 bytes.
Mi pregunta es la siguiente: ¿hay alguna manera de comprimir ese array de bytes para que ocupe menos al momento de enviarlo por el socket?
Muchas gracias a todos.
Saludos.
En línea

Los programadores hicimos un pacto con Dios, él no hace sistemas y nosotros no hacemos milagros!
raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Serializacion datatable
« Respuesta #4 en: 9 Marzo 2010, 17:39 pm »

Si usas variables booleanas, puedes convertirlos a flags en un solobyte (7 campos booleanos = 1 Byte!)
Si podes usa ASCII (unicode tiene mas caracteres, pero ocupa 2 bytes por caracter; ASCII ocupa un byte por caracter)
Si usas numeros, trata de convertirlos a un byte o 2 (los integer ocupan 4 bytes, si vas a guardar la edad guardala en un solo byte, no creo que alguien tenga mas de 255 años :xD)

Y para texto, busca algun algoritmo de compresion
En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Serializacion datatable
« Respuesta #5 en: 10 Marzo 2010, 22:37 pm »

Si se puede, porque el Stream a donde serializas puede ser un memoryStream, ese lo comprimes, y luego lo mandas por el socket.. si no puedes hacerlo me dices y te escribo el codigo.. Que ahora ando un poco corto de tiempo! :D

Saludos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Equivalente a DataTable de .Net
Java
elmaro 2 5,071 Último mensaje 2 Diciembre 2010, 14:48 pm
por elmaro
Ayuda datatable Asp.netC#
.NET (C#, VB.NET, ASP)
evicar 8 8,465 Último mensaje 25 Marzo 2011, 16:43 pm
por [D4N93R]
Serializacion en C!!
Programación C/C++
ekys 2 4,891 Último mensaje 16 Abril 2011, 02:54 am
por ekys
Ayuda .NET Serialización Objetos Web
.NET (C#, VB.NET, ASP)
jonatown 0 1,990 Último mensaje 13 Febrero 2012, 13:53 pm
por jonatown
¿Rellenar datagrid con datatable/datareader?
.NET (C#, VB.NET, ASP)
|Miguel| 1 4,319 Último mensaje 24 Abril 2012, 14:00 pm
por |Miguel|
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines