मैं डेटाकंट्राक्टेरियलाइज़र और बाइनरीफॉर्मर सीरियलाइज़र के बारे में अधिक समझने के लिए लेखों के माध्यम से जा रहा था। अब तक किए गए पढ़ने के आधार पर मैं इस धारणा के तहत था कि बाइनरीफॉर्मेटर में डेटाकॉन्ट्राक्टेरियलाइज़र की तुलना में कम पदचिह्न होना चाहिए। DataContractSerializer का कारण xml infoset को क्रमबद्ध करता है जबकि बाइनरीफॉर्मर मालिकाना बाइनरी प्रारूप में क्रमबद्ध होता है।डेटाकंट्रैक्टसेरियलाइज़र बनाम बाइनरीफॉर्मेटर प्रदर्शन
के बाद परीक्षण
[Serializable]
[DataContract]
public class Packet
{
[DataMember]
public DataSet Data { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public string Description { get; set; }
}
डेटासेट [AdventureWorks].[Sales].[SalesOrderDetail]
तालिका
using (var fs = new FileStream("test1.txt", FileMode.Create))
{
var dcs = new DataContractSerializer(typeof(Packet));
dcs.WriteObject(fs, packet);
Console.WriteLine("Total bytes with dcs = " + fs.Length);
}
using(var fs = new FileStream("test2.txt", FileMode.Create))
{
var bf = new BinaryFormatter();
bf.Serialize(fs, packet);
Console.WriteLine("Total bytes with binaryformatter = " + fs.Length);
}
Results
Total bytes with dcs = 57133023
Total bytes with binaryformatter = 57133984
प्रश्न से 121317
पंक्तियों के साथ बसा हुआ था है क्यों BinaryFormatter के लिए बाइट गिनती DataContractSerializer से अधिक है? क्या यह बहुत कम नहीं होना चाहिए?
अंतर्दृष्टि के लिए धन्यवाद। मैं डेटासेट का उपयोग कर अटक गया हूँ। बहुत सारे मुद्दे !! – stackoverflowuser
@ स्टैकओवरफ्लोउज़र: यदि आकार एक बड़ा मुद्दा है, तो मुझे डिफ्लेटर के माध्यम से केवल धारावाहिक स्ट्रीम चलाने के साथ उत्कृष्ट भाग्य मिला है। –