2010-08-30 12 views
16

Sự khác nhau giữa XMLWriterXMLDictionaryWriter là gì? Trong trường hợp nào thì mỗi trường hợp thường được sử dụng?XMLWriter vs XMLDictionaryWriter

+3

Tôi thích mô tả XMLDictionaryWriter của trên MSDN:. * Một lớp trừu tượng mà xuất phát từ làm serialization và deserialization * –

Trả lời

18

XmlWriter là lớp trừu tượng trong đó XmlDictionaryWriter là một trong các lớp kế thừa từ đó và chính nó là lớp trừu tượng.

Tôi đang dùng đâm trong bóng tối mà bạn muốn sử dụng với số DataContractSerializer hoặc với de/serialization nói chung. Các XmlDictionaryWriter là lớp cơ sở được sử dụng bởi WCF để làm de/serialization của nó.

Từ đó tôi sẽ suy ra rằng phải có một số điều chỉnh hiệu suất trong các XmlDictionaryWriter để làm cho nó hoạt động tốt hơn với WCF de/serialization nhiệm vụ. Trong thực tế, nếu bạn gọi WriteObject(Stream, object) thay vì WriteObject(XmlWriter, object) hoặc WriteObject(XmlDictionaryWriter, object) phương pháp nó sẽ tạo ra một XmlDictionaryWriter cho bạn

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 là một lớp trừu tượng được sử dụng để viết tài liệu XML theo cách chuyển tiếp. Bạn sử dụng phương thức tĩnh Create để tạo các triển khai cụ thể của lớp để sử dụng. Phương pháp tạo tài liệu XML này rất hữu ích khi bạn cần nhanh chóng tạo XML tùy ý cho bất kỳ việc sử dụng nào.

XmlDictionaryWriter là lớp trừu tượng được sử dụng để tuần tự hóa và deserialization các đối tượng đến và từ XML. Từ những gì tôi hiểu, nó được sử dụng trong WCF để tuần tự hóa các đối tượng để di chuyển qua dây. XmlDictionaryWriter có thể tuần tự hóa bằng các định dạng nhị phân, văn bản hoặc MTOM. Tôi hy vọng bạn sẽ chỉ sử dụng lớp này nếu bạn đặc biệt cần serialization (de) tùy chỉnh để sử dụng trên WCF. Xem thêm here.

Hy vọng điều đó sẽ hữu ích.

+1

Các thông tin về tuần tự hóa (cụ thể là MTOM) thực sự hữu ích. Cảm ơn! – Nate