.NET远程处理(Remoting)与WCF的性能对比

用TCP信道时,.NET远程处理默认的序列化器是System.Runtime.Serialization.Formatters.Binary.BinaryFormatter。WCF是用SOAP传送消息的,即格式是XML。可以设置XML的编码方式,选择编码为文本或二进制数据。下面测试用BinaryFormatter和WCF的序列化器序列化同一个对象时,哪一个产生的二进制流最短。

 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序列化同一个对象生成的文件长度不相上下。至于序列化所需的时间,相对于数据在网络中传输的时间,应该可以忽略不计,便不进行测试了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值