Compartir a través de


Modelo de programación (Almacenamiento en caché de Windows Server AppFabric)

El modelo de programación de Windows Server AppFabric está personalizado para el modelo de programación cache-aside. Esto significa que si los datos no se encuentran en la memoria caché, la aplicación, y no la memoria caché distribuida de AppFabric, debe volver a cargar los datos en la memoria caché desde el origen de datos original. El código de aplicación usa la clase DataCache, también denominada cliente de caché, una vez creada la instancia.

Estrategia de almacenamiento en caché

Debe diseñarse el código de aplicación de modo que pueda funcionar independientemente de la memoria caché, sin que sea necesario que los datos en caché estén siempre disponibles. Puesto que los datos en caché no se guardan de forma duradera, existe la posibilidad de que los datos en cuestión no estén disponibles.

La característica de alta disponibilidad ayuda a evitar errores de proceso y del equipo de hosts de caché individuales mientras se ejecuta el clúster. Sin embargo, puede haber supuestos en los que falle todo el clúster. Por ejemplo, si fallan demasiados hosts principales, se apagará todo el clúster. Para obtener más información, vea Administración de clústeres y hosts principales (Almacenamiento en caché de Windows Server AppFabric).

Existen otros motivos para que el código encuentre un error de caché: es posible que el elemento de caché haya expirado o se haya expulsado, que el servidor de caché se haya reiniciado, que el servicio de caché se haya reiniciado o que el clúster de caché de haya reiniciado accidentalmente. Independientemente del motivo, el código de aplicación debe tener acceso a la base de datos (u otro origen de datos), si el objeto en caché no está disponible.

Clientes de caché

Para almacenar datos en la memoria caché, use el método GetCache o GetDefaultCache para devolver un objeto DataCache. Una vez creada la instancia, este objeto DataCache se denomina cliente de caché.

Nota

Por motivos de rendimiento, recomendamos que minimice el número de objetos DataCacheFactory creados en una aplicación con capacidad para caché. Almacene el objeto DataCacheFactory en una variable disponible para todas las partes de la aplicación que usan clientes de caché.

Existen numerosas opciones disponibles para configurar el comportamiento del cliente de caché. Puede especificar estos valores de configuración mediante programación, con un archivo de configuración de la aplicación o con ambos métodos. Para obtener más información sobre los clientes de caché y los valores de configuración de aplicaciones disponibles, vea Clientes de caché y caché local (Almacenamiento en caché de Windows Server AppFabric) y Valores de configuración de la aplicación (Almacenamiento en caché de Windows Server AppFabric).

Es posible que varios clientes de caché tengan acceso a una misma memoria caché al mismo tiempo. Las aplicaciones que se ejecutan en equipos diferentes pueden hacerlos mediante la creación de instancias para un cliente de caché que esté configurado para usar la misma memoria caché. En el siguiente código de ejemplo se muestra este concepto. Tenga en cuenta que los comentarios se usan para identificar el código que se ejecuta en diferentes instancias de cliente de caché.

'Each application has a similar GetCache method call
Dim myCacheFactory As DataCacheFactory = New DataCacheFactory()
Dim catalog As DataCache = myCacheFactory.GetCache("catalog")

'One cache client saves an object to the catalog named "toy101"
Call catalog.Put("toy101", New ToyObject("toy101", "Playschool"))

'The same or different cache client retrieves the object
Dim toy As ToyObject = CType(catalog.Get("toy101"), ToyObject)

'The same or a different cache client removes the object
catalog.Remove("toy101")
//Each application has a similar GetCache method call
DataCacheFactory myCacheFactory = new DataCacheFactory();
DataCache catalog = myCacheFactory.GetCache("catalog");

//One cache client saves an object to the catalog named "toy101"
catalog.Put("toy101", new ToyObject("toy101", "Playschool"));

//The same or different cache client retrieves the object
ToyObject toy = (ToyObject)catalog.Get("toy101");

//The same or a different cache client removes the object
catalog.Remove("toy101");

Vea también

Conceptos

Diagrama de la arquitectura física de almacenamiento en caché de Windows Server AppFabric
Diagrama de la arquitectura lógica de almacenamiento en caché de Windows Server AppFabric
Desarrollo de un cliente de caché (Almacenamiento en caché de Windows Server AppFabric)

  2011-12-05