2010-08-30 4 views
16

Was ist der Unterschied zwischen XMLWriter und XMLDictionaryWriter? In welchen Fällen wird jeder in der Regel verwendet?XMLWriter vs XMLDictionaryWriter

+3

I XmlDictionaryWriter Beschreibung auf MSDN mag:. * Eine abstrakte Klasse, die von herleitet Serialisierung und Deserialisierung zu tun * –

Antwort

18

XmlWriter ist eine abstrakte Klasse, von der XmlDictionaryWriter eine der Klassen ist, die von ihr erbt und selbst eine abstrakte Klasse ist.

Ich nehme einen Stich in die Dunkelheit, die Sie mit der DataContractSerializer oder mit de/Serialisierung im Allgemeinen verwenden möchten. Die XmlDictionaryWriter ist die Basisklasse, die von WCF für die De/Serialisierung verwendet wird.

Daraus würde ich ableiten, dass es eine Leistungsoptimierung in der XmlDictionaryWriter geben muss, um es performanter mit WCF de/Serialisierungsaufgaben zu machen. wenn Sie in der Tat nennen die WriteObject(Stream, object) statt WriteObject(XmlWriter, object) oder WriteObject(XmlDictionaryWriter, object) Methoden wird es ein erstellen XmlDictionaryWriter für Sie

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 ist eine abstrakte Klasse, die zum direkten Schreiben von XML-Dokumenten verwendet wird. Sie verwenden die statische Methode Create, um konkrete Implementierungen der zu verwendenden Klasse zu erstellen. Diese Methode zum Erstellen von XML-Dokumenten ist nützlich, wenn Sie für beliebige Zwecke schnell beliebiges XML erstellen möchten.

XmlDictionaryWriter ist eine abstrakte Klasse, die für die Serialisierung und Deserialisierung von Objekten zu und von XML verwendet wird. Soweit ich weiß, wird es in WCF zum Serialisieren von Objekten zum Bewegen über die Leitung verwendet. XmlDictionaryWriter kann mit Binär-, Text- oder MTOM-Formaten serialisiert werden. Ich würde erwarten, dass Sie diese Klasse nur verwenden würden, wenn Sie eine benutzerdefinierte (De-) Serialisierung für die Verwendung über WCF benötigen würden. Siehe auch here.

Hoffe, dass hilft.

+1

Die Info über Serialisierung (speziell MTOM) ist sehr hilfreich. Vielen Dank! – Nate

Verwandte Themen