ASP.NET Profiles版本控制?

Cur*_*ite 6 .net asp.net asp.net-profiles

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

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

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

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

Vin*_*ayC 3

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

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

  1. 版本控制等事情可以根据我的喜好进行控制
  2. 存储和存储模式的选择可以是独立的(这可以通过自定义配置文件提供程序在 ASP.NET 配置文件中实现)
  3. 它可以轻松地放入分层应用程序中,并且如果需要,配置文件数据也可供任何非 Web 客户端使用
  4. 尽管这意味着重新发明轮子并需要付出一些额外的努力,但对于任何保质期超过 2-3 年的软件来说,这是值得的。
  5. 我可以精确控制何时从数据存储中存储/检索配置文件数据。