ASP.NET业务层代码仍然存在,但我不确定它存储在哪里?

时间:2011-02-07 19:09:50

标签: asp.net bll

我现在对ASP.NET非常困惑。我相信每次检索到该页面引用的网页业务模型都会被创建,并且在显示已经发送给用户之后,它将全部被重新拆除。

一位正在工作的同事向我展示了这个简单的网络应用程序,它似乎在页面提取之间存储业务层代码,而不使用会话,缓存,应用程序,视图状态,查询字符串或帖子(据我所知)。

代码如下:

    <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;

和Singleton类:

    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 个答案:

答案 0 :(得分:1)

我相信像那样的Singletons存储在Application Domain(AppDomain)中。当您的应用程序重新启动时,所有存储的信息也将被重置。

您可以在此处详细了解AppDomains:http://odetocode.com/articles/305.aspx