【问题标题】:ASP.NET Profiles versioning?ASP.NET 配置文件版本控制?
【发布时间】:2011-03-28 15:51:38
【问题描述】:

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

它会抛出某种序列化错误吗?

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

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

【问题讨论】:

    标签: .net asp.net asp.net-profiles


    【解决方案1】:

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

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

    1. 可以根据自己的喜好控制版本控制等内容
    2. 存储和存储模式的选择 可以独立(这是可能的 在 ASP.NET 配置文件中自定义 个人资料提供者)
    3. 可以轻松放入 分层应用程序和配置文件数据 也可用于任何非网络 客户(如果需要)
    4. 虽然这意味着重新发明 轮子并付出一些额外的努力, 对于任何具有 保质期超过 2-3 年。
    5. 我可以精确控制何时 存储/检索配置文件数据 数据存储。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-23
      • 2011-11-01
      • 1970-01-01
      • 2012-05-17
      • 2012-11-10
      • 1970-01-01
      • 2014-07-08
      • 1970-01-01
      相关资源
      最近更新 更多