2011-10-25 22 views
7

Chúng tôi có một ứng dụng với các đối tượng mà chúng tôi muốn giữ tuần tự hóa trong cơ sở dữ liệu.
Hiện tại chúng tôi đang sử dụng NetDataContractSerializer, nhưng gần đây phát hiện ra rằng do các thông tin về loại .Net có liên quan, nó tạo ra các tệp lớn có nghĩa là ứng dụng chậm, ngay cả đối với các đối tượng cơ bản.
Thay vào đó, chúng tôi đang xem xét chuyển sang DataContractSerializer và tôi đã tìm kiếm một sự so sánh tốt đẹp của hai nhưng không tìm thấy.NetDataContractSerializer vs DataContractSerializer

  • Sự khác biệt về kích thước giữa các đối tượng được hai người tạo ra là gì?
  • Có sự khác biệt lớn về hiệu suất không?
  • Có bất kỳ vấn đề nào trong số chúng có vấn đề khi tôi có một đối tượng có chứa một List<X>, trong đó X được thừa hưởng bởi nhiều đối tượng khác, sao cho danh sách đó chứa nhiều loại khác nhau trong thời gian chạy? (Tôi được cho biết rằng DataContractSerializer có thể được trao KnownTypes thuộc tính, nhưng điều này có nghĩa là nhiều phụ thuộc trong các mã. Có cách nào để làm cho DataContractSerializer biết tất cả những gì loại trong dung dịch của tôi?)

Cảm ơn.

Trả lời

9
  1. NetDataContractSerializer (NetDCS) viết các loại thông tin cho tất cả các đối tượng, trong khi DataContractSerializer (DCS) chỉ viết những người mà cần phải (ví dụ, nếu bạn khai báo thành viên as type B, và giá trị thực tế của các thành viên khi được nối tiếp là loại D, trong đó D là một kiểu dẫn xuất từ ​​B, do đó, có ít "nhiễu" hơn trong loại được tuần tự hóa DCS.
  2. Không thực sự, nhưng bạn nên thử cả hai với kịch bản của bạn để xem nó sẽ ảnh hưởng đến bạn
  3. Bạn cần sử dụng các loại đã biết trong DCS, nhưng bạn có thể sử dụng DataContractResolver nếu bạn không muốn làm việc với các loại đã biết. Ví dụ về trình phân giải như vậy có thể được tìm thấy trong Youssef Massaoui's blog, và một số thông tin khác về trình phân giải có thể tìm thấy tại bài đăng của tôi về khả năng mở rộng WCF tại http://blogs.msdn.com/b/carlosfigueira/archive/2011/09/21/wcf-extensibility-data-contract-resolver.aspx.
Các vấn đề liên quan