化零为整WCF(9) - 序列化(DataContractSerializer, XmlSerialize
发布时间:2020-12-16 19:58:25 所属栏目:百科 来源:网络整理
导读:介绍 WCF(Windows Communication Foundation) - 序列化:本文 分别以DataContractSerializer,XmlSerializer,DataContractJsonSerializer,SoapFormatter,BinaryFormatter为例 。 示例 1、服务 DataContractSerializerObject.cs using System; using System.Co
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 GuidID { get ; set ;} [DataMember(Order = 1 )] public string Name { get ; set ;} [DataMember(Order = 2 )] public int Age { get ; set ;} [DataMember(Order = 3 )] public DateTimeTime { get ; set ;} } } 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 GuidID { get ; set ;} [XmlElement(Order = 1 )] public string Name { get ; set ;} [XmlElement(Order = 2 )] public int Age { get ; set ;} [XmlElement(Order = 3 )] public DateTimeTime { get ; set ;} } } 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 GuidID { get ; set ;} public string Name { get ; set ;} public int Age { get ; set ;} public DateTimeTime { get ; set ;} } } 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 GuidID { get ; set ;} public string Name { get ; set ;} public int Age { get ; set ;} public DateTimeTime { get ; set ;} } } 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 GuidID { get ; set ;} [DataMember(Order = 1 )] public string Name { get ; set ;} [DataMember(Order = 2 )] public int Age { get ; set ;} [DataMember(Order = 3 )] public DateTimeTime { get ; set ;} } } 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,EventArgse) { // 演示DataContractSerializer的序列化和反序列化 ShowDataContractSerializer(); // 演示XmlSerializer的序列化和反序列化 ShowXmlSerializer(); // 演示SoapFormatter的序列化和反序列化 ShowSoapFormatter(); // 演示BinaryFormatter的序列化和反序列化 ShowBinaryFormatter(); // 演示DataContractJsonSerializer的序列化和反序列化 ShowDataContractJsonSerializer(); } /// <summary> /// 演示DataContractSerializer的序列化和反序列化 /// </summary> void ShowDataContractSerializer() { vardataContractSerializerObject = new API.DataContractSerializerObject {ID = Guid.NewGuid(),Name = " DataContractSerializer " ,Age = 28 ,Time = DateTime.Now} ; varserializer = new System.Runtime.Serialization.DataContractSerializer( typeof (API.DataContractSerializerObject)); // 序列化 varms = new MemoryStream(); serializer.WriteObject(ms,dataContractSerializerObject); ms.Position = 0 ; varsr = new StreamReader(ms); varstr = sr.ReadToEnd(); txtDataContractSerializer.Text = str; // 反序列化 varbuffer = System.Text.Encoding.UTF8.GetBytes(str); varms2 = new MemoryStream(buffer); vardataContractSerializerObject2 = serializer.ReadObject(ms2) as API.DataContractSerializerObject; lblDataContractSerializer.Text = dataContractSerializerObject2.Name; } /// <summary> /// 演示XmlSerializer的序列化和反序列化 /// </summary> void ShowXmlSerializer() { varxmlSerializerObject = new API.XmlSerializerObject {ID = Guid.NewGuid(),Name = " XmlSerializer " ,Time = DateTime.Now} ; varserializer = new System.Xml.Serialization.XmlSerializer( typeof (API.XmlSerializerObject)); // 序列化 varms = new MemoryStream(); serializer.Serialize(ms,xmlSerializerObject); ms.Position = 0 ; varsr = new StreamReader(ms); varstr = sr.ReadToEnd(); txtXmlSerializer.Text = str; // 反序列化 varbuffer = System.Text.Encoding.UTF8.GetBytes(str); varms2 = new MemoryStream(buffer); varxmlSerializerObject2 = serializer.Deserialize(ms2) as API.XmlSerializerObject; lblXmlSerializer.Text = xmlSerializerObject2.Name; } /// <summary> /// 演示SoapFormatter的序列化和反序列化 /// </summary> void ShowSoapFormatter() { varsoapFormatterOjbect = new API.SoapFormatterOjbect {ID = Guid.NewGuid(),Name = " ShowSoapFormatter " ,Time = DateTime.Now} ; varformatter = new System.Runtime.Serialization.Formatters.Soap.SoapFormatter(); // 序列化 varms = new MemoryStream(); formatter.Serialize(ms,soapFormatterOjbect); ms.Position = 0 ; varstr = System.Text.Encoding.UTF8.GetString(ms.GetBuffer()); txtSoapFormatter.Text = str; // 反序列化 varbuffer = System.Text.Encoding.UTF8.GetBytes(str); varms2 = new MemoryStream(buffer); varsoapFormatterOjbect2 = formatter.Deserialize(ms2) as API.SoapFormatterOjbect; lblSoapFormatter.Text = soapFormatterOjbect2.Name; } /// <summary> /// 演示BinaryFormatter的序列化和反序列化 /// </summary> void ShowBinaryFormatter() { varbinaryFormatterObject = new API.BinaryFormatterObject {ID = Guid.NewGuid(),Name = " BinaryFormatter " ,Time = DateTime.Now} ; varformatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); // 序列化 varms = new MemoryStream(); formatter.Serialize(ms,binaryFormatterObject); ms.Position = 0 ; varbuffer = ms.GetBuffer(); varstr = System.Text.Encoding.UTF8.GetString(buffer); txtBinaryFormatter.Text = str; // 反序列化 varms2 = new MemoryStream(buffer); varbinaryFormatterObject2 = formatter.Deserialize(ms2) as API.BinaryFormatterObject; lblBinaryFormatter.Text = binaryFormatterObject2.Name; } /// <summary> /// 演示DataContractJsonSerializer的序列化和反序列化 /// </summary> void ShowDataContractJsonSerializer() { vardataContractJsonSerializerObject = new API.DataContractJsonSerializerObject {ID = Guid.NewGuid(),Name = " DataContractJsonSerializer " ,Time = DateTime.Now} ; varserializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer( typeof (API.DataContractJsonSerializerObject)); // 序列化 varms = new MemoryStream(); serializer.WriteObject(ms,dataContractJsonSerializerObject); ms.Position = 0 ; varsr = new StreamReader(ms); varstr = sr.ReadToEnd(); txtDataContractJsonSerializer.Text = str; // 反序列化 varbuffer = System.Text.Encoding.UTF8.GetBytes(str); varms2 = new MemoryStream(buffer); vardataContractJsonSerializerObject2 = serializer.ReadObject(ms2) as API.DataContractJsonSerializerObject; lblDataContractJsonSerializer.Text = dataContractJsonSerializerObject2.Name; } } 运行结果: DataContractSerializer XmlSerializer ShowSoapFormatter BinaryFormatter DataContractJsonSerializer (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |