2011-09-18 75 views
1

我真的很困惑使用緩存。在ASP.NET緩存中,緩存對象是全局的,所以我知道我們可以在任何地方訪問它。但是當我查看緩存應用程序塊時,如何使用我在application_start階段創建的緩存。使用我在application_start上創建的緩存的策略是什麼?如何在應用程序啓動階段使用緩存?

由於提前,

+0

你想絕對使用Application Blocks還是ASP.NET Caching也足夠了?我不明白你的問題...我認爲你應該閱讀:http://stackoverflow.com/questions/21870/system-web-caching-vs-enterprise-library-caching-block –

+0

@Davide Piras我讀過它在打開這個問題之前。我想使用應用程序塊,但假設我查詢了數據庫並將其放在application_start中的緩存中。然後,例如,我如何在業務層或項目上的任何類中使用它? –

+0

向我們展示了您將對象放入application_start中的緩存中的方式:-) –

回答

1

一旦你創建了正確的配置片段爲您的緩存塊,並添加到ASP.NET應用程序的web.config,你可以以同樣的方式從項目添加到緩存中在asp.net應用程序的任何地方。同樣,從在app.config或web.config中共享相同配置片段的業務或服務層,您應該可以從緩存中檢索項目。

這很好說明如下:Exploring Caching : Using Caching Application Enterprise Library 4.1

所以只是嘗試創建和使用的ICacheManager,例如以這種方式:

//Create Instance of CacheManager 
ICacheManager objCacheManager = CacheFactory.GetCacheManager();  

//Add a new CacheItem to Cache 
objCacheManager.Add("YourKey", yourObject); 
從其他項目或Web服務

然後對IIS運行,但作爲另一個應用程序,如果在web.config包含相同的代碼段配置緩存,使用此:

//Create Instance of CacheManager 
ICacheManager objCacheManager = CacheFactory.GetCacheManager(); 

// Check If Key is in Cache Collection 
if(objCacheManager.Contains("YourKey")) 
{ 
    var myObject = objCacheManager.GetData("YourKey"); 
} 

你其實應該想象這在應用程序體系結構中處於較低級別時,如果通過業務邏輯從數據庫加載數據,我想象那塊BL將從數據庫中檢索並添加到緩存中,然後在下一個查詢中檢查它是否存在於緩存中如果不是會從數據庫再次加載。

有關配置代碼段的示例,請查看上面提到的鏈接。

相關問題