.net - serialize - XMLWriter vs XMLDictionaryWriter
vb net serialize object to xml file (2)
¿Cuál es la diferencia entre XMLWriter
y XMLDictionaryWriter
? ¿En qué casos se utiliza generalmente cada uno?
XmlWriter es una clase abstracta que se utiliza para escribir documentos XML de forma exclusiva. Utiliza el método estático Create
para crear implementaciones concretas de la clase para su uso. Este método de crear documentos XML es útil cuando necesita crear rápidamente XML arbitrario para cualquier uso.
XmlDictionaryWriter es una clase abstracta utilizada para la serialización y deserialización de objetos hacia y desde XML. Por lo que entiendo, se usa en WCF para serializar objetos para moverse a través del cable. XmlDictionaryWriter
puede serializar utilizando formatos binarios, de texto o MTOM. Yo esperaría que solo usara esta clase si estuviera específicamente necesitando (des) serialización para su uso sobre WCF. Véase también here .
Espero que ayude.
XmlWriter
es una clase abstracta de la cual XmlDictionaryWriter
es una de las clases que hereda de ella y es en sí misma una clase abstracta.
Estoy probando en la oscuridad que desea usarlo con el DataContractSerializer
o con la des / serialización en general. XmlDictionaryWriter
es la clase base utilizada por WCF para realizar su des / serialización.
A partir de eso deduciría que debe haber algún ajuste de rendimiento en XmlDictionaryWriter
para que sea más XmlDictionaryWriter
con las tareas de des / serialización de WCF. De hecho, si llama a los WriteObject(Stream, object)
lugar de WriteObject(XmlWriter, object)
o WriteObject(XmlDictionaryWriter, object)
, creará un XmlDictionaryWriter
para usted.
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();
}