Caché de segundo nivel de Entity Framework con NCache

Entity Framework es un popular marco de mapeo relacional de objetos para .NET de Microsoft. Le permite trabajar con datos relacionales a través de objetos de dominio. Y elimina la necesidad de la mayor parte del código de persistencia de la base de datos que de otro modo necesitaría escribir.

La popularidad de Entity Framework ha hecho que se utilice con frecuencia en aplicaciones de alta transacción donde el rendimiento y la escalabilidad son críticos. Pero, en la mayoría de los casos de transacciones elevadas, la base de datos se convierte rápidamente en un cuello de botella. Esto se debe a que, a diferencia del nivel de aplicación, donde puede agregar más servidores de aplicaciones a medida que necesita escalar, no puede hacer lo mismo con el nivel de base de datos.

La única forma de lograr esta escalabilidad es con un caché distribuido como NCache. NCache es un caché distribuido extremadamente rápido y escalable para aplicaciones .NET. Le permite almacenar en caché los datos de la aplicación, reducir esos costosos viajes a la base de datos y mejorar el rendimiento y la escalabilidad de su aplicación.

Aunque Entity Framework no proporciona un modelo de proveedor de caché de segundo nivel (segundo nivel), NCache ha implementado un proveedor ADO.NET personalizado para Entity Framework con el que NCache Puede conectar y almacenar en caché los resultados de las consultas de Entity Framework. Esto le permite comenzar a usar el caché distribuido en su aplicación Entity Framework sin realizar ningún cambio en el código.

Ver Documentación

Por qué usar NCache como caché de segundo nivel de Entity Framework?

Si su aplicación Entity Framework se ejecuta en un entorno de varios servidores, necesita una memoria caché distribuida como una memoria caché de segundo nivel de Entity Framework. Y, NCache es una caché de segundo nivel de Entity Framework ideal para configuraciones de varios servidores y debe usarla por estos motivos:

  1. NCache es extremadamente rápido: NCache es un caché distribuido extremadamente rápido y le brinda tiempos de respuesta inferiores a milisegundos.
  2. NCache proporciona escalabilidad lineal: NCache nunca se convierte en un cuello de botella de escalabilidad. Le permite agregar servidores al clúster de caché para lograr escalabilidad lineal y manejar cargas de transacciones extremas.
  3. El tamaño de la caché puede crecer infinitamente: NCache proporciona partición de caché y agrupa la memoria de todos los servidores de caché. Por lo tanto, puede aumentar el almacenamiento de caché simplemente agregando más servidores al clúster de caché.
  4. NCache replica datos de forma inteligente: NCache Le permite replicar el caché de forma inteligente y sin comprometer el rendimiento. Por lo tanto, no perderá ningún dato de caché incluso si un servidor de caché falla.
  5. NCache le da 100% de tiempo de actividad: NCache tiene un clúster de caché dinámico de recuperación automática sin un único punto de falla. Como resultado, NCache le permite agregar o eliminar servidores de caché en tiempo de ejecución sin detener su aplicación o el caché.

Uso NCache como caché de segundo nivel de Entity Framework sin programación

Lo mejor de usar NCache con Entity Framework es que no se requiere programación de su parte. Simplemente modifique los archivos de configuración de su aplicación y especifique NCache como su proveedor de caché de segundo nivel. Aquí hay un ejemplo de cambios en app.config:

<interceptors>
	<interceptor type="Alachisoft.NCache.Integrations.EntityFramework.Caching.EFCommandInterceptor, 
	                   Alachisoft.Integrations.EntityFramework.CachingProvider" />
</interceptors>

Usar el modo de análisis y el modo de almacenamiento en caché

Como NCache El proveedor de caché de segundo nivel de Entity Framework se conecta como un proveedor ADO.NET personalizado, le permite ejecutarlo en modo de análisis donde registra todas las diferentes consultas que su aplicación está emitiendo a Entity Framework. Estas consultas se registran en un archivo junto con un recuento de cuántas veces se llamó a esta consulta durante este modo de análisis. A continuación se muestra un ejemplo:

<analysis-report>
<!--Call-count = 21-->
 <query query-text="" ["SELECT FROM Products"] | 
        [stored-procedure-name = ""] 
        caching = "true"
        expiration-type="absolute" | 
        sliding = "" 
        expiration-time="180"
        dbsyncdependency = "true"/>
</analysis-report>

Esto le permite determinar qué consultas desea almacenar en caché y durante cuánto tiempo. También puede especificar la sincronización de la base de datos para algunas o todas sus consultas.

NCache Características de la caché de segundo nivel de Entity Framework

Al enchufar NCache El proveedor de caché de segundo nivel de Entity Framework a través de los cambios de app.config, obtendrá un caché distribuido de nivel empresarial para su aplicación. Aquí hay algunas características NCache proporciona aplicaciones de Entity Framework.

  1. Sincronizar caché con base de datos: Algunos datos que están en el caché pueden cambiarse en la base de datos sin el conocimiento o la participación de su aplicación. Y, para estos datos, puede especificar las clases correspondientes para la función de sincronización de bases de datos de NCache. Esto permite NCache para luego conectarse con la base de datos, monitorear los cambios de datos y luego actualizar el caché automáticamente para garantizar que los datos en el caché siempre estén sincronizados con la base de datos. NCache proporciona SqlDependency para SQL Server, OracleDependency para Oracle y DbDependency para cualquier base de datos compatible con OLEDB.
  2. Caducidad absoluta: Caducidad absoluta en NCache se especifica por separado para cada elemento almacenado en caché y es un valor de fecha y hora cuando NCache El artículo caduca automáticamente. Para el marco de entidad, NCache le pide que especifique un valor de "intervalo" y luego utiliza la fórmula "Ahora() + intervalo" para calcular el valor de fecha y hora para el vencimiento absoluto.
  3. Caducidad variable: Caducidad deslizante en NCache se especifica por separado para cada elemento almacenado en caché y es un valor de intervalo. NCache El elemento almacenado en caché caduca si no se ha recuperado ni actualizado durante este intervalo. Puede especificar este intervalo mediante NCache Archivo de configuración del proveedor de caché de segundo nivel de Entity Framework.
  4. Serialización compacta: Siempre que un objeto .NET se almacene en caché en una caché distribuida o fuera de proceso, primero se debe serializar. Además, la serialización normal de .NET es lenta porque utiliza .NET Reflection en tiempo de ejecución. NCache proporciona una manera para que pueda registrar sus clases con NCache y NCache Genera un código de serialización cuando su aplicación se conecta al caché. NCache luego compila este código en la memoria y lo usa para la serialización. Esto es casi 10 veces más rápido que la serialización .NET normal. Y puede utilizar esta función con Entity Framework. Simplemente registre sus clases de Entity Framework Entity con NCache para serialización compacta.

Usar NCache Directamente desde las aplicaciones de Entity Framework

Aunque, usando NCache Como la caché de segundo nivel de Entity Framework es muy rápida y sencilla, solo le proporciona un conjunto limitado de NCache características. La razón de esto es que NCache está obligado por el hecho de que está conectado como un proveedor ADO.NET personalizado y debe tratar a nivel de consulta SQL. Hay numerosos NCache características que no puede usar si decide usar NCache como proveedor de caché de segundo nivel de Entity Framework.

La alternativa para ti es usar NCache directamente desde su aplicación Entity Framework haciendo NCache Llamadas API como lo hacen todas las demás aplicaciones .NET que no son de Entity Framework. Aunque hay un pequeño esfuerzo de programación para tomar este camino, es posible que decida que los beneficios superan el esfuerzo de programación adicional.

NCache Características que faltan en la memoria caché de segundo nivel de Entity Framework

A continuación se muestra una lista de características que extrañaría si lo usara como Caché de segundo nivel de Entity Framework versus si usara NCache directamente desde su aplicación.

  1. Operaciones masivas
  2. Dependencias de caché
    • basado en clave
    • Basado en archivos
    • Personalizado
  3. Grupos y subgrupos
  4. Etiquetas
  5. Etiquetas con nombre
  6. Búsquedas basadas en lenguaje de consulta de objetos (OQL) y LINQ
  7. Bloqueo y desbloqueo de elementos almacenados en caché
  8. Control de versiones de elementos de caché
  9. API de transmisión
  10. Lectura, escritura y escritura retrasada
  11. Notificaciones de eventos
    • Basado en elementos (actualizar y eliminar)
    • Propósito general (agregar, actualizar, eliminar)
    • Personalizado
  12. Consulta continua
  13. Intercambio de datos en tiempo de ejecución
  14. Cargador de caché

¿Qué hacer a continuación?

© Copyright Alachisoft 2002 - Todos los derechos reservados. NCache es una marca registrada de Diyatech Corp.