2010-08-11 58 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. 我可以精确地控制何时 存储/检索数据存储的配置文件数据 。