Код ASP.NET Business Layer сохраняется, но я не уверен, где он хранится?

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

Коллега на работе показал мне это простое веб-приложение, которое, похоже, хранит код бизнес-уровня между выборками страниц, без использования сеанса, кэша, приложения, viewstate, строк запросов или записей (насколько я могу судить).

Код выглядит следующим образом:

    <form id="form1" runat="server" enableviewstate="False">
<div>
    <asp:Label ID="Label1" runat="server" Text="Label" EnableViewState="False"></asp:Label>
    <asp:Button ID="Button1"
        runat="server" Text="Button" EnableViewState="False" 
        CausesValidation="False" />
</div>
</form>

Загрузка страницы:

            PersistanceTest.BLL.Singleton s = PersistanceTest.BLL.Singleton.GetInstance;
        Label1.Text = "Counter: " + s.GetCounter;

И синглтон класс:

    public class Singleton
{

    private int counter;
    private Singleton()
    {
        counter = 0;
    }

    private static Singleton theSingleton;
    static public Singleton GetInstance 
    {
        get 
        {
            if(theSingleton == null) 
            {
                theSingleton = new Singleton();
            }
        return theSingleton;
        }
    }

    public int GetCounter
    {
        get
        {
            int c = counter;
            counter++;
            return c;
        }
    }
}  

Теперь, когда я загружаю страницу, счетчик увеличивается каждый раз, когда я нажимаю кнопку. Но я понятия не имею, где экземпляр Singleton сохраняется в структуре? Я был уверен, что он не будет существовать между загрузками страниц. Может кто-то пролить свет на это? Это сводит меня с ума.

1 ответ

Я считаю, что синглтоны, подобные этому, хранятся в домене приложений (AppDomain). Когда ваше приложение перезапустится, вся сохраненная информация также будет сброшена.

Вы можете узнать больше о доменах приложений здесь: http://odetocode.com/articles/305.aspx

Другие вопросы по тегам