2013-03-19 118 views
0

我有一個ASP.NET(4.0)webforms應用程序,我想知道在我的web應用程序中用戶之間共享數據時我有什麼選項。在沒有數據庫表的情況下在用戶之間共享數據

最明顯的解決方案是數據庫表。但是有沒有其他的選擇?我已經閱讀了一些關於「應用程序範圍」的內容,但我不確定它對於這種情況是否有用。

+0

爲什麼你不希望使用一個數據庫?通過它的聲音,它正是你應該使用的。 – Servy 2013-03-19 14:27:42

+0

@Servy數據庫目前有大約300個表,所以我想以另一種方式解決它 - 如果可能的話。 – Johan 2013-03-19 14:28:42

+1

如果應用程序的複雜程度很高,那麼這個信息屬於一個更重要的原因,而不是幾乎任何其他選項。如果這是一個hello world應用程序,並且你不會爲學習如何配置數據庫而煩惱,那麼我會考慮其他任何事情的唯一原因是,但這顯然不是這種情況。聽起來就像你只需要花費一些時間來適當地構建數據庫,可能使用模式或甚至多個數據庫實例來隔離(並因此模塊化)數據以使其更容易處理。 – Servy 2013-03-19 14:31:07

回答

1

應用程序是您正在尋找的。

if (Application["CurrentUsers"] == null) 
    Application["CurrentUsers"] = 0; 
Application["CurrentUsers"] += 1; 

爲當前在線計數器只是一個例子。

反應的一生,看到global.asax

protected void Application_Start(object sender, EventArgs e) 
{ 
    Application["CurrentUsers"] = 0; 
} 
protected void Application_End(object sender, EventArgs e) 
{ 
    Application["CurrentUsers"] = null; 
} 
+0

好吧,但應用程序對象會存活多久? – Johan 2013-03-19 14:27:07

+1

@Johan查看http://msdn.microsoft.com/en-us/library/ms178594(v=vs.100).aspx – Maarten 2013-03-19 14:28:21

+0

只要你的應用程序還活着。因此,每當**所有**會話被放棄時,應用程序也會丟失。例如,如果您重新啓動您的IIS。 – 2013-03-19 14:28:22

1

應用對象或將其存儲在內存數據庫

+0

應用程序對象是否在某個時候自動清除? – Johan 2013-03-19 14:27:48

+0

直到工作進程沒有被回收或者你需要清除它。 – TalentTuner 2013-03-19 14:29:27

+0

當應用程序池被回收或在IIS上重新啓動應用程序時會發生這種情況。它也發生在web.config發生變化時。您可以通過global.asax中的Application_Start和Application_End鉤住應用程序事件 – 2013-03-19 14:31:32