目前,我正在做一個POC證明protobuf網是比原生的C#串行更快。但是我遇到了一個錯誤?在序列化響應上。protobuf網序列化創建的十六進制字符
以下是錯誤
nativeResult
<?xml version="1.0"?>
<userInformation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<age>22</age>
<education>Cavite State University</education>
<name>Ronald Estacion</name>
<address>
<city>Cavite</city>
<country>PH</country>
<street>Torjak Street</street>
<subd>Yari ka ngayon</subd>
</address>
</userInformation>
protoresult
這裏是我的代碼。
var nativeSerializer = new XmlSerializer(typeof(UserInformation));
var nativeStream = new MemoryStream();
var protoStream = new MemoryStream();
nativeSerializer.Serialize(nativeStream, CreateDetaulUserInformation());
var nativeResult = Encoding.UTF8.GetString(nativeStream.ToArray());
Serializer.Serialize(protoStream, CreateDetaulUserInformation());
var protoResult = Encoding.UTF8.GetString(protoStream.ToArray());
這是UserInformation對象。
//[ProtoContract]
[XmlType("address")]
public class Address
{
//[ProtoMember(1)]
[XmlElement("city", Order = 1)]
public string City { get; set; }
//[ProtoMember(2)]
[XmlElement("country", Order = 2)]
public string Country { get; set; }
//[ProtoMember(3)]
[XmlElement("street", Order = 3)]
public string Street { get; set; }
//[ProtoMember(4)]
[XmlElement("subd", Order = 4)]
public string Subdivision { get; set; }
}
//[ProtoContract]
[XmlType("userInformation")]
public class UserInformation
{
//[ProtoMember(1)]
[XmlElement("age", Order = 1)]
public int Age { get; set; }
//[ProtoMember(2)]
[XmlElement("education", Order = 2)]
public string Education { get; set; }
//[ProtoMember(3)]
[XmlElement("name", Order = 3)]
public string Name { get; set; }
//[ProtoMember(4)]
[XmlElement("address", Order = 4)]
public Address Address { get; set; }
}
注:我已經使用ProtoContract
作爲屬性也嘗試過,但它具有相同的效果。 Protobuf網支持XmlType
以及我評論這些屬性。
什麼是你的XML文件的編碼? – jhenninger 2015-04-01 03:49:35
你稱爲「本地C#序列化程序」是NET XML序列化程序。輸出是XML(文本)。 ProtoBuf是一個*二進制*串行器。你正在比較蘋果和西紅柿。不可打印的主要字符是22(年齡)的序列化二進制表示。一切都按照它應有的方式工作。將NET BinaryFormatter的輸出與ProtoBuf進行比較以獲得更類似的比較結果。 – Plutonix 2015-04-01 04:38:19
@Plutonix我如何實現一個xml字符串輸出? – DevEstacion 2015-04-01 05:28:28