Compartir vía


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

Existen dos modelos de programación disponibles para Microsoft AppFabric 1.1 para Windows Server:

  • Patrón de programación complementario de caché. 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.

  • Patrón de programación de lectura en primer plano/escritura en segundo plano. En este modelo, se crea un proveedor personalizado para acceder al almacén de servidor. Si un elemento no se encuentra en la memoria caché, el propietario lo recupera del almacén de servidor. Cuando se escriben elementos en una caché, esos elementos se escriben de forma periódica y asincrónica en el almacén de servidor. Para obtener más información acerca de este modelo, consulte Lectura en primer plano y escritura en segundo plano (Almacenamiento en caché de AppFabric 1.1).

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 AppFabric 1.1).

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 que esté disponible para todas las partes de la aplicación que usen 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 AppFabric 1.1) y Opción de configuración de la aplicación (Almacenamiento en caché de AppFabric 1.1).

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 AppFabric (Almacenamiento en caché de AppFabric 1.1)
Diagrama de la arquitectura lógica de almacenamiento en caché de AppFabric (Almacenamiento en caché de AppFabric 1.1)
Desarrollar un cliente de caché

  2012-03-05