2011-09-05 10 views
5

En mi aplicación web tengo algunos valores precalculados que se almacenan en Page.Cache. En este momento, tengo que mover esta funcionalidad al servicio web.¿Es posible usar caché en el servicio web?

Necesito presentar una funcionalidad similar en el servicio web - calcule los valores en la primera llamada al método web y almacénelos en caché.
¿Es posible poner algunos valores en la memoria caché (no en la aplicación o la sesión, tengo que purgar esos valores después de un intervalo de tiempo) desde el servicio web?

+0

'no en la aplicación o sesión' ¿qué caché desea utilizar, una nueva? – TheCodeKing

+0

Como puede ver en las respuestas a continuación, hay algo así como 'Caché' viejo y conocido :) –

+0

Sí, si era una pregunta para usted, tratando de averiguar cuáles eran sus requisitos. Existe el caché Runtime, o puede crear el suyo propio. También puede usar caducidad de devolución de llamada. – TheCodeKing

Respuesta

7

Siempre puede acceder al caché a través de la propiedad estática HttpRuntime.Cache, incluso si no tiene un HttpContext en este momento.

+0

La manera más fácil: es lo que estaba buscando. –

5

En resumen, sí, puede usar el almacenamiento en caché en servicios web. Debe elegir la implementación de caché correcta según la implementación del servicio. Por ejemplo, si está utilizando servicios web ASP.NET, probablemente pueda usar ASP.NET Cache, disponible en HttpContext.Current.Cache.

Si está utilizando los servicios web de WCF, es posible que deba utilizar otras bibliotecas (por cierto, los servicios web ASP.NET son obsoletos, por lo que sugeriré los servicios web de WCF de todos modos). Si los servicios WCF están marcados como compatibles con ASP.NET, la infraestructura ASP.NET y su caché estarán disponibles. Pero tiene la opción de alojar servicios WCF sin integración ASP.NET y, en tal caso, probablemente necesite examinar diferentes API de almacenamiento en caché, por ejemplo, System.Runtime.Caching si está utilizando .NET 4 (consulte a quick tutorial para usar en memoria caché); de lo contrario, puede intentar Caching Application Block.

2

Usted debe ser capaz de usar:

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

para almacenar en caché artículo para un intervalo de tiempo especificado.

Cuestiones relacionadas