我正在使用ASP.NET MVC开发一个网站,我有很多像这样的指令:
new ReleaseFactory().BuildFeatureSection();
为了改进我认为使用静态方法的代码:
ReleaseFactory.BuildFeatureSection()
问题是我害怕发生僵局的可能性。
这些方法经常访问不同的数据源(例如Excel文档,数据库等),据我所知,通过静态方法访问它们并不是一个好主意,特别是在开发Web应用程序时。
改善当前语法有什么好主意吗?
编辑:有关发布工厂目的的更多信息。
ReleaseFactory是一个用于为Release页面创建ViewModel的类。显示的数据不是基于记录的用户,而是对每个人都相同。在我的网站上还有其他工厂有一个构造函数,通常只需要一个参数。
例如:{baseUrl} / Feature / {ID}
public ActionResult BetaProgram(int id)
{
var viewModel = new FeatureFactory(id).BuildFeatureViewModel();
return View(viewModel);
}
同样在这种情况下,显示的信息不是基于用户,而是基于当前页面的id。希望这有助于更好地了解情况。
答案 0 :(得分:0)
如果没有看到您的代码,我最好的建议是使用锁定,例如
public static class Foo
{
private static object lockingObject = new object();
public static void DoSomething()
{
lock (lockingObject)
{
// Do your stuff.
}
}
}
这是一个简单的例子,可能就足够了,不确定。基本上,您一次阻止访问lock
语句内运行的代码到一个线程。这可以消除死锁,因为一次只有一个线程可以执行lock
语句中的代码。
最好的办法是尝试这个,如果你有工具,可以对代码进行一些负载测试,看看有什么破坏。