2010-08-30 28 views
16

XMLWriterXMLDictionaryWriter有什麼區別?在哪些情況下通常使用每種情況?XMLWriter vs XMLDictionaryWriter

+3

我喜歡的XmlDictionaryWriter的描述在MSDN上:*一個抽象類,從導出做序列化和反序列化* – 2010-08-30 20:56:40

回答

18

XmlWriter是一個抽象類,其中XmlDictionaryWriter是從其繼承的類之一,它本身也是一個抽象類。

我在黑暗中刺探了一下,你希望將它與DataContractSerializer或一般的de/serialization一起使用。 XmlDictionaryWriter是WCF用來執行de/serialization的基類。

由此我可以推斷在XmlDictionaryWriter中必須進行一些性能調整,才能使WCF de /序列化任務更具性能。事實上,如果你撥打的WriteObject(Stream, object)代替WriteObject(XmlWriter, object)WriteObject(XmlDictionaryWriter, object)方法將創建一個XmlDictionaryWriter

public virtual void WriteObject(Stream stream, object graph) 
{ 
    CheckNull(stream, "stream"); 
    XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(stream, Encoding.UTF8, false); 
    this.WriteObject(writer, graph); 
    writer.Flush(); 
} 
7

XmlWriter是一種抽象類,用於以只進方式編寫XML文檔。您可以使用靜態Create方法創建該類的具體實現以供使用。當您需要爲任何用途快速創建任意XML時,創建XML文檔的這種方法很有用。

XmlDictionaryWriter是一個抽象類,用於將對象序列化爲XML和從XML中進行反序列化。據我所知,它在WCF中用於​​序列化對象以在線上移動。 XmlDictionaryWriter可以使用二進制,文本或MTOM格式進行序列化。我希望你只會使用這個類,如果你特別需要定製(德)序列化通過WCF使用。另見here

希望有所幫助。

+1

的有關序列化的信息(特別是MTOM)非常有用。謝謝! – Nate 2015-11-12 20:40:02