2009-08-06 59 views
13

將類標記爲可序列化的缺點有哪些?將類標記爲可序列化的缺點

我需要將我的asp.net會話保存在數據庫中,它要求會話中的對象是可序列化的。

合理。

但事實證明,我所要做的就是用[Serializable]屬性來修飾該類,並且它的工作原理,這意味着.NET已經具有使類可序列化的底層基礎結構。那麼,爲什麼它不能默認呢?

有什麼需要標記它?

回答

28

那麼,爲什麼不能默認它呢?

自動序列化/反序列化可能不足以滿足該對象。例如,對象可能包含一個保存本地文件名稱,指向內存的指針,共享數組索引等的字段。雖然系統通常可以毫無問題地串行化這些原始值,但反序列化可能很容易導致某些內容那是不可用的。一般來說,系統不可能自行解決這個問題。通過要求您使用Serializable來標記課程,您表示已考慮到這些考慮因素。

-1

就缺點而言,序列化的主要缺點是性能開銷(CPU和磁盤)以及通過線路發送時的潛在延遲問題。對安全性可能存在輕微的擔憂,因爲一般來說,XML序列化是不安全的,因爲它僅適用於公共屬性和類,迫使您在某些情況下暴露您可能沒有的其他屬性。當然,如果安全真的是一個問題,你可能不會在會話中存儲過於敏感的數據。

如果您使用Silverlight,一個潛在的缺點是Silverlight不支持[Serializable]屬性,所以用它裝飾的任何類都將無法用於您的Silverlight程序集。

這就是說,對於會話管理,存儲在ASPState數據庫中的小對象通常在內存會話中沒有任何明顯差異的情況下執行得很好。在頻譜的另一端,我有大對象,其他對象的列表屬性等,如果它們足夠大,性能影響有時會顯着。

+3

xml序列化在這裏是一個非問題......它在這個上下文中沒有使用,並且與[[Serializable]無關) – 2009-08-06 04:12:16

相關問題