Domanda

So che c'è una simile domanda qui ma speravo di ottenere un explination migliore. Perché mai dovrei usare HttpContext.Cache invece di HttpRuntime.Cache se il HttpContext usa davvero il HttpRuntime.Cache dietro le quinte?

Simulare un servizio di Windows utilizzando ASP.NET per eseguire processi pianificati Omar utilizza il HttpContext per riporre i propri oggetti di cache, ma quando Jeff Atwood attuato qui ha scelto di utilizzare il HttpRuntime invece. Ovviamente in questa particolare situazione che ha senso dal momento dal momento che non c'è bisogno di fare una richiesta Web per aggiungere l'elemento della cache di nuovo nel HttpContext.

Comunque sto cercando alcune buone indicazioni su quando utilizzare uno contro l'altro.

È stato utile?

Soluzione

E 'proprio la stessa cache alla fine, solo HttpContext.Current volte può essere nullo (se non in un contesto web, o in un contesto web, ma non ancora costruito). Sareste sicuro da usare sempre HttpRuntime.Cache.

Altri suggerimenti

Quando si è in una normale pagina web, è possibile utilizzare in modo sicuro HttpContext.Cache o semplicemente la proprietà Cache della pagina.

Se si sta facendo qualcosa che non è in una pagina, è spesso necessario utilizzare HttpRuntime.Cache per ottenere in modo sicuro l'accesso ad essa.

In alcuni casi è possibile sapere se c'è un contesto http o no, ad esempio, se si avvia un thread separato da una pagina web, quel filo non ha contesto http. In altri casi si può avere un contesto http a volte, come nel metodo Application_Start in global.asax, come l'applicazione non può sempre essere avviato perché c'è una richiesta.

Lo trovo fuorviante troppo, anche se sappiamo tutti che restituisce solo HttpRuntime.Cache internamente. Anche il HttpRuntime è una specie di una cattiva scelta per esporre la cache immagino.

Tutti sais come Session è la cache a livello di sessione e la cache di cui stiamo parlando è a livello di applicazione. Io preferirei di aver Application.Cache come cache che stiamo usando oggi e HttpContext.Cache per riferirsi a ciò che è noto come HttpContext.Items.

Per quanto riguarda rispondere alla tua domanda, penso che tutti noi dovremmo aderire al HttpRuntime.Cache rendere il nostro codice più chiaro, anche se noi abbiamo diversi modi per accedervi. E quando si seriamente intenzione di usarlo è meglio avvolgere la propria API e hanno che chiamano internamente la HttpRuntime's o qualsiasi altra applicazione di cache (EntLib, Velocity, ecc ...).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top