2010-06-08 40 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

由于将来您需要支持当前应用程序创建的所有“项目”文件。在我看来,将当前数据迁移到新格式的应用程序是更好的解决方案。 这种方法会保持新代码的清洁,以便读取和写入新的数据格式。因此,如果旧格式这么做,那么这种逻辑不会混乱,如果新格式这样做。 此外,迁移应用程序将是独立的,可以轻松测试任何与不正确数据转换相关的问题。