2011-03-03 91 views
2

我正在ASP.Net 4.0中構建一個Web應用程序,它必須保持用戶之間共享的內存狀態(更好地說在用戶組之間)。它不是一個標準應用程序,只有在一組操作完成後(可能需要半小時),與一組用戶相關的狀態才能/可以/應該被保留。這個要求不能改變。Web應用程序和內存狀態

據我所知,我不能依賴在進程內存,因爲回收將清除我的狀態。 我發現的唯一解決方案是創建一個標準的應用程序(或一個Windows服務),監控,可通過NamedPipe訪問,它將存儲所有信息。 (爲了可靠性,我還將實現一個自定義回收,其中第一個處理僅在所有用戶組都已完成其操作時終止)。

你知道任何簡單的方法,或者一個可以幫助管理這種應用狀態的庫嗎? 考慮到我期望高水平的併發訪問狀態,您對此設計有任何建議嗎?

謝謝。

+0

將它存儲在數據庫中。 – 2011-03-03 01:35:56

回答

0

將會話數據存儲在數據庫中,併爲需要共享數據的用戶使用公共密鑰。

但是,你說你不能使用數據庫,它必須在內存中。我之後的第一個想法是做一些類似於你所描述的事情(使用Web應用程序調用的服務器上的獨立應用程序)。您也可以通過利用緩存來實現您的目標,但我不能100%確定這一點。 http://msdn.microsoft.com/en-us/library/ms972379.aspx - 緩存文章

哦,主意!在服務器上創建一個臨時XML文件以跟蹤每個多用戶會話,並在每個請求中加載/解析。但是,這仍然不在記憶中,所以也許這並不好。

HttpApplication生命週期不跨越多個用戶。我對HttpApplicationState對象沒有一點困惑:

[本文](http://msdn.microsoft.com/en-us/library/ms972109.aspx)說,它跨越到應用程序的每個用戶。它基本上是一本字典。

我還認爲您可能會從審閱ASP.NET應用程序生命週期中受益。我用作參考的文章是http://msdn.microsoft.com/en-us/library/ms178473.aspx。祝你好運,並讓我們知道你最終做了什麼

+0

不能使用DB,必須在內存中。 – SkyG 2011-03-03 09:37:58