Лучшее место для создания глобального объекта в ASP.NET MVC - PullRequest
4 голосов
/ 29 февраля 2012

Я хотел бы реализовать ConcurrentQueue объект в моем приложении ASP.NET MVC. Объект ConcurrentQueue будет разделен между сеансами и должен быть создан один раз. Как лучше всего создать ConcurrentQueue в ASP.NET MVC?

Ответы [ 3 ]

7 голосов
/ 29 февраля 2012

Любой выбранный вами класс может содержать его экземпляр, однако наиболее разумно было бы связать его с классом, который отвечает за любую функциональность, для которой используется очередь.

Например, класс Cache:

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

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

Это инициализирует его при первом использовании класса MyCache. Если вам нужен более точный контроль зерна, вы можете создать метод Initialize, который ваш файл Global.asax.cs вызывает при запуске приложения.

3 голосов
/ 29 февраля 2012

Вы можете:

  1. Создать его в статическом конструкторе, поэтому он создается только тогда, когда какой-то код действительно использует тип
  2. Global.asax.
  3. Использование WebActivator - вы не будете загрязнять файл Global.asax и можете создать очередь в другой сборке.
2 голосов
/ 29 февраля 2012

Файл Global.asax.cs, protected void Application_Start() перегрузка метода.

Другим подходом было бы создание класса Singleton / static.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...