Application变量中的实例

时间:2017-12-04 19:35:28

标签: c# performance application-variables

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

例如:Instanciate DbContext并在每次需要时直接从de Application变量使用它。

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

在全球的asa中:



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

使用then:



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

1 个答案:

答案 0 :(得分:1)

几乎总是应该实例化

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