2010-01-03 57 views
3

我第一次參加了AppFabric - 緩存(又名Ms Velocity),並檢出了msdn虛擬實驗室。爲什麼在使用AppFabric時緩存對象存儲在會話中?

https://cmg.vlabcenter.com/default.aspx?moduleid=4d352091-dd7d-4f6c-815c-db2eafe608c7

這裏面這個代碼示例,我不明白。它創建一個緩存對象並將其存儲在會話狀態中。該文件只是說:

我們需要存儲在 會話狀態的高速緩存對象和檢索對象的每一次我們 需要使用相同的 實例。

那不是我過去在ASP.NET中使用緩存的方式。這種模式的原因是什麼,我必須使用它嗎?

private DataCache GetCache() 
{ 
    DataCache dCache; 
    if (Session["dCache"] != null) 
    { 
     dCache = (DataCache)Session["dCache"]; 

     if (dCache == null) 
      throw new InvalidOperationException("Unable to get or create distributed cache"); 
    } 
    else 
    { 
     var factory = new DataCacheFactory(); 
     dCache = factory.GetCache("default"); 
     Session["dCache"] = dCache; 
    } 

    return dCache; 
} 
+0

看起來像DataCacheFactory是一個錯誤的命名意義.. – asyncwait 2010-01-29 19:06:06

回答

1

這是因爲DataCacheFactory是一個昂貴的對象創建 - 你不想你要訪問的緩存每次要創建它的一個實例。

什麼,他們展示你在實驗室中是如何創造的DataCacheFactory一次一個實例獲得DataCache實例的保持,然後存儲在會話狀態數據高速緩存的實例,所以你可以回去每一個你訪問緩存的時間。

當然,這仍然意味着你要爲每個用戶創建一個DataCacheFactory實例,我認爲將它存儲在應用程序狀態將是一個更好的設計。

相關問題