Ampliar la clase DataCacheStoreProvider (Almacenamiento en caché de AppFabric 1.1)
Este tema describe cómo crear un proveedor de lectura en primer plano o de escritura en segundo plano para Almacenamiento en caché de Windows Server AppFabric. Un proveedor se crea implementando la clase base abstracta DataCacheStoreProvider.
Crear el proyecto de proveedor
En Visual Studio 2010, cree un nuevo proyecto de Biblioteca de clases.
Agregue una referencia al ensamblado Microsoft.ApplicationServer.Core.dll. De manera predeterminada, este ensamblado se encuentra en .\Program Files\Windows Server AppFabric.
Abra el archivo de origen de este proyecto, que será Class1.cs o Class1.vb en función del idioma del proyecto.
En la parte superior del archivo de origen, agregue una instrucción using (Importaciones en Visual Basic) al espacio de nombres Microsoft.ApplicationServer.Caching.
using Microsoft.ApplicationServer.Caching;
Imports Microsoft.ApplicationServer.Caching
Modifique la clase que se va a heredar de DataCacheStoreProvider. Tenga en cuenta que el editor de código Visual Studio 2010 incluye una función para crear funciones vacías a partir de esta clase de forma automática. En Visual C#, haga clic con el botón secundario en la clase DataCacheStoreProvider y seleccione Implementar clase abstracta. En Visual Basic, presione Entrar después de la línea Inherits.
namespace RTProvider { public class Provider : DataCacheStoreProvider
Public Class Provider Inherits DataCacheStoreProvider
Firme el ensamblado con un nombre seguro para poder instalarlo en la Caché de ensamblado global. En el Explorador de soluciones, haga clic con el botón secundario en el proyecto y seleccione Propiedades. En la sección Firma de las propiedades del proyecto, active la casilla de verificación Firmar el ensamblado. En la lista desplegable Seleccione un archivo de clave de nombre seguro, seleccione un archivo de clave existente o seleccione <Nuevo...> para crear uno nuevo.
Agregar un constructor público
Cada proveedor debería implementar un constructor público con la siguiente firma:
public ProviderClass(string cacheName, Dictionary<string,string> config)
En el ejemplo anterior, sustituya ProviderClass
por el nombre de la clase que implementa los métodos de DataCacheStoreProvider. Se llama a este constructor cuando una caché habilita primero la lectura en primer plano o la escritura en segundo plano en un host de caché en ejecución. También se le llama cada vez que el host de caché se reinicia. El constructor toma los dos siguientes parámetros:
Parámetro | Descripción |
---|---|
cacheName |
string es el nombre de la caché asociada a este proveedor. Este nombre se puede almacenar para un uso futuro. Por ejemplo, en el caso de fuera necesario conocer el nombre de la caché para crear objetos DataCacheItem nuevos en respuesta a solicitudes de lectura. |
config |
Este objeto Dictionary<string,string> contiene las opciones de configuración del proveedor. Estos valores son exclusivos del proveedor y su configuración necesita un tiempo de espera. Se pasan utilizando el parámetro ProviderSettings del comando New-Cache o Set-CacheConfig de Windows Powershell. |
Implementar los métodos del proveedor
El proveedor debe implementar los métodos de la clase DataCacheStoreProvider. Tenga en cuenta que si solo va a crear un proveedor de lectura en primer plano, no necesita implementar los métodos "Write". Del mismo modo, si solo va a crear un proveedor de escritura en segundo plano, no necesita implementar los métodos "Read".
En general, los nombres de los métodos describen sus objetivos. La siguiente tabla describe los métodos sin incluir las sobrecargas.
Método | Descripción |
---|---|
Read |
Se llama cuando un cliente de caché solicita un elemento almacenado que no existe actualmente en la caché asociada. |
Write |
Se llama para los elementos que los clientes de caché han agregado o cambiado recientemente en la caché. |
Delete |
Se llama cuando un cliente de caché elimina un elemento de la caché asociada. |
Dispose |
Elimina el proveedor. |
Existen dos métodos de lectura. El primer método de lectura se pasó a un parámetro DataCacheItemKey que identifica el elemento único que se va a devolver. La otra sobrecarga de lectura se pasó a una colección de objetos DataCacheItemKey para devolver y regresar en objetos Dictionary de DataCacheItemKey y DataCacheItem. Este objeto Dictionary está vacío en primer lugar y lee aquellos objetos que deben agregarse antes de volver al método de lectura. Tenga en cuenta que utiliza la clase DataCacheItemFactory para crear los elementos solicitados tal y como se muestra en el siguiente ejemplo.
DataCacheItem dataCacheItem = DataCacheItemFactory.GetCacheItem(key, CACHE_NAME, objectValue, null);
En el ejemplo anterior, la cadena CACHE_NAME
debe estar definida con el mismo nombre de la caché que previamente pasó al constructor sobrecargado. key
es el DataCacheItemKey solicitado. objectValue
es el objeto que debería devolverse a los clientes para esta clave de caché.
Del mismo modo, existen dos métodos de escritura. El primer método de escritura se pasó a un objeto DataCacheItem. Tenga en cuenta que la propiedad Key de este objeto contiene el DataCacheItemKey asociado y la propiedad Value contiene el valor. El otro método de escritura se pasó a objetos Dictionary de DataCacheItemKey y DataCacheItem.
Importante |
---|
Es importante eliminar los elementos del objeto Dictionary<DataCacheItemKey, DataCacheItem> a medida que los escribe en el almacén de servidor. Si los elementos no se eliminan, la caché lo considera como un error de escritura y vuelve a intentar la operación más adelante. |
Control de errores
Si se producen errores, puede lanzar el objeto de excepción DataCacheStoreException. El resultado de esta excepción variará en función de si la excepción tiene lugar durante los métodos Read o Write. En la tabla siguiente se describen estas diferencias.
Método | Resultado de la excepción |
---|---|
Read |
El cliente de caché que realiza la lectura recibe una excepción DataCacheException con la propiedad ErrorCode igual a DataCacheErrorCode.ReadThroughProviderFailure (el texto de la excepción incluye el código "<ERRCA0025>"). |
Write |
Se considera que se ha producido un error en la escritura y se volverá a intentar según la directiva de reintentos de la caché para las operaciones de lectura en segundo plano. No se informa al cliente de caché de este error. |
Existen tres valores DataCacheErrorCode posibles que un cliente de caché puede recibir durante las llamadas DataCache.Get que acceden al proveedor de lectura en primer plano.
DataCacheErrorCode.ReadThroughProviderFailure
DataCacheErrorCode.ReadThroughProviderDidNotReturnResult
DataCacheErrorCode.ReadThroughProviderNotFound
Del mismo modo, tenga en cuenta que el tiempo empleado en los métodos de lectura del proveedor se agrega al tiempo de solicitud total del método DataCache.Get. Debido a esto, puede necesitar aumentar el tiempo de espera de solicitud a la cuenta para cualquier retraso introducido por el proveedor. Para obtener más información, consulte Configuración de tiempos de espera de clientes de caché (Almacenamiento en caché de Windows Server AppFabric).
Probar y depurar el proveedor
En los casos de desarrollo y prueba, puede preferirse instalar un clúster de caché de nodo único en la máquina de desarrollo. Esto le permite volver a crear y volver a agregar rápidamente el ensamblado a la Caché de ensamblado global y reiniciar el clúster de caché local. Los siguientes pasos muestran cómo depurar el proveedor.
Abra el proyecto del proveedor en Visual Studio 2010.
En el menú Depurar, haga clic en Asociar al proceso.
Compruebe Mostrar los procesos de todos los usuarios y Mostrar los procesos de todas las sesiones.
Seleccione el proceso DistributedCacheService.exe.
Haga clic en el botón Asociar.
Defina los puntos de interrupción en el código del proveedor y realice las operaciones en la caché desde otra aplicación que resulte en la llamada a los métodos del proveedor.
Advertencia |
---|
Detener la sesión de depuración sin desasociar el depurador detendrá el servicio de almacenamiento en caché en la máquina. Esto provoca la pérdida de todos los datos almacenados en dicha máquina. |
Vea también
Conceptos
Implementar un proveedor de lectura en primer plano o de escritura en segundo plano (Almacenamiento en caché de AppFabric 1.1)
Habilitar la lectura en primer plano y la escritura en segundo plano en una caché (Almacenamiento en caché de AppFabric 1.1)
2012-03-05