NCache 4.4 - Documentación en línea

Configuración del proveedor de lectura directa

 
Se deben seguir los siguientes pasos para configurar e implementar el proveedor Read-Through con NCache.
 
Implementación de la interfaz IReadThruProvider
 
Para implementar IReadThruProvider, agregue las siguientes referencias en el ensamblaje del proveedor.
 
Alachisoft.NCache.Runtime.dll
 
Crea una clase que implemente Alachisoft.NCache.Runtime.DatasourceProviders.IReadThruProvider interfaz e implementarlo usando NCache Pesebre. NCache framework usará internamente esta clase para cargar los datos de la fuente de datos configurada si no está disponible en el caché.
 
Interfaz IReadThru
 
Vacío público Init(Sistema.Colecciones.IDiccionario parámetros, CordónID de caché);
Vacío público Disponer();
Vacío público CargarDesdeFuente(cadena llave, salir ProveedorCacheItemelemento de caché);
Público Diccionario<cadena, ProveedorCacheItem> CargarDesdeFuente(cadena[] llaves);
 
Titular
Descripción
En eso
Este método será llamado por NCache marco en el inicio de caché. El usuario puede usar este método para realizar tareas como asignar recursos, adquirir conexiones de fuentes de datos, etc. Este método toma como entrada la instancia de IDictionay de los argumentos pasados ​​al proveedor a través de NCache Administrador (ajustes de configuración). Le permite pasar la lista de parámetros al proveedor. Estos parámetros se pueden utilizar de muchas maneras. Por ejemplo, la cadena de conexión de una fuente de datos se puede especificar como un parámetro. Por lo tanto, proporciona una forma flexible de cambiar la configuración de la fuente de datos mientras se configura sin cambios de código.
El otro argumentoCacheId especifica el nombre de caché para el que se configura la lectura.
CargarDesdeFuente
Este método será llamado por NCache marco si el elemento requerido no se encuentra en el almacén de caché y NCache tiene que cargarlo a través de la fuente de datos configurada. Este método debe contener lógica para cargar un objeto desde una fuente de datos configurada. El primer argumento "clave" se refiere a la clave del elemento requerido. El segundo argumento es un parámetro de salida de tipo Provider CacheItem que debe instanciarse junto con las propiedades requeridas. Aquí puede asociar varias propiedades al elemento cargado antes de devolverlo a NCache marco de referencia. Asegúrese de que Provider CacheItem.Value asignado en este método sea "Serializable" porque NCache más tarde guardará ese elemento en la tienda de caché para cumplir con futuras solicitudes.
Al implementar este método, debe cuidar la seguridad de los subprocesos de código, ya que varias solicitudes Get pueden acceder a este método para la lectura. También tenga cuidado de evitar escenarios que causen bucles infinitos recursivos, por ejemplo, en este método, una solicitud Get con lectura en el mismo identificador de caché provocará una recursividad infinita.
Nota: En caso de Recibe, LoadFromSource (clave de cadena, fuera de ProviderCacheItemcacheItem) será llamado desde el proveedor mientras que para Obtener a granel, LoadFromSource(cadena[] teclas)
será llamado para cargar elementos desde la fuente de datos.
tiene
Este método será llamado por NCache framework cuando la memoria caché se detiene. Puede usar este método para realizar tareas como liberar recursos, eliminar conexiones, etc. Aquí puede liberar los recursos relacionados con la fuente de datos para una utilización efectiva de los recursos.
 
 
In NCacheLos proveedores de lectura directa se configuran en el nivel de caché, es decir, para cachés en clúster, todos los nodos contendrán configuraciones de proveedores y sus ensamblajes implementados.
 
 
Código de muestra para IReadThruProvider
 
// Contiene métodos utilizados para leer un objeto por su clave desde la fuente de datos maestra.
// Contiene métodos utilizados para leer un objeto por su clave desde la fuente de datos maestra.
clase pública SampleReadThruProvider : IReadThruProvider
{
privada Conexión Sql _conexión;
//Realizar tareas como asignar recursos o adquirir conexiones
 
vacío público En eso(IDiccionario parámetros, cadena ID de caché)
{
objeto connStringObject = parámetros["cuerda de control"];
cadena connString = connStringObject == nulo ? "" : connStringObject.ToString();
if (ConnString != "")
            _conexión = nueva Conexión Sql(cadenaConn);
try
{
  _conexión.Abrir();
}
coger (Excepción ex)
{
// manejar excepción
}
}
 
//Responsable de cargar un elemento desde la fuente de datos externa.
vacío público CargarDesdeFuente(cadena llave, salir ProveedorCacheItem elemento de caché)
{
//donde LoadFromDataSource es el método ficticio para cargar datos desde el origen de datos.
objeto valor = LoadFromDataSource(clave);
        elementocaché = nueva ProveedorCacheItem(valor);
        cacheItem.ResyncItemOnExpiration= verdadero;
}
 
//Realizar tareas asociadas con liberar, liberar o restablecer recursos.
vacío público Disponer()
{
if (_conexión != nulo)
            _conexión.Cerrar();
}
 
//Responsable de cargar la mayor parte de los elementos desde la fuente de datos externa.
público Diccionario<cadena, ProveedorCacheItem>CargarDesdeFuente(cadena[] llaves)
{
  try
  {
Diccionario<cadena, ProveedorCacheItem> diccionario = nueva Diccionario<cadena, ProveedorCacheItem> ();
cadena clave = nulo;
para (int índice = 0; índice
      {
          clave = claves[índice];
//donde LoadFromDataSource es el método ficticio para cargar datos desde el origen de datos.
          diccionario.Añadir(clave, nueva ProveedorCacheItem(LoadFromDataSource(clave)));
      }
volvemos diccionario;
  }
        coger (Excepción Exp)
  {
Tirar;
  }
}
objeto privado CargarDesdeFuenteDeDatos(cadena llave)
{
objeto objetoRecuperado = nulo;
// carga el elemento de su fuente de datos y completa el objeto recuperado
volvemos objetorecuperado;
}
}
 
Después de implementar y desplegar este proveedor, se pueden realizar llamadas directas a NCache para obtener los elementos necesarios. Si el artículo no está disponible localmente en el almacén de caché, NCache utilizará el método "LoadFromSource" en la clase de acceso a datos especificada para cargar elementos desde la fuente de datos.
 
Uso de lectura completa con operaciones básicas
 
Esta sección explicará el uso del proveedor de lectura directa después de configurarlo e implementarlo. NCache admite múltiples proveedores de lectura directa con aplicaciones.
 
Agregue los siguientes espacios de nombres en la aplicación:
 
usando Alachisoft.NCache.Caché.Web;
usando Alachisoft.NCache.Runtime.DatasourceProviders;
usando Alachisoft.NCache.Tiempo de ejecución;
 
NCache proporciona un Alachisoft.NCache.Web.Caching.DSReadOption enum para especificar la opción de lectura en las API.
Se pueden configurar múltiples proveedores de lectura a través de NCache. Se llamará al proveedor de lectura directa predeterminado si el nombre del proveedor específico no se menciona a través de la API. También puede usar proveedores que no sean los predeterminados mediante el uso de sobrecargas de API específicas del proveedor.
 
  • Obtener método
 
Titular
Descripción
Conseguir(cadena llave, Opción DSRead dsReadOption)
Obtenga el elemento del caché y use el proveedor predeterminado
Conseguir(cadena  llave, cadena nombre del proveedor, Opción DSRead dsReadOption)
Obtenga el elemento del caché y use el proveedor especificado
 
Producto producto =nulo;
try
{
cadena clave = "Producto: 1001";
objeto datos = cache.Get(clave, Opción DSRead.ReadThru);
if (datos != nulo)
    {
        producto = (Producto)datos;
    }
}
coger (OperaciónFailedException Exp)
{
// manejar excepción }
 
  • Método a granel
 
Para una mejor comprensión de la revisión de estas operaciones  Operaciones masivas. En este escenario, use la siguiente API
Titular
Descripción
IDiccionario Obtener a granel(cadena[] llaves, Opción DSRead dsReadOption)
Obtenga elementos masivos del caché y use el proveedor predeterminado
IDiccionario Obtener a granel(cadena[] llaves, cadena nombre del proveedor, Opción DSRead dsReadOption)
Obtenga elementos masivos del caché y use el proveedor especificado
 
try
{
Cordón[] teclas = { "Producto: 1001", "Producto: 1002", "Producto: 1003", "Producto: 1004" };
IDiccionario resultSet = cache.GetBulk(claves, Opción DSRead.ReadThru);
//IDictionary contiene claves y valores almacenados en caché
}
coger (OperaciónFailedException Exp)
{
// manejar excepción
}
 
  • Uso del proveedor de lectura directa con CacheItem
 
Para este escenario, use la siguiente API.
Titular
Descripción
Artículo de caché ObtenerElementoCaché(cadena clave Opción DSRead dsReadOption)
Obtenga CacheItem del caché y use el proveedor predeterminado
ObtenerElementoCaché(cadena llave, cadena nombre del proveedor, Opción DSRead dsReadOption)
Obtenga CacheItem del caché y use el proveedor especificado
 
cadena clave = "Producto: 1001";
Producto producto = nulo;
 
try
{
Artículo de caché datos = caché.GetCacheItem(clave, Opción DSRead.ReadThru);
if (datos!= nulo)
    {
        producto = (Producto)valor de los datos;
    }
}
coger (Excepción Exp)
{
// manejar excepción
}
 
Tenga en cuenta que puede especificar el proveedor predeterminado a través de NCManager o a través de client.ncconf ubicado en la carpeta de configuración de NCache directorio de instalación. Si no se proporciona el nombre del proveedor tanto en API como en client.ncconf, se utilizará automáticamente el proveedor predeterminado.
 
<cache id="micaché" proveedor predeterminado de lectura="nombreProveedorpredeterminado" cliente-caché-id="" cliente-caché-syncmode="optimista" proveedor de escritura a través predeterminado="" equilibrio de carga="¿Editas con tu equipo de forma remota?" servidor-ejecución-contexto="NCACHE">
  ...
</cache>
 
CacheInitParam también se puede usar para especificar proveedores.
NCache registra las advertencias en el registro de eventos de la aplicación en caso de una excepción durante la carga de los ensamblajes.
 
 
 
Vea también