2009-08-06 26 views
13

Những hạn chế của việc đánh dấu một lớp là serializable là gì?Những hạn chế của việc đánh dấu một lớp là Serializable

Tôi cần lưu phiên asp.net của mình trong một db và nó yêu cầu các đối tượng trong phiên được nối tiếp.

Có ý nghĩa.

Nhưng hóa ra là tất cả những gì tôi phải làm là trang trí lớp đó với thuộc tính [Serializable] và nó hoạt động, do đó có nghĩa là .NET đã có cơ sở hạ tầng cơ sở để tạo các lớp có thể tuần tự hóa được. Vậy tại sao nó không thể làm điều đó theo mặc định?

Cần phải đánh dấu điều gì là như vậy?

Trả lời

28

Vậy tại sao nó không thể thực hiện theo mặc định?

Tự động tuần tự hóa/deserialization có thể không đủ cho đối tượng. Ví dụ, đối tượng có thể chứa một trường chứa tên của một tệp cục bộ, một con trỏ tới bộ nhớ, một chỉ mục vào một mảng được chia sẻ, vv. điều đó không thể sử dụng được. Nói chung, hệ thống không thể tự mình hình dung ra điều này. Bằng cách yêu cầu bạn đánh dấu lớp học với Serializable, bạn cho biết rằng bạn đã xem xét những điều này.

-1

Về mặt hạn chế, Điểm bất lợi chính của tuần tự hóa là chi phí hoạt động (cả CPU và đĩa) và các vấn đề về độ trễ tiềm ẩn khi gửi qua dây. Có thể có những lo ngại nhỏ về bảo mật vì nói chung, việc tuần tự hóa XML là không an toàn vì nó chỉ hoạt động trên các thuộc tính và lớp công khai, buộc bạn trong một số trường hợp để tiếp xúc với các thuộc tính mà bạn có thể không có. Tất nhiên nếu an ninh thực sự là một mối quan tâm, bạn có thể sẽ không lưu trữ quá nhạy cảm của dữ liệu trong phiên.

Nếu bạn đang sử dụng Silverlight, một trong những nhược điểm tiềm năng là Silverlight không hỗ trợ thuộc tính [Serializable], vì vậy mọi lớp được trang trí với nó sẽ không sử dụng được cho các hội đồng Silverlight của bạn.

Điều đó nói rằng, đối với quản lý phiên, các đối tượng nhỏ được lưu trữ trong cơ sở dữ liệu ASPState thường hoạt động tốt mà không có bất kỳ sự khác biệt đáng chú ý nào trong phiên bộ nhớ. Ở đầu đối diện của quang phổ, tôi đã có các đối tượng lớn với các danh sách các đối tượng khác như các thuộc tính vv, và nếu chúng đủ lớn, hiệu suất đạt được có thể được chú ý ở lần.

+3

xml serialization không phải là vấn đề ở đây ... nó không được sử dụng trong ngữ cảnh này và không liên quan gì đến '[Serializable]' –

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