2012-04-20 2 views
0

У меня есть библиотека DAL с статическим классом репозитория; он инициализируется с помощью шаблона singleton (статический конструктор). Существует веб-сайт, который использует эту библиотеку DAL, и проект службы Windows в том же решении..net статический объект lifecycle

Насколько известно, было бы два экземпляра одноэлементного объекта, по одному в каждом домене сайта и WINservice. Это правильно?

Для приложения для веб-сайта, после некоторого простоя, домен в разгруженном состоянии, и поэтому класс репо будет выгружен тоже, верно?

И последний вопрос о winservice: насколько известно, что этот домен никогда не будет выгружен, пока служба работает, так что объект репо останется в памяти?

PS: Что произойдет, если я создам объект подкласса, например. рабочий для winservice, который будет использовать класс repo внутри него.

using (var worker = new worker()) 
{ 
    //some DAL manipulations 
} 

Будет ли объект репо уничтожен после ухода из рабочего контекста?

Спасибо за любую помощь.

+0

AFAIK, вы можете отключить веб-приложение выгрузку. Это было бы целесообразно в вашем случае. –

+0

Вы должны задать один вопрос одновременно, а не два, в основном не связанных между собой вопросов. – svick

+0

@ DanielMošmondor, хорошо, но для меня важнее понять, что должно быть по умолчанию. –

ответ

1

Насколько известно, в одном домене сайта и WINservice было бы два экземпляра одноэлементного объекта, . Это правильно?

Да

Для приложения веб-сайта, через некоторое время простоя, домен в ненагруженном, и поэтому класс репо будет выгружен тоже, верно?

Да (правила утилизации приложение бассейн может быть настроен в IIS)

И последний вопрос о WinService: насколько это знать этот домен никогда не будет выгружен, в то время как услуга , чтобы объект repo оставался в памяти?

Да

ли объект репо быть уничтожены, как только я выхожу из контекста работник?

Нет (если не избавиться от него, конечно)

+0

Tnaks, у меня ограниченные связи с db, поэтому эта информация действительно полезна для меня. –

+0

Утилизация объекта не имеет ничего общего с фактическим уничтожением. Это работа сборщика мусора, и вы не можете заставить его собирать какой-то объект. – svick

+0

@svick, так как он использует оператор 'using' в вопросе для рабочего потока, я уверен, что он имел в виду, если бы объект репо был удален (не уничтожен, как в собранном ГБ, который не имеет смысла в этом контексте) с рабочей нитью, и мой ответ заключался в том, что это не произойдет, если он не сделает это явно. – Magnus

Смежные вопросы