2011-09-05 15 views
5

Nella mia applicazione web ho alcuni valori precalcolati che sono memorizzati in Page.Cache. Al momento devo spostare questa funzionalità sul webservice.È possibile utilizzare la cache nel servizio web?

Quindi ho bisogno di introdurre una funzionalità simile nel webservice - calcolare i valori sulla prima chiamata al metodo web e memorizzarlo in Cache.
È possibile inserire alcuni valori in Cache (non in Applicazione o Sessione - Devo eliminare questi valori dopo un intervallo di tempo) da webservice?

+0

'non in Applicazione o Sessione' quale cache si desidera utilizzare, una nuova? – TheCodeKing

+0

Come vedi nelle risposte qui sotto - c'è qualcosa come il vecchio, noto "Cache" :) –

+0

Sì, se fosse una domanda per te, cercando di capire quali fossero le tue esigenze. C'è la cache di runtime, oppure puoi crearne una tua. È inoltre possibile utilizzare la scadenza della richiamata. – TheCodeKing

risposta

7

È sempre possibile accedere alla cache attraverso la proprietà statica HttpRuntime.Cache, anche se al momento non si dispone di un HttpContext.

+0

Il modo più semplice: è quello che stavo cercando. –

5

In breve: sì, è possibile utilizzare la memorizzazione nella cache nei servizi Web. Devi scegliere l'implementazione corretta della cache basata sull'implementazione del servizio. Ad esempio, se si utilizzano i servizi Web ASP.NET, è possibile utilizzare probabilmente ASP.NET Cache - disponibile tramite HttpContext.Current.Cache.

Se si utilizzano i servizi Web WCF, potrebbe essere necessario utilizzare altre librerie (i servizi Web BTW, ASP.NET sono obsoleti, quindi suggerirò comunque i servizi Web WCF). Se i servizi WCF sono contrassegnati come compatibili con ASP.NET, l'infrastruttura ASP.NET e la relativa cache saranno disponibili. Ma avete la possibilità di ospitare i servizi WCF senza l'integrazione di ASP.NET e in tal caso, probabilmente avete bisogno di guardare diverse API di caching - per esempio, System.Runtime.Caching se state usando .NET 4 (vedere un quick tutorial per usare in-memory cache) altrimenti si può provare Caching Application Block.

2

Si dovrebbe essere in grado di utilizzare:

HttpContext.Current.Cache.Insert(strName, objItem, null, 
    DateTime.Now.AddMinutes(intMinutes), Cache.NoSlidingExpiration) 

per memorizzare nella cache oggetto per un intervallo di tempo specificato.

Problemi correlati