2014-03-05 28 views
0

我正在展示產品的MVC網站上工作。需要跟蹤用戶查看和存儲日誌到數據庫中的每個產品。如何在MVC應用程序的Session中存儲數據並將其插入到數據庫中?

因爲我不想在每次頁面加載時都碰到數據庫,所以我試圖將日誌存儲在應用程序級緩存中。問題是:我怎樣才能將緩存中的數據轉儲到數據庫中?是否有任何框架爲我完成了這個任務,或者有什麼最佳實踐來解決這個問題?

回答

1

雖然ASP.NET不是100%可靠的,但並不是爲了託管後臺任務/作業而設計的,但可以這樣做。

創建一個包含計時器的工人類,該計時器觸發每個X間隔並清空應用程序緩存並將數據保存到數據庫。在global.asax中,爲Application_Start創建一個處理程序,並從那裏調用工作程序類的init方法。

此外,還會在global.asax中的Application_Stop事件提示中調用您的工作類中的刷新方法,以確保在應用程序關閉之前刷新所有未完成的數據。

+0

我認爲這應該適用於我的情況。但仍然聽起來像一個解決方法。你知道可擴展網站是如何處理這個問題的嗎?比方說StackOverflow。是否可以使用Redis處理? –

+0

這個解決方案似乎有一個缺陷。我使用Quartz作爲我的調度器。但是,它運行在完全不同的線程中,並且無法訪問應用程序緩存(在應用程序狀態變量中)。 –

+0

對不起。當然你是正確的,應用程序緩存不能從後臺線程訪問。嘗試從'Application_Start'初始化時,將'Application'對象存儲在您的工作者類的屬性中。 –

相關問題