2011-11-11 32 views
25

Sono un principiante in asp.net, e avere un qualche problema di cache:Devo usare HttpRuntime.Cache?

  1. HttpRuntime.Cache fornisce solo metodi severals e penso di essere in grado di attuare questi metodi con dizionario da me.
  2. Se HttpRuntime.Cache è molto meglio del dizionario, perché alcune persone vorrebbero implementare il proprio framework di cache.
  3. Che ne dici di MS Enterprise Cache Block?

risposta

72

HttpRuntime.Cache fornisce solo metodi severals e penso che io sono in grado di implementare questi metodi con dizionario da me.

Tu pensi sbagliato. HttpRuntime.Cache è molto più di un semplice dizionario. Offre politiche di sicurezza del thread e di scadenza della cache. Fornisce possibilità di utilizzo dell'implementazione personalizzata e beneficia del caching distribuito, utile nelle web farm. L'implementazione di questo con i dizionari potrebbe essere un sacco di lavoro su cui probabilmente non vorrai avventurarti, dato che in pratica dovrai reinventare le ruote e anche se reinventare le ruote non ti dà fastidio, le possibilità di farle bene sono snelle.

2) Se HttpRuntime.Cache è molto meglio del dizionario, perché alcune persone desiderano implementare il proprio framework cache.

Le persone non vorrebbero farlo.

3) Che ne dici di MS Enterprise Cache Block?

Questa è l'artiglieria pesante che non è sempre necessaria quando è necessario un semplice caching che potrebbe essere ottenuto con ciò che la struttura fornisce già fuori dalla scatola.

Nota: In .NET 4.0 si dovrebbe usare il nuovo System.Runtime.Caching spazio dei nomi invece di HttpRuntime.Cache.

Quindi, per rispondere alla tua domanda: Should I use HttpRuntime.Cache

Sì, a meno che non si sta utilizzando .NET 4.0, nel qual caso si dovrebbe usare le classi dalla nuova System.Runtime.Caching namespace.

+0

Grazie per la tua meravigliosa risposta. Ho un'altra domanda: ho visto alcune persone utilizzare HttpRuntime.Cache in un'applicazione non web come Console, penso che sia un po 'strano. L'hai mai visto? –

+2

@ Domi.Zhang, sì, l'ho visto. Funziona ma richiede una dipendenza dall'assembly System.Web. Questo è il motivo per cui Microsoft ha deciso di esternalizzare la memorizzazione nella cache in un assembly separato in .NET 4.0. –

+0

Darin, Cosa succede se desidero i tempi di scadenza come nella cache di Httpruntime? Non riuscivo a trovarlo in System.Runtime.Caching –