【发布时间】:2014-08-11 09:49:00
【问题描述】:
我正在使用 ASP.NET MVC 开发一个网站,我有很多这样的说明:
new ReleaseFactory().BuildFeatureSection();
为了改进我认为使用静态方法的代码:
ReleaseFactory.BuildFeatureSection()
问题是我害怕发生死锁的可能性。
这些方法经常访问不同的数据源(如 Excel 文档、数据库等),据我所知,通过静态方法访问它们并不是一个好主意,尤其是在开发 Web 应用程序时。
有什么好主意可以改进当前的语法吗?
编辑:有关 Release Factory 用途的更多信息。
ReleaseFactory 是一个用于为发布页面创建 ViewModel 的类。显示的数据不是基于登录的用户,而是对每个人都是一样的。在我的网站中,还有其他带有构造函数的工厂,通常只需要一个参数。
例如:{baseUrl}/Feature/{ID}
public ActionResult BetaProgram(int id)
{
var viewModel = new FeatureFactory(id).BuildFeatureViewModel();
return View(viewModel);
}
同样在这种情况下显示的信息不是基于用户,而只是基于当前页面的 id。希望这有助于更好地了解情况。
【问题讨论】:
-
“改进代码” - 怎么样?你想解决什么问题?在我看来,您是在添加问题而不是解决问题。
-
ThreadStaticAttribute如果每个用户都有单独的线程 -
@DmitryBychenko“线程”在 ASP.NET 应用程序中几乎从来都不是“用户”的同义词。
-
你的问题是有效的,但标题确实让我失望。
-
@dcastro - 这就是为什么他说“如果每个用户都有一个单独的线程”
标签: c# asp.net-mvc web static singleton