在ASP.NET MVC中创建全局对象的最佳位置

时间:2012-02-29 13:54:51

标签: asp.net asp.net-mvc-3

我想在我的ASP.NET MVC应用程序中实现ConcurrentQueue对象。 ConcurrentQueue对象将在会话之间共享,应创建一次。在ASP.NET MVC中创建ConcurrentQueue的最佳位置是什么?

3 个答案:

答案 0 :(得分:7)

您选择的任何类都可以包含它的实例,但最重要的是将它耦合到负责队列所用功能的类中。

例如Cache类:

public class MyCache
{
     public static ConcurrentQueue Queue { get; private set; }

     static MyCache()
     {
          Queue = new ConcurrentQueue();
     }
}

这将在第一次使用MyCache类时初始化它。如果你想要更精细的谷物控制,你可以创建一个Initialize方法,你的Global.asax.cs文件在应用程序启动时调用。

答案 1 :(得分:3)

你可以:

  1. 在静态构造函数中创建它,因此只有在某些代码实际使用类型
  2. 时才会创建它
  3. Global.asax中。
  4. 使用 WebActivator - 您不会污染Global.asax文件,您可以在不同的程序集中创建队列。

答案 2 :(得分:2)

文件Global.asax.csprotected void Application_Start()方法重载。

另一种方法是制作Singleton / static类。