ASP.NET Profiles版本控制?

时间:2010-08-11 22:27:57

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

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

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

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

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

1 个答案:

答案 0 :(得分:3)

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

我通常喜欢汇总我自己的实现以支持用户个人资料功能,因为

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