Compartir vía


Métodos de simultaneidad

El Microsoft AppFabric 1.1 para el almacenamiento en caché de Windows Server admite modelos de concurrencia optimistas y pesimistas. En la secciones siguientes se describe cómo se coordinan con estos modelos los métodos de cliente de caché. Para obtener más información acerca de la simultaneidad, vea Modelos de simultaneidad (Almacenamiento en caché de AppFabric 1.1).

Modelo de simultaneidad optimista

En el modelo de simultaneidad optimista, las actualizaciones de objetos en caché no toman bloqueos, sino que el cliente de caché lee primero la versión del objeto que se debe actualizar y envía la información sobre la versión junto con el objeto actualizado. El sistema sólo actualiza el objeto si la versión enviada coincide con la versión actual del objeto. Cada vez que se actualiza un objeto, se modifica su número de versión. De este modo se evita que la actualización sobrescriba los cambios de otra persona.

Método Descripción

Get

No toma ningún bloqueo por diseño; Get siempre se realiza correctamente si el elemento existe. Si se está actualizando el objeto, el método Get no espera y sólo se devuelve la versión actual del objeto.

GetCacheItem

Devuelve todos los objetos DataCacheItem. Además de los objetos en caché y otra información, como las etiquetas, también se devuelve la información sobre la versión de los objetos.

GetIfNewer

Se puede usar para comprobar si el objeto en caché ha cambiado en el origen de datos. Para minimizar el tráfico de red, el objeto en caché sólo se devuelve si hay una nueva versión disponible.

Add

No tiene ninguna sobrecarga relacionada con la concurrencia optimista. Add o bien se realiza correctamente, o bien falla.

Put

Es compatible con la simultaneidad optimista tomando la información de versión como parámetro opcional; Put sólo se realiza correctamente si el objeto que se va a reemplazar tiene la misma versión.

Remove

Es compatible con la simultaneidad optimista tomando la información de versión como parámetro opcional; Remove sólo se realiza correctamente si el objeto que se va a eliminar tiene la misma versión.

Modelo de simultaneidad pesimista

En el modelo de simultaneidad pesimista, el cliente bloquea explícitamente los objetos para realizar operaciones. Se rechazan otras operaciones que soliciten bloqueos (el sistema no bloquea solicitudes) hasta que se liberan los bloqueos. Cuando los objetos están bloqueados, se devuelve un controlador de bloqueo (como parámetro de salida). El controlador de bloqueo es necesario para desbloquear el objeto. En el caso de que el cliente falle antes de liberar un objeto bloqueado, se proporcionan tiempos de espera para liberar los bloqueos. Los objetos bloqueados no caducan nunca, pero pueden caducar inmediatamente después de que se desbloqueen si han superado la fecha de caducidad.

Nota

No se admiten las transacciones que abarcan operaciones. La aplicación que usa la memoria caché es la responsable de determinar el orden de los bloqueos y detectar interbloqueos, si existen.

WarningAdvertencia
Los objetos bloqueados en caché todavía pueden reemplazarse por cualquier cliente de caché, con el método Put. Las aplicaciones que admiten el almacenamiento en caché son responsables de usar PutAndUnlock de forma coherente para los elementos que usan el modelo de simultaneidad pesimista.

En la tabla siguiente se muestran los métodos que se pueden usar para bloquear y desbloquear un objeto.

Método Descripción

GetAndLock

Devuelve y bloquea el objeto almacenado en caché (si existe). Se producen errores en otras llamadas del método GetAndLock al mismo error de objeto mientras el bloqueo es válido. Las llamadas normales del método Get no se bloquean y siempre obtienen acceso a la última versión del objeto almacenado en caché.

PutAndUnlock

Actualiza el objeto bloqueado y, a continuación, libera el bloqueo. El controlador de bloqueo obtenido de GetAndLock es un parámetro obligatorio y debe coincidir con el controlador de bloqueo del objeto bloqueado para poder realizarlo correctamente.

Unlock

Desbloquea explícitamente un objeto almacenado en caché, en el caso de que el parámetro controlador de bloqueo coincida con el objeto bloqueado. Unlock también admite la extensión de la expiración del elemento actual para evitar que expire tan pronto se desbloquee (en el caso de que se desbloqueado pasada la fecha de expiración).

Vea también

Conceptos

Introducción a las clases
Métodos de caché básicos
Métodos basados en etiquetas
Métodos de configuración
Uso de los métodos de caché básicos
Conceptos de almacenamiento en caché de AppFabric (Almacenamiento en caché de AppFabric 1.1)

  2012-03-05