2010-08-11 57 views
6

ASP.NET配置文件如何處理版本控制?我知道,因爲數據是序列化的,這可能是一個問題,其中表不是。ASP.NET配置文件版本控制?

它會拋出某種序列化錯誤?

示例:我將v1對象存儲到配置文件。我使用新的v2版本更新我的web應用程序,但數據庫仍包含v1對象。

當我試圖將v1對象反序列化到v2對象時會發生什麼?什麼是這個問題的最佳解決方案?

回答

3

通常,ASP.NET將配置文件數據視爲屬性包 - 所以它可能會跳過屬性(已存儲在數據存儲中)但從配置中刪除。同樣,對於新添加的屬性,它將使用默認值。現在,屬性的類型也很重要 - 如果屬性類型是您的自定義類,那麼它的序列化將由XmlSerializer或BinaryFormatter處理。 XmlSerializer是默認的,它通常是一個寬容的序列化程序(缺少的屬性將被跳過等)。您可以使用屬性來控制xml序列化。在BinaryFormatter的情況下,它與運行時序列化相同,如果您希望支持版本控制,則最好實施ISerializable並處理任何版本控制問題。我不確定如果您有某種類型的配置文件屬性,然後刪除該類型,會發生什麼情況。我的猜測是,你應該得到一個錯誤,但我不關心它。

我通常喜歡挽起我自己的實現支持用戶配置文件的功能,因爲

  1. 的東西,如版本管理等,可以控制按我的喜好
  2. 存儲和存儲架構的選擇 可以獨立(這是可能的 在ASP.NET配置文件通過定製 概況提供)
  3. 它可以方便地放入 分層應用和賬戶資料 也可任何非web 客戶如果需要
  4. 雖然這意味着重新發明輪子 並有一些額外的努力, 其值得擁有的超過3年 保質期的任何軟件。
  5. 我可以精確地控制何時 存儲/檢索數據存儲的配置文件數據 。