2012-04-25 8 views
5

Ho letto un po 'sulla memorizzazione nella cache in C# 3.5. Hai un po 'confuso e apprezzerebbe chiarimenti su elaborando ciò che è la differenza traHttpContext.Current.Cache vs. HttpRuntime.Cache

HttpContext.Current.Cache vs HttpRuntime.Cache vs System.Web.Caching.Cache

Inoltre, ho letto con una di queste in un'applicazione non-web non è raccomandato ma funziona. Quali sono gli svantaggi?

risposta

11

è il tipo che implementa la cache per un'applicazione Web. HttpContext.Current.Cache è solo un wrapper e restituisce HttpRuntime.Cache che non è altro che l'istanza di System.Web.Caching.Cache.

Aggiornamento

Fare riferimento alle Is it OK to use HttpRuntime.Cache outside ASP.NET applications? per la seconda parte.

Aggiornamento: Perché HttpRuntime.Cache deve essere spostato?

a mio parere personale, HttpContext è il tipo che viene passato al IHttpHandler.ProcessPostBack e HttpApplication espone HttpContext che è passata IHttpModule.Init. Ciò garantirebbe l'iniezione di tutte le dipendenze mediante l'iniezione del metodo. Quindi hanno introdotto un livello di riferimento indiretto.

Gli handler e i moduli devono ignorare HttpRuntime su cui sono ospitati. Mentre si è in una pagina ASP.NET, è consigliabile utilizzare this.Page.Cache invece HttpContext.Current.Cache o HttpRuntime.Cache poiché l'utilizzo di HttpContext.Current comporterebbe un sovraccarico di risoluzione del thread corrente e HttpRuntime.Cache creerebbe una dipendenza esterna. Page.Cache viene inizializzato con loche viene passato a ProcessRequest

+1

Perché 'HttpRuntime.Cache' deve essere spostato? –

+0

Aggiornato la mia risposta – Ramesh

Problemi correlati