【问题标题】:Instances in Application variable应用程序变量中的实例
【发布时间】:2018-05-18 08:26:13
【问题描述】:

实例化类并将它们保存在应用程序变量中然后使用它们而不必在每个请求中实例化它们是否正确?

例如:实例化一个 DbContext 并在每次需要时直接从 de Application 变量中使用它。

这意味着性能的真正提升?

在全局asa中:



    protected void Application_Start()
    {
    Application["db"] = new Models.dbContext();
    }

然后使用:



    db = (dbContext)HttpContext.Current.Application["db"];

【问题讨论】:

标签: c# performance application-variables


【解决方案1】:

DbContexts 应该几乎总是根据需要被实例化和丢弃。连接池和其他各种幕后优化意味着这是非常有效的。 Otoh,如果您使用HttpClient,您可能应该针对所有呼叫创建一个单独的呼叫(因为否则它无法执行连接保持活动)。是否存储在“应用程序”变量中或仅作为全局静态变量取决于您。但是 HttpClient 是个例外 - 除非您需要在应用程序的生命周期内维护状态,或者有一些非常特定于实现的原因,否则有充分的理由避免使用具有全局范围和/或生命周期的变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 2016-08-09
    • 2015-11-14
    • 2016-08-04
    • 1970-01-01
    • 2021-11-25
    相关资源
    最近更新 更多