【问题标题】:XMLWriter vs XMLDictionaryWriterXMLWriter 与 XMLDictionaryWriter
【发布时间】:2010-08-30 20:49:25
【问题描述】:

XMLWriterXMLDictionaryWriter 有什么区别?每一种一般都用在什么情况下?

【问题讨论】:

  • 我喜欢 XMLDictionaryWriter 在 MSDN 上的描述:一个抽象类,它派生出来做序列化和反序列化。

标签: .net xml-serialization xmlwriter


【解决方案1】:

XmlWriter 是一个抽象类,其中XmlDictionaryWriter 是继承自它的类之一,它本身就是一个抽象类。

我正在暗中尝试,您想将它与DataContractSerializer 或一般的反序列化一起使用。 XmlDictionaryWriter 是 WCF 用来进行反序列化的基类。

据此,我推断XmlDictionaryWriter 必须进行一些性能调整,以使其在 WCF 反序列化任务中的性能更高。实际上,如果您调用 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();
}

【讨论】:

    【解决方案2】:

    XmlWriter 是一个抽象类,用于以只进方式编写 XML 文档。您使用静态Create 方法来创建类的具体实现以供使用。当您需要为任何用途快速创建任意 XML 时,这种创建 XML 文档的方法非常有用。

    XmlDictionaryWriter 是一个抽象类,用于序列化和反序列化与 XML 之间的对象。据我了解,它在 WCF 中用于序列化对象以通过网络移动。 XmlDictionaryWriter 可以使用二进制、文本或 MTOM 格式进行序列化。如果您特别需要自定义(反)序列化以在 WCF 上使用,我希望您只会使用此类。另见here

    希望对您有所帮助。

    【讨论】:

    • 关于序列化(特别是 MTOM)的信息非常有用。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    相关资源
    最近更新 更多