Sự khác nhau giữa XMLWriter
và XMLDictionaryWriter
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
Trả lời
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();
}
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.
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
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 * –