zoukankan      html  css  js  c++  java
  • 化零为整WCF(9) 序列化(DataContractSerializer, XmlSerializer, DataContractJsonSerializer, SoapFormatter, BinaryFormatter)

    [索引页]
    [源码下载]


    化零为整WCF(9) - 序列化(DataContractSerializer, XmlSerializer, DataContractJsonSerializer, SoapFormatter, BinaryFormatter)


    作者:webabcd


    介绍
    WCF(Windows Communication Foundation) - 序列化:本文分别以DataContractSerializer, XmlSerializer, DataContractJsonSerializer, SoapFormatter, BinaryFormatter为例


    示例
    1、服务
    DataContractSerializerObject.cs
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    using System.Runtime.Serialization;

    namespace WCF.ServiceLib.Serialization
    {
        
    /// <summary>
        
    /// 用于演示DataContract序列化的实体类
        
    /// </summary>

        // Namespace - 数据契约的命名空间
        [DataContract(Namespace = "http://webabcd.cnblogs.com/")]
        
    public class DataContractSerializerObject
        
    {
            
    // Name - 数据成员的名称
            
    // Order - 数据成员的序列化和反序列化的顺序
            [DataMember(Name = "UniqueID", Order = 0)]
            
    public Guid ID getset; }

            [DataMember(Order 
    = 1)]
            
    public string Name getset; }

            [DataMember(Order 
    = 2)]
            
    public int Age getset; }

            [DataMember(Order 
    = 3)]
            
    public DateTime Time getset; }
        }

    }


    XmlSerializerObject.cs
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    using System.Runtime.Serialization;
    using System.Xml.Serialization;

    namespace WCF.ServiceLib.Serialization
    {
        
    /// <summary>
        
    /// 用于演示XML序列化的实体类
        
    /// </summary>

        // Namespace - XML 根元素的命名空间
        [XmlRoot(Namespace = "http://webabcd.cnblogs.com/")]
        
    public class XmlSerializerObject
        
    {
            
    // ElementName - 生成的 XML 元素的名称
            
    // Order - 序列化和反序列化的顺序
            [XmlElement(ElementName = "UniqueID", Order = 0)]
            
    public Guid ID getset; }

            [XmlElement(Order 
    = 1)]
            
    public string Name getset; }

            [XmlElement(Order 
    = 2)]
            
    public int Age getset; }

            [XmlElement(Order 
    = 3)]
            
    public DateTime Time getset; }
        }

    }


    SoapFormatterObject.cs
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    using System.Runtime.Serialization;
    using System.Xml.Serialization;

    namespace WCF.ServiceLib.Serialization
    {
        
    /// <summary>
        
    /// 用于演示Soap序列化的实体类
        
    /// </summary>

        [Serializable]
        
    public class SoapFormatterOjbect
        
    {
            
    public Guid ID getset; }
            
    public string Name getset; }
            
    public int Age getset; }
            
    public DateTime Time getset; }
        }

    }


    BinaryFormatterObject.cs
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    using System.Runtime.Serialization;
    using System.Xml.Serialization;

    namespace WCF.ServiceLib.Serialization
    {
        
    /// <summary>
        
    /// 用于演示Binary序列化的实体类
        
    /// </summary>

        [Serializable]
        
    public class BinaryFormatterObject
        
    {
            
    public Guid ID getset; }
            
    public string Name getset; }
            
    public int Age getset; }
            
    public DateTime Time getset; }
        }

    }


    DataContractJsonSerializerObject.cs
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    using System.Runtime.Serialization;

    namespace WCF.ServiceLib.Serialization
    {
        
    /// <summary>
        
    /// 用于演示JSON序列化的实体类
        
    /// </summary>

        // Namespace - 数据契约的命名空间
        [DataContract(Namespace = "http://webabcd.cnblogs.com/")]
        
    public class DataContractJsonSerializerObject
        
    {
            
    // Name - 数据成员的名称
            
    // Order - 数据成员的序列化和反序列化的顺序
            [DataMember(Name = "UniqueID", Order = 0)]
            
    public Guid ID getset; }

            [DataMember(Order 
    = 1)]
            
    public string Name getset; }

            [DataMember(Order 
    = 2)]
            
    public int Age getset; }

            [DataMember(Order 
    = 3)]
            
    public DateTime Time getset; }
        }

    }



    2、演示
    Sample.aspx.cs
    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;

    using System.IO;

    using API = WCF.ServiceLib.Serialization;

    public partial class Serialization_Sample : System.Web.UI.Page
    {
        
    protected void Page_Load(object sender, EventArgs e)
        
    {
            
    // 演示DataContractSerializer的序列化和反序列化
            ShowDataContractSerializer();

            
    // 演示XmlSerializer的序列化和反序列化
            ShowXmlSerializer();

            
    // 演示SoapFormatter的序列化和反序列化
            ShowSoapFormatter();

            
    // 演示BinaryFormatter的序列化和反序列化
            ShowBinaryFormatter();

            
    // 演示DataContractJsonSerializer的序列化和反序列化
            ShowDataContractJsonSerializer();
        }


        
    /// <summary>
        
    /// 演示DataContractSerializer的序列化和反序列化
        
    /// </summary>

        void ShowDataContractSerializer()
        
    {
            var dataContractSerializerObject 
    = new API.DataContractSerializerObject { ID = Guid.NewGuid(), Name = "DataContractSerializer", Age = 28, Time = DateTime.Now };

            var serializer 
    = new System.Runtime.Serialization.DataContractSerializer(typeof(API.DataContractSerializerObject));

            
    // 序列化
            var ms = new MemoryStream();

            serializer.WriteObject(ms, dataContractSerializerObject);

            ms.Position 
    = 0;
            var sr 
    = new StreamReader(ms);
            var str 
    = sr.ReadToEnd();
            txtDataContractSerializer.Text 
    = str;


            
    // 反序列化
            var buffer = System.Text.Encoding.UTF8.GetBytes(str);
            var ms2 
    = new MemoryStream(buffer);
            var dataContractSerializerObject2 
    = serializer.ReadObject(ms2) as API.DataContractSerializerObject;
            lblDataContractSerializer.Text 
    = dataContractSerializerObject2.Name;
        }


        
    /// <summary>
        
    /// 演示XmlSerializer的序列化和反序列化
        
    /// </summary>

        void ShowXmlSerializer()
        
    {
            var xmlSerializerObject 
    = new API.XmlSerializerObject { ID = Guid.NewGuid(), Name = "XmlSerializer", Age = 28, Time = DateTime.Now };

            var serializer 
    = new System.Xml.Serialization.XmlSerializer(typeof(API.XmlSerializerObject));

            
    // 序列化
            var ms = new MemoryStream();

            serializer.Serialize(ms, xmlSerializerObject);

            ms.Position 
    = 0;
            var sr 
    = new StreamReader(ms);
            var str 
    = sr.ReadToEnd();
            txtXmlSerializer.Text 
    = str;


            
    // 反序列化
            var buffer = System.Text.Encoding.UTF8.GetBytes(str);
            var ms2 
    = new MemoryStream(buffer);
            var xmlSerializerObject2 
    = serializer.Deserialize(ms2) as API.XmlSerializerObject;
            lblXmlSerializer.Text 
    = xmlSerializerObject2.Name;
        }


        
    /// <summary>
        
    /// 演示SoapFormatter的序列化和反序列化
        
    /// </summary>

        void ShowSoapFormatter()
        
    {
            var soapFormatterOjbect 
    = new API.SoapFormatterOjbect { ID = Guid.NewGuid(), Name = "ShowSoapFormatter", Age = 28, Time = DateTime.Now };

            var formatter 
    = new System.Runtime.Serialization.Formatters.Soap.SoapFormatter();

            
    // 序列化
            var ms = new MemoryStream();

            formatter.Serialize(ms, soapFormatterOjbect);

            ms.Position 
    = 0;
            var str 
    = System.Text.Encoding.UTF8.GetString(ms.GetBuffer());
            txtSoapFormatter.Text 
    = str;


            
    // 反序列化
            var buffer = System.Text.Encoding.UTF8.GetBytes(str);
            var ms2 
    = new MemoryStream(buffer);
            var soapFormatterOjbect2 
    = formatter.Deserialize(ms2) as API.SoapFormatterOjbect;
            lblSoapFormatter.Text 
    = soapFormatterOjbect2.Name;
        }


        
    /// <summary>
        
    /// 演示BinaryFormatter的序列化和反序列化
        
    /// </summary>

        void ShowBinaryFormatter()
        
    {
            var binaryFormatterObject 
    = new API.BinaryFormatterObject { ID = Guid.NewGuid(), Name = "BinaryFormatter", Age = 28, Time = DateTime.Now };

            var formatter 
    = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();

            
    // 序列化
            var ms = new MemoryStream();

            formatter.Serialize(ms, binaryFormatterObject);

            ms.Position 
    = 0;
            var buffer 
    = ms.GetBuffer();
            var str 
    = System.Text.Encoding.UTF8.GetString(buffer);
            txtBinaryFormatter.Text 
    = str;


            
    // 反序列化
            var ms2 = new MemoryStream(buffer);
            var binaryFormatterObject2 
    = formatter.Deserialize(ms2) as API.BinaryFormatterObject;
            lblBinaryFormatter.Text 
    = binaryFormatterObject2.Name;
        }


        
    /// <summary>
        
    /// 演示DataContractJsonSerializer的序列化和反序列化
        
    /// </summary>

        void ShowDataContractJsonSerializer()
        
    {
            var dataContractJsonSerializerObject 
    = new API.DataContractJsonSerializerObject { ID = Guid.NewGuid(), Name = "DataContractJsonSerializer", Age = 28, Time = DateTime.Now };

            var serializer 
    = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(API.DataContractJsonSerializerObject));

            
    // 序列化
            var ms = new MemoryStream();

            serializer.WriteObject(ms, dataContractJsonSerializerObject);

            ms.Position 
    = 0;
            var sr 
    = new StreamReader(ms);
            var str 
    = sr.ReadToEnd();
            txtDataContractJsonSerializer.Text 
    = str;


            
    // 反序列化
            var buffer = System.Text.Encoding.UTF8.GetBytes(str);
            var ms2 
    = new MemoryStream(buffer);
            var dataContractJsonSerializerObject2 
    = serializer.ReadObject(ms2) as API.DataContractJsonSerializerObject;
            lblDataContractJsonSerializer.Text 
    = dataContractJsonSerializerObject2.Name;
        }

    }



    运行结果:

    DataContractSerializer

    XmlSerializer

    ShowSoapFormatter

    BinaryFormatter

    DataContractJsonSerializer

     

    OK
    [源码下载]

  • 相关阅读:
    Halcon 如何将图像转化为矩阵形式
    Halcon 图像分割
    Halcon intensity算子,用于计算灰度的均值和方差
    Halcon draw_region接口
    Halcon scale_image 函数用法技巧
    Halcon 保存图像
    Halcon 读取多张图片
    Halcon 算子 sub_image add_image mult_image div_image
    Halcon 算子 get_grayval 用于读取图像的灰度值
    Halcon 算子 convert_image_type 转换图像类型
  • 原文地址:https://www.cnblogs.com/webabcd/p/1168631.html
Copyright © 2011-2022 走看看