在ASP.NET MVC中创建全局对象的最佳位置
我想在我的ASP.NET MVC应用程序中实现对象。ConcurrentQueue对象将在会话之间共享,并且应该创建一次。在ASP.NET MVC中创建ConcurrentQueue的最佳位置是什么 文件在ASP.NET MVC中创建全局对象的最佳位置,asp.net,asp.net-mvc-3,Asp.net,Asp.net Mvc 3,我想在我的ASP.NET MVC应用程序中实现对象。ConcurrentQueue对象将在会话之间共享,并且应该创建一次。在ASP.NET MVC中创建ConcurrentQueue的最佳位置是什么 文件Global.asax.cs,受保护的无效应用程序\u Start()方法重载 另一种方法是创建单例/静态类。您可以: 在静态构造函数中创建它,因此它仅在某些代码实际使用该类型时创建 Global.asax 使用WebActivator-您不会污染Global.asax文件,您可以在不同的程序集
Global.asax.cs
,受保护的无效应用程序\u Start()
方法重载
另一种方法是创建单例/静态类。您可以:
您选择的任何类都可以包含它的一个实例,但是最好将它耦合到一个类中,该类负责队列用于的任何功能 例如,缓存类:
public class MyCache
{
public static ConcurrentQueue Queue { get; private set; }
static MyCache()
{
Queue = new ConcurrentQueue();
}
}
这将在第一次使用MyCache类时初始化它。如果您想要更细粒度的控制,您可以创建一个
Initialize
方法,您的Global.asax.cs文件在应用程序启动时调用该方法。我应该在哪里声明一个ConcurrentQueue变量,以便稍后从code?ForGlobal.asax.cs
方法-直接在Global.asax.cs中访问它,例如,在应用程序_startdo公共静态ConcurrentQueue队列{get;private set;}
上方的一行,并在应用程序_start中初始化它。有关单例静态类,请参见@ChrisS-answer