2009-01-29 20 views

Respuesta

-2

cualquier tipo que haya guardado en la memoria caché, por supuesto ... Debe ser serializable aunque

+1

si la memoria caché está en la memoria no necesita serializar –

14

Si yo fuera usted, yo no se basan en el hecho de que el servicio está alojado en IIS. ¿Qué pasaría si quisiera alojar su servicio WCF con alguna otra tecnología? Creo que deberías echarle un vistazo al memcached, que es una solución de almacenamiento en caché mucho más general, y funciona bien con .NET.

De todos modos, si realmente desea utilizar la caché de IIS, utilice System.Web.HttpRuntime.Cache en lugar de HttpContext.Current.Cache como el HttpContext no siempre está disponible.

También, como cruizer dijo, el tipo real de sus objetos es totalmente irrelevante, siempre y cuando son serializable (es decir, las clases están decoradas con el atributo [Serializable()]). La memoria caché de IIS no requiere objetos serializables, pero WCF sí lo hace.

+0

estoy de acuerdo. evite acoplar estrechamente su servicio para que funcione solo con IIS. – cruizer

+1

También estoy de acuerdo. Por favor, no junte los servicios de WCF. Hace llorar a Juval Lowy. –

+0

+1 para la sugerencia System.Web.HttpRuntime.Cache. Estaba teniendo un problema con HttpContext.Current.Cache sin darme cuenta de que esa era la causa, solucionado cuando cambié a HttpRuntime, gracias –

2

Usted serializa sus objetos para transportarlos, pero no hay necesidad de almacenar en caché objetos serializables.

Su servicio llama a su lógica de negocios para procesar las solicitudes, pero lo que se transfiere no debe ser su objeto de negocios, sino que los datos de su servicio se contraen.

Envuelva su API de caché y desacoplarla de HttpRuntime Cache. Como dijo DrJokepu, acceda al caché de asp.net a través de HttpRuntime.Cache si así lo desea.

Cuestiones relacionadas