代码之家  ›  专栏  ›  技术社区  ›  Curtis White

ASP。NET配置文件版本控制?

  •  6
  • Curtis White  · 技术社区  · 14 年前

    ASP。NET配置文件处理版本控制?我知道,因为数据是序列化的,这可能是一个问题,而表不是。

    它会引发某种序列化错误吗?

    示例:我将v1对象存储到配置文件中。我用新的v2版本更新了我的web应用程序,但数据库仍然包含v1对象。

    当我尝试将v1对象反序列化为v2对象时会发生什么?这个问题的最佳解决方案是什么?

    1 回复  |  直到 14 年前
        1
  •  3
  •   VinayC    14 年前

    通常是ASP。NET将配置文件数据视为一个属性包,因此它可能会跳过一个属性(已存储在数据存储中),但已从配置中删除。类似地,对于新添加的属性,它将使用默认值。现在,属性的类型也很重要——如果属性类型是您的自定义类,那么它的序列化将由XmlSerializer或BinaryFormatter处理。XmlSerializer是默认的,它通常是一个宽容的序列化程序(缺少的属性将被跳过等)。可以使用属性来控制xml序列化。对于BinaryFormatter,它与运行时序列化相同,如果您希望支持版本控制,最好实现ISerializable并处理任何版本控制问题。我不确定如果您拥有某个类型a的配置文件属性,然后删除该类型,会发生什么情况。我猜你应该会犯错,但我对此并不在意。

    我通常更喜欢使用自己的实现来支持用户配置文件功能,因为

    1. 诸如版本控制等事情可以根据我的喜好进行控制
    2. 存储和存储模式的选择 可以独立(这是可能的 在ASP。NET配置文件(按自定义) 配置文件提供商)
    3. 它可以很容易地放入 分层应用程序和配置文件数据 也适用于任何非网络用户 客户,如果需要的话
    4. 尽管这意味着要重新发明 再加上一些额外的努力, 对于任何一款拥有 保质期超过2-3年。
    5. 我可以精确地控制何时开始 从中存储/检索配置文件数据 数据存储。