Võib juhtuda, et kui kirjutate ASP.NET –i rakendusi, siis puutute kokku ka ASP.NET Cache –i (System.Web.Caching.Cache) klassiga, mis võimaldab erinevate sõltuvustega (tingimustega) cachida andmeid. See on üks väga lihtsalt kasutatav ja effektiivne cachimise klass ning ASP.NET –s võib sellesse lausa kiinduda.
Nüüd oletame, et te kirjutate mõnda muud rakendust .Net –s nagu Windows Forms või Console Application vms ja soovite samasugust cache –i kasutada ka seal. Suure tõenäosusega saate siis ühe pettumuse osaks, kuna ei ole System.Windows.Forms.Caching.Cache klassi vms. Võibolla pole ka vaja.
Oletame, et kirjutate muud rakendust ja on vaja cachida ning tunnete ASP.NET cache –i. Siis tegelikult on võimalik ASP.NET –i cachimise klassi ja mehhanismi ära kasutada ka muude rakenduse sees.
Kui ASP.NET –s lähete Cache –i klassile ligi tavaliselt HttpContext.Current.Cache kaudu, siis seda võimalust muidugi muudes rakendustes ei ole. HttpContext on puudu, sest tegu ei ole veebi rakendusega.
Selle asemel saate Cache –le ligi hoopis HttpRuntime.Cache kaudu ning võite luua näiteks niisuguse ühise Cache –i provider klassi:
/// <summary>
/// Simple CacheProvider, which returns HttpRuntime.Cache.
/// This should work for both ASP.NET and other.
/// </summary>
public class CacheProvider
{
/// <summary>
/// Gets the cache.
/// </summary>
/// <returns></returns>
public Cache GetCache()
{
return HttpRuntime.Cache;
}
}
See lahendus võib tekitada pisikesed värinad/imeliku tunde vähemalt kahel põhjusel:
- lähete ligi HttpRuntime kaudu
- peate refereerima System.Web dll –i ning kasutama nimeruumi System.Web.Caching rakenduses, mis ei ole veebiga seotud
Kui nendest üle olla, siis toimib antud lahendus väga hästi.