Autor
|
Tema: Serializacion datatable (Leído 9,061 veces)
|
diego_lp
Desconectado
Mensajes: 180
In a free world, who needs gates and windows?
|
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
Mensajes: 301
Unas simples palabras...
|
Public Shared Function Serialize(ByVal Obj As Object, ByVal AsByte As Boolean) As Byte() Dim bf As New Runtime.Serialization.Formatters.Binary.BinaryFormatter Dim ms As New IO.MemoryStream bf.Serialize(ms, Obj) Return ms.ToArray End Function Public Shared Function Deserialize(ByVal Obj As Byte()) As Object Dim bf As New Runtime.Serialization.Formatters.Binary.BinaryFormatter Dim ms As New IO.MemoryStream(Obj) Return bf.Deserialize(ms) End Function
|
|
|
En línea
|
|
|
|
[D4N93R]
Wiki
Desconectado
Mensajes: 1.646
My software never has bugs. Its just features!
|
Hola, para Serializar usa la clase XmlSerializer, y para Deserializar usa XmlDesserializer. Estoy super corto de tiempo pero va algo asi: 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
Mensajes: 180
In a free world, who needs gates and windows?
|
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
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
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 ) Y para texto, busca algun algoritmo de compresion
|
|
|
En línea
|
|
|
|
[D4N93R]
Wiki
Desconectado
Mensajes: 1.646
My software never has bugs. Its just features!
|
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! Saludos!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Equivalente a DataTable de .Net
Java
|
elmaro
|
2
|
5,071
|
2 Diciembre 2010, 14:48 pm
por elmaro
|
|
|
Ayuda datatable Asp.netC#
.NET (C#, VB.NET, ASP)
|
evicar
|
8
|
8,465
|
25 Marzo 2011, 16:43 pm
por [D4N93R]
|
|
|
Serializacion en C!!
Programación C/C++
|
ekys
|
2
|
4,891
|
16 Abril 2011, 02:54 am
por ekys
|
|
|
Ayuda .NET Serialización Objetos Web
.NET (C#, VB.NET, ASP)
|
jonatown
|
0
|
1,990
|
13 Febrero 2012, 13:53 pm
por jonatown
|
|
|
¿Rellenar datagrid con datatable/datareader?
.NET (C#, VB.NET, ASP)
|
|Miguel|
|
1
|
4,319
|
24 Abril 2012, 14:00 pm
por |Miguel|
|
|