实例化类并将它们保存在Application变量中然后使用它们并且不必在每个请求中实例化它们是否正确?
例如:Instanciate DbContext并在每次需要时直接从de Application变量使用它。
这意味着性能的真正提升?
在全球的asa中:
protected void Application_Start()
{
Application["db"] = new Models.dbContext();
}
使用then:
db = (dbContext)HttpContext.Current.Application["db"];
答案 0 :(得分:1)
DbContext
并根据需要将其丢弃。连接池和各种其他幕后优化意味着这非常有效。 Otoh,如果你正在使用HttpClient
,你可能应该为所有调用创建一个单独的调用(因为它不能执行连接保持活动)。无论您存储在“应用程序”变量中还是仅存储为全局静态,都取决于您。但是HttpClient是例外 - 除非你需要在应用程序的生命周期内维护状态,或者有一些特定于实现的原因,所以有充分的理由避免使用具有全局范围和/或生命周期的变量。