【问题标题】:Storing classes in Application State (ASP.NET)在应用程序状态中存储类 (ASP.NET)
【发布时间】:2011-10-15 00:05:02
【问题描述】:

假设我希望在应用程序状态中存储以下实例,以便经常访问。

public class Example {
  public string A;
  public string B;
  public bool C;
  public int D;
  // ...
}

我无法决定是将整个类一起存储为Application["Example"],还是将其属性单独存储为Application["ExampleA"] 等。

我的想法是((Example)Application["Example"]).A 可能必须将整个类复制到内存中才能访问一个属性 - 对吗?还是我弄错了?

【问题讨论】:

    标签: asp.net class application-state


    【解决方案1】:

    我会使用静态全局变量,性能稍好,类型安全,并使您的代码更易于阅读。有关详细信息,请参阅...

    ASP.NET Application state vs a Static object

    【讨论】:

    • 应用程序状态不需要序列化/反序列化,它只是一个内存字典。你是对的,因为它不需要在集合中查找项目,所以静态访问会更快。是否有任何使用应用程序可以免费解决的潜在线程问题,而您可能需要使用静态代码来解决这些问题?
    • 是的,你的权利不需要序列化/反序列化。我怀疑的性能优势很小,因为不需要读取字典或强制转换。就线程而言,我认为它们是相同的。
    【解决方案2】:

    你是对的,但是......

    如果您只需要其中一个属性的值,则不需要复制整个对象。 从概念上讲,如果我们谈论的是值对象(您不需要身份或特定对象),您可以只存储属性。 如果您需要知道某个特定对象的属性值是什么(成像用户密码),您应该存储整个对象。

    【讨论】:

      【解决方案3】:

      应用程序状态无论如何都存储在内存中,因此我看不到检索类的显着开销。我相当肯定,虽然可能是错误的,但类不会随每个请求进行序列化/反序列化。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-10
        • 1970-01-01
        • 1970-01-01
        • 2013-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-08
        相关资源
        最近更新 更多