2010-03-24 31 views
71

Ứng dụng máy tính để bàn của tôi tuần tự hóa các đối tượng sử dụng XmlSerializer. Tôi được đề nghị sử dụng DataContractSerializer để thay thế.
Theo kịch bản nào tôi nên sử dụng DataContractSerializer?DataContractSerializer vs XmlSerializer: Ưu và nhược điểm của mỗi bộ nối tiếp

Rất cám ơn

Nhận xét.
1. Tệp XML đầu ra được lưu trữ cục bộ. Không có ứng dụng nào khác deserialize các đối tượng từ tệp XML đó.
2. Ứng dụng của tôi chạy với .NET Framework 3.5 SP1.

+0

Cũng xem [DataContract-vs-xmltype] (http://stackoverflow.com/questions/624111/datacontract-vs-xmltype) – nawfal

Trả lời

93

Dan Rigsby có bài đăng cuối cùng về điều này - hãy đọc nó!

XmlSerializer vs. DataContractSerializer (web archive)

Ông nói rằng tất cả những gì để nói, và theo một cách rất thuyết phục.

Nói tóm lại:

XmlSerializer:

  • đã được khoảng một thời gian dài
  • là "opt-out"; tất cả mọi thứ nào được đăng, trừ khi bạn nói nó không ([XmlIgnore])

DataContractSerializer là:

  • đứa trẻ mới trong thị trấn
  • tối ưu hóa cho tốc độ (nhanh hơn so với XmlSerializer khoảng 10%, thường)
  • "opt-in" - chỉ những thứ bạn đặc biệt đánh dấu là [DataMember] sẽ serialized
  • nhưng bất cứ điều gì được đánh dấu bằng [DataMember] sẽ được tuần tự - cho dù đó là 01.hoặc private
  • không hỗ trợ thuộc tính XML (vì lý do tốc độ)
+1

Chờ đợi, bạn có thể giải thích về điểm cuối cùng đó không? –

+2

@ Paul-SebastianManole: DataContractSerializer không hỗ trợ thuộc tính XML - vì lý do tốc độ. Những gì để xây dựng? –

+0

Vâng, tôi mới sử dụng .NET. Tôi đã định tiếp tục sử dụng XmlSerializer vì tôi đã tìm thấy một vài hướng dẫn trực tuyến. Nhưng sau đó tôi tìm thấy DataContractSerializer trên MSDN mà dường như được liên kết với WCF. Những gì tôi muốn làm là deserialize một số XML thành một đối tượng đơn giản cho phép tôi truy cập vào một phần tử XML và các thuộc tính của nó bởi vì tôi muốn tuần tự hóa các đối tượng này sau đó, trở lại một tài liệu XML, sau khi tôi tính toán một số giá trị cho các thuộc tính. –

Các vấn đề liên quan