Если вы используете несколько приложений ASP.NET в одном пуле приложений, сколько экземпляров будет иметь статическую переменную класса?
- Один на пул приложений?
- Один на один рабочий процесс пула приложений?
- Один за приложение?
- Что-то еще?
Просто чтобы указать некоторый контекст:
Я думаю конкретно о реализации ServiceLocator, которую мы имеем, которая содержит UnityContainer в переменной статического класса. Вопрос в том, вмешиваются ли несколько приложений, регистрирующих контейнер в ServiceLocator?
Приложения работают в IIS 7.5 на .NET 4.0, это должно иметь значение.
Пример кода (упрощенный)
public static class ServiceLocator
{
private static IUnityContainer _container;
public static void Initialize(IUnityContainer container)
{
if (_container != null)
{
throw new ApplicationException("Initialize should only be called once!");
}
_container = container;
}
}
Если я запустил это из двух разных веб-приложений, которые запускаются в одном пуле приложений, обычно в Application_Start, генерирует ли это исключение во втором вызове? Всегда ли это будет исключение? Неужели это никогда не вызовет исключения? Вызывает ли это исключение в некоторых конфигурациях?
UPDATE: Я знаю, что будет один экземпляр статической переменной для домена приложения. Таким образом, вопрос может быть перефразирован на "Если запущено несколько приложений ASP.NET в том же пуле приложений, сколько доменов приложений у меня будет?"
Я много искал, но не нашел никаких авторитетных ссылок на это. Любая помощь приветствуется, желательно со ссылками на официальную документацию Microsoft.