6

Tôi đang viết một ứng dụng dịch vụ windows cần serialize và deserialize tài liệu XML liên tục trong quá trình thực thi. Vì tôi cần serialize và deserialize các loại generic mà không được biết đến trong suốt thời gian biên dịch (tôi không biết có bao nhiêu loại cần serialize/deserialize), tôi muốn biết nếu nó là một ý tưởng hay thì hãy giữ cache của các đối tượng DataContractSerializer tôi khởi tạo để tuần tự hóa và deserializing các đối tượng.Một ý tưởng hay là lưu vào bộ nhớ cache DataContractSerializer?

Tôi đang đặt câu hỏi này vì tôi biết nên lưu bộ nhớ cache của các phiên bản lớp XmlSerializer vì chúng tạo một cụm động trong bộ nhớ dưới nắp và cụm được tạo động trong bộ nhớ không được thu thập rác.

Tôi đọc rằng DataContractSerializer dựa trên việc tạo mã nhẹ, nhưng tôi không thường xuyên với các chi tiết của nó. Đó là lý do tại sao tôi hỏi câu hỏi này, tôi cần phải hiểu nếu tôi instantiate DataContractSerializer trường hợp khi cần thiết nó sẽ dẫn tôi đến một rò rỉ bộ nhớ như XmlSerializer sẽ?

Tôi đã chọn sử dụng DataContractSerializer thay vì XmlSerializer để có thể tuần tự hóa các thuộc tính bên trong.

+0

(đã trả lời nhận xét) –

Trả lời

4

... nó là một ý tưởng tốt để cache các trường hợp Lớp XmlSerializer vì chúng tạo ra một hội đồng năng động trong bộ nhớ dưới mui xe ...

Với XmlSerializer, nó thực sự phụ thuộc vào việc bạn sử dụng các đơn giản constructor (new XmlSerializer(typeToHandle)), hoặc các nhà xây dựng phức tạp hơn cho phép bạn chỉ định tất cả các thuộc tính vv tại thời gian chạy. Nếu bạn chỉ sử dụng hàm tạo đơn giản, nó sẽ tái sử dụng assembly nền, do đó không có hình phạt lặp lại.

Tôi sẽ mong đợi (nhưng chưa thử nghiệm) DataContractSerializer để hoạt động tương tự; nhưng chắc chắn là không có hại trong chỉ đơn giản là bộ nhớ đệm nó, có lẽ trong một lĩnh vực readonly tĩnh

Lưu ý rằng DataContractSerializer hạn chế bố trí xml bạn có sẵn cho bạn ... miễn là bạn OK với ;-p rằng

+0

Bạn có biết những hạn chế nào là impost đối với bố cục xml khi sử dụng DataContractSerializer không? Tôi muốn biết chỉ để chắc chắn rằng tôi là ok với điều đó: P –

+1

Không có tương đương với [XmlAttribute], là rõ ràng nhất. Nếu mục đích chính của bạn là tuần tự hóa dữ liệu, nó là tốt (như là những người khác). Nếu mục đích chính của bạn là viết xml trong một bố cục cụ thể, nó có thể rắc rối. –

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