2012-04-04 118 views
1

使用ASP.NET MVC3創建Web應用程序,基本框架包括NHibernate(流暢),Ninject,Razor,Automapper,Jquery,Rhino-Security。在Asp.NET中使用會話和緩存進行狀態管理(MVC)

需要決定國家管理戰略(會話和緩存級別)。 我聽到下面的緩存類型,

  1. 輸出緩存
  2. 甜甜圈(孔)緩存
  3. 數據緩存

考慮到一般情況下,我想了解國家管理政策是在請求期間使用,

登錄

  1. 用戶轉到站點,仍然未經身份驗證,因此重新登錄到FormsAuth模塊的登錄頁面(問題 - 由於登錄頁面不是用戶特定的,所以肯定是輸出緩存的候選人。但當時的觀點純粹是一種HTML通過MVC逐字刷新,所以通過使用緩存中的任何好處)

的頁面訪問

  1. 由於我使用的犀牛安全,導航取決於分配給individal權限用戶。每個用戶可能有分配的特定權限但是大多數用戶將具有分配給該用戶所屬的UseGroup的權限。創建導航是一個兩步驟的過程 - 爲用戶和Gernerating導航UI獲取權限集,所以這裏是我的兩個Q(問題1 - 在每個頁面訪問權限以及導航創建時需要當前用戶的權限,所以在哪裏存儲它 - 會話?問題2 - 導航太可能可以創建爲每個用戶的第一次訪問和存儲在會話,但我們知道這將是相同的UserGroup中的每個用戶,除非給出特定的。因此,我們可以創建一個特定的權限集哈希,然後或者保存導航到數據緩存啓用輸出緩存使用VarByCustom對兒童行動負責創建Nav UI)

我明白我過於冗長了。事實上,我還有更多的問題,但讓我先看看,如果smbdy真的很煩這裏讀這個廢話

+0

嗨WiseGuise /退伍軍人/專家 - 幫幫我!什麼樣的世界也來了;-) – EagerToLearn 2012-04-04 11:54:05

+0

很難看出你的實際問題是什麼?通常(儘管並非總是)SO問題包含一些代碼,您嘗試或發現並且無法使用的東西。此外,如果你以一種「自然」導致明確答案的形式提出問題,它會有所幫助。對於初學者來說,你是否可以嘗試在最後提出一個問題句子來解決某些問題? – Jeroen 2012-04-04 13:39:41

+0

Jeroen,Up定義了我的場景,問題更加明確地用粗體突出顯示 – EagerToLearn 2012-04-04 20:13:31

回答

0

關於用戶權限,因爲他們是相同的每個用戶組,我會把它們存儲在緩存中,像這樣:

if (System.Web.HttpContext.Current.Cache["UserGroup_1_Permissions"] == null) 
{ 
    _Permissions = DAL.getPermissions("UserGroup1") as List<Permissions>; 
    System.Web.HttpContext.Current.Cache["UserGroup_1_Permissions"] = _Permissions; 
} 
else 
{ 
    _Permissions = System.Web.HttpContext.Current.Cache["UserGroup_1_Permissions"] as List<Permissions>; 
} 

這樣一來,你會從數據庫檢索它們只是第一次,因爲它會被存儲在HttpContext.Current.Cache。