Estaba repasando artículos para comprender más acerca del serializador de datacontractserializer y binaryformatter. En base a la lectura realizada hasta el momento, tenía la impresión de que el formato binario debería tener una huella menor que el agente de contraste de datos. Motivo por el que DataContractSerializer se serializa en xml infoset, mientras que binaryformatter se serializa en un formato binario patentado.DataContractSerializer vs BinaryFormatter rendimiento
A continuación se presenta la prueba
[Serializable]
[DataContract]
public class Packet
{
[DataMember]
public DataSet Data { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public string Description { get; set; }
}
conjunto de datos se rellena con 121317
filas de la tabla [AdventureWorks].[Sales].[SalesOrderDetail]
using (var fs = new FileStream("test1.txt", FileMode.Create))
{
var dcs = new DataContractSerializer(typeof(Packet));
dcs.WriteObject(fs, packet);
Console.WriteLine("Total bytes with dcs = " + fs.Length);
}
using(var fs = new FileStream("test2.txt", FileMode.Create))
{
var bf = new BinaryFormatter();
bf.Serialize(fs, packet);
Console.WriteLine("Total bytes with binaryformatter = " + fs.Length);
}
Results
Total bytes with dcs = 57133023
Total bytes with binaryformatter = 57133984
Pregunta ¿Por qué es el número de bytes para BinaryFormatter más de DataContractSerializer? ¿No debería ser mucho menor?
Gracias por la información. Estoy atascado con el uso de DataSet. Demasiados problemas !! – stackoverflowuser
@stackoverflowuser: He tenido una excelente suerte con solo ejecutar la secuencia serializada a través de un deflater, si el tamaño es un gran problema. –