.NET远程处理(Remoting)与WCF的性能对比
来源:岁月联盟
时间:2012-02-05
class Program
{
static void Main(string[] args)
{
Customer customer = new Customer { Age = 30, FirstName = "Gqq", LastName = "Nb" };
using (FileStream stream1 = new FileStream(@"B:/binaryFormatter.bin", FileMode.Create))
{
BinaryFormatter binFormatter = new BinaryFormatter();
binFormatter.Serialize(stream1, customer);
}
using (FileStream stream2 = new FileStream(@"B:/xmlFormatter.bin", FileMode.Create))
{
var serializer = new DataContractSerializer(typeof(Customer));
XmlDictionaryWriter binaryWriter = XmlDictionaryWriter.CreateBinaryWriter(stream2);
serializer.WriteObject(binaryWriter, customer);
binaryWriter.Close();
}
}
}
[DataContract]
[Serializable]
class Customer
{
private string fn;
[DataMember]
public string FirstName
{
get { return fn; }
set { fn = value; }
}
private string ln;
[DataMember]
public string LastName
{
get { return ln; }
set { ln = value; }
}
private int age;
[DataMember]
public int Age
{
get { return age; }
set { age = value; }
}
}
在这种情况下,BinaryFormatter生成的binaryFormatter.bin大小为173字节,XmlDictionaryWriter生成的xmlFormatter.bin大小为183字节。BinaryFormatter以微弱优势胜出。
然而,如果把Customer里的属性全改为自动属性,则BinaryFormatter生成的binaryFormatter.bin增加至237字节,XmlDictionaryWriter生成的xmlFormatter.bin大小不变。这是因为BinaryFormatter记录的是后备字段的名字和值。用自动属性时,FirstName的后备字段是<firstname>k__BackingField,比较长罢了。
所以我认为BinaryFormatter和XmlDictionaryWriter序列化同一个对象生成的文件长度不相上下。至于序列化所需的时间,相对于数据在网络中传输的时间,应该可以忽略不计,便不进行测试了
作者 gqqnb的专栏
上一篇:ADO.NET 总结