2010-06-08 43 views
2

我的應用程序包含一組模型類。例如人員,部門...持久化類的最佳實踐模型

用戶在UI中更改這些類的實例的值,並將這些類保存到我的「項目」文件中。下次用戶可以打開和編輯項目。

我的產品的下一個版本可能會大幅改變模型類別。它仍然需要打開現有的項目文件(我會知道如何處理缺失的數據)。

如何最好將我的模型類保存到項目文件中?

堅持類最簡單的方法是數據協定序列化。然而,它會在突破變化時失敗(我希望有這樣的變化)。如何處理這個?

  • 使用一些其他持久性,例如,名稱 - 值集合或db更容忍
  • 發運一個「項目轉換器」應用程序來遷移舊項目。這需要新舊模式一起出貨或操縱xml,這是最好的?

回答

0

我會建議在您的項目文件架構中包含一個版本號。然後提供XSLT以在不同版本的項目模式之間進行轉換。打開文件時,首先以XML格式打開並檢查版本。如果它不是最新版本,請將其上變換,然後按正常方式處理。

+0

我有一個非常複雜的類層次結構。我也使用netDataContract serialziation,這使得xml更加醜陋。構建xslt有多容易?有沒有什麼工具?是不是更容易使用字典,這將永遠不會破壞任何東西? – 2010-06-08 20:45:27

+0

難度取決於三角洲從一個版本到下一個版本的重要程度。 *有*工具,將有所幫助。例如[Altova](http://www.altova.com/)MapForce。如果你使用字典,那麼你的層次結構是否會變平?我不確定DataContract序列化程序,但我知道要使用XmlSerializer的字典,您必須提供自己的序列化和反序列化邏輯,所以它不會真正爲您簡化。 – Toby 2010-06-09 11:22:17

0

由於將來您需要支持當前應用程序創建的所有「項目」文件。在我看來,將當前數據遷移到新格式的應用程序是更好的解決方案。 這種方法會保持新代碼的清潔,以便讀取和寫入新的數據格式。因此,如果舊格式這麼做,那麼這種邏輯不會混亂,如果新格式這樣做。 此外,遷移應用程序將是獨立的,可以輕鬆測試任何與不正確數據轉換相關的問題。