二进制、SOAP的序列化及反序列化
二进制的序列化,反序列化。
需要序列化的类:
[Serializable]
public class SerializableClass
{
string name = string.Empty;
int age = 0;
string grade = string.Empty;
public SerializableClass()
{
}
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public int Age
{
get
{
return age;
}
set
{
age = value;
}
}
public string Grade
{
get
{
return grade;
}
set
{
grade = value;
}
}
}
需要引用的命名空间
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
public void SerialzableCless()
{
//将对象序列化
IFormatter format = new BinaryFormatter();
Stream stream = new FileStream(@"c:\fastyou.bin",FileMode.Create,FileAccess.Write,FileShare.None);
SerializableClass sc = new SerializableClass();
sc.Age = 26;
sc.Name = "fastyou";
sc.Grade = "Advance";
format.Serialize(stream, sc);
stream.Close();
//将文件流反序列化
Stream dstream = new FileStream(@"c:\fastyou.bin", FileMode.Open, FileAccess.Read, FileShare.Read);
SerializableClass scc = (SerializableClass)format.Deserialize(dstream);
dstream.Close();
}
对同一个类进行Soap 序列化{
//将对象序列化
IFormatter format = new BinaryFormatter();
Stream stream = new FileStream(@"c:\fastyou.bin",FileMode.Create,FileAccess.Write,FileShare.None);
SerializableClass sc = new SerializableClass();
sc.Age = 26;
sc.Name = "fastyou";
sc.Grade = "Advance";
format.Serialize(stream, sc);
stream.Close();
//将文件流反序列化
Stream dstream = new FileStream(@"c:\fastyou.bin", FileMode.Open, FileAccess.Read, FileShare.Read);
SerializableClass scc = (SerializableClass)format.Deserialize(dstream);
dstream.Close();
}
需要的命名空间
using System.Runtime.Serialization.Formatters.Soap;
还需要add System.Runtime.Serialization.Formatters.Soap.dll
public void SoapSerialzable()
{
//将对象序列化
SoapFormatter format = new SoapFormatter();
Stream stream = new FileStream(@"c:\fastyou.soap", FileMode.Create, FileAccess.Write, FileShare.None);
SerializableClass sc = new SerializableClass();
sc.Age = 26;
sc.Name = "fastyou";
sc.Grade = "Advance";
format.Serialize(stream, sc);
stream.Close();
//将文件流反序列化
Stream dstream = new FileStream(@"c:\fastyou.soap", FileMode.Open, FileAccess.Read, FileShare.Read);
SerializableClass scc = (SerializableClass)format.Deserialize(dstream);
dstream.Close();
}
下面是序列化后的文件{
//将对象序列化
SoapFormatter format = new SoapFormatter();
Stream stream = new FileStream(@"c:\fastyou.soap", FileMode.Create, FileAccess.Write, FileShare.None);
SerializableClass sc = new SerializableClass();
sc.Age = 26;
sc.Name = "fastyou";
sc.Grade = "Advance";
format.Serialize(stream, sc);
stream.Close();
//将文件流反序列化
Stream dstream = new FileStream(@"c:\fastyou.soap", FileMode.Open, FileAccess.Read, FileShare.Read);
SerializableClass scc = (SerializableClass)format.Deserialize(dstream);
dstream.Close();
}
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<a1:SerializableClass id="ref-1" xmlns:a1="http://schemas.microsoft.com/clr/nsassem/Test/Test%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Dnull">
<name id="ref-3">fastyou</name>
<age>26</age>
<grade id="ref-4">Advance</grade>
</a1:SerializableClass>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
<SOAP-ENV:Body>
<a1:SerializableClass id="ref-1" xmlns:a1="http://schemas.microsoft.com/clr/nsassem/Test/Test%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Dnull">
<name id="ref-3">fastyou</name>
<age>26</age>
<grade id="ref-4">Advance</grade>
</a1:SerializableClass>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>