All'inizio non ci avevo fatto caso, ma la cosa era abbastanza ovvia vista l'implementazione della classe SqlDependency: finalmente è stata aperta la classe CacheDependency. Nella versione 1.x questa classe è sealed, impedendo quindi una personalizzazione per i propri fini. Nella prossima versione, invece, potremo finalmente creare delle dipendenze customizzate per gli oggetti in cache. Il primo caso che mi viene in mente è far spirare un oggetto in base ad un webservice, per un CMS può essere utile piazzare una dipendenza su un feed RSS, o altro ancora.
L'implementazione è anche piuttosto semplice e si basa su un polling effettuato sulla risorsa da cui dipende l'oggetto in cache. Nel momento in cui il risultato del polling cambia, viene invocato il metodo NotifyDependencyChanged che fa scattare l'invalidazione di tutti gli oggetti della cache che dipendono da questo. In questa implementazione la durata dell'oggetto in cache viene basata sul risultato del metodo GetData del WS WSData.
static Timer _timer; private int _data; public WSDependency() { _timer = new Timer(new TimerCallback(CallBack), this, 20, 20000); _data = GetData(); } protected override void DependencyDispose() { _timer.Dispose(); base.DependencyDispose(); } protected void CallBack(object sender) { int appData = GetData(); if (appData != _data) { ((WSDependency)sender).NotifyDependencyChanged(sender, EventArgs.Empty); } } public int GetData() { WSData ws = new WSData(); return ws.GetData(); }
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- Javascript, Update Panel e gli eventi, il 17 luglio 2007 alle 00:38
- App_Offline.htm e la sua quasi inutilità, il 22 dicembre 2006 alle 16:22
- ATLAS è molto meglio di ASP.NET AJAX, il 28 ottobre 2006 alle 12:53
- DataBinding con ATLAS, il 3 ottobre 2006 alle 00:01
- Attributi e Validazione del querystrig, il 3 settembre 2006 alle 23:56
- Un elogio ai VirtualPathProvider, il 10 giugno 2006 alle 11:25