Caché local
NCache admite una caché independiente no agrupada que reside en un único nodo. La caché local es similar en características a otras cachés agrupadas, es decir, tiene todas las características de almacenamiento en caché proporcionadas en cualquier otra topología de almacenamiento en caché, pero no es escalable ni tolerante a fallas como las cachés agrupadas. Como se trata de un caché de un solo servidor, su capacidad transaccional no se puede aumentar agregando varios servidores. Además, crea una única instancia de caché (sin copia de seguridad ni réplica), por lo que, si deja de funcionar, se pierden todos los datos almacenados en caché. Un caché local es adecuado para aplicaciones con una pequeña cantidad de clientes con baja actividad o donde las aplicaciones no necesitan almacenar en caché grandes cantidades de datos.
Niveles de aislamiento en caché local
Una caché local tiene dos niveles de aislamiento, como se indica a continuación:
InProc (En proceso)
Este nivel de aislamiento significa que el caché reside dentro del espacio de memoria de la aplicación cliente. Como este tipo de caché existe dentro del proceso de solicitud, el tiempo de respuesta es más rápido. En InProc, NCache mantiene los datos almacenados en caché como objetos vivos (no en forma serializada), lo que reduce el costo de serialización/deserialización. Sin embargo, dichas aplicaciones pueden enfrentar limitaciones de memoria, ya que la aplicación y el caché comparten la misma memoria. Además, los datos almacenados en caché en este caso no se pueden compartir con aplicaciones que se ejecutan fuera de este proceso.
Dado que los objetos se almacenan en el mismo espacio de direcciones que el cliente de caché, los clientes de caché obtienen la referencia a los objetos almacenados en caché en lugar de una copia. Para aplicaciones multiproceso, donde varios subprocesos modifican el mismo objeto, estos cambios deben sincronizarse utilizando varias técnicas de sincronización disponibles en el .NET framework.
Note
Aunque los objetos no se guardan en forma serializada en las cachés de InProc, aún es necesario tener todos los objetos marcados como Serializable
. NCache calcula el tamaño de un objeto serializándolos, lo que luego ayuda a desalojarlo cuando sea necesario.
OutProc (fuera de proceso)
Este nivel de aislamiento significa que el caché reside en un proceso separado (el NCache proceso de servicio) desde la aplicación del cliente. Varios clientes (locales y remotos) pueden conectarse al mismo caché para compartir datos. La latencia, en este caso, es mayor que la caché de InProc, debido al costo de comunicación fuera del proceso.
La caché local de OutProc es adecuada para situaciones en las que varios clientes de la aplicación necesitan acceder a los mismos datos almacenados en caché. Por ejemplo, en un jardín web donde cada aplicación ASP.NET se ejecuta en un proceso de trabajo independiente, se debe utilizar una caché OutProc. Además, en aplicaciones ASP.NET, utilizar una instancia de caché de InProc no se considera la mejor opción debido a limitaciones de memoria del proceso. Sin embargo, tenga en cuenta que habrá una sobrecarga al transferir datos entre el proceso de la aplicación y el propio caché.
Vea también
Topologías de caché
Clúster de caché
Cliente de caché
Caché de cliente
Puente para replicación WAN