Domanda

Qual è la differenza tra XMLWriter e XMLDictionaryWriter? In quali casi è ognuno generalmente utilizzato?

È stato utile?

Soluzione

XmlWriter è una classe astratta di cui XmlDictionaryWriter è una delle classi che eredita da esso ed è essa stessa una classe astratta.

sto prendendo un salto nel buio che si desidera utilizzare con il DataContractSerializer o con de / serializzazione in generale. Il XmlDictionaryWriter è la classe base usata da WCF per fare il suo de / serializzazione.

Da che avrei deduco che ci deve essere qualche ottimizzazione delle prestazioni nella XmlDictionaryWriter per renderlo più performante con WCF compiti de / serializzazione. In realtà se si chiama il WriteObject(Stream, object) invece di WriteObject(XmlWriter, object) o metodi WriteObject(XmlDictionaryWriter, object) si creerà un XmlDictionaryWriter per voi

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();
}

Altri suggerimenti

XmlWriter è una classe astratta utilizzata per scrittura di documenti XML in un forward-only maniera. Si utilizza il metodo Create static per creare implementazioni concrete della classe per l'uso. Questo metodo di creazione di documenti XML è utile quando è necessario per creare rapidamente XML arbitrario per qualsiasi uso.

XmlDictionaryWriter è una classe astratta utilizzata per serializzazione e deserializzazione di oggetti da e verso XML. Da quanto ho capito, è usato in WCF per serializzare oggetti in movimento attraverso il filo. XmlDictionaryWriter può serializzare utilizzando formati binari, testo o MTOM. Mi aspetterei si può usare solo questa classe se si fosse specificamente avendo bisogno (de) serializzazione personalizzata per l'uso su WCF. Vedi anche qui .

La speranza che aiuta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top