Integración de caché de Entity Framework
Entity Framework proporciona abstracción de los datos relacionales subyacentes almacenados en una base de datos y presenta su esquema conceptual a la aplicación, evitando la necesidad de escribir código de persistencia de la base de datos. Se puede ver en la mayoría de las aplicaciones de alta transacción donde la escalabilidad y el rendimiento no pueden verse comprometidos. Sin embargo, en algunos casos, la base de datos se convierte en un cuello de botella ya que el nivel de la base de datos no admite la adición de más servidores. Entonces, para lograr escalabilidad, NCache proporciona un proveedor de caché en memoria conectable para actuar como un caché de segundo nivel y almacenar en caché los resultados de la consulta.
Las ventajas de usar NCache como caché de segundo nivel en Entity Framework, las aplicaciones son:
- Integración perfecta: NCache El proveedor Entity Framework Cache se puede integrar en la aplicación sin ningún cambio de código.
- Mejor rendimiento: NCache El proveedor de caché de Entity Framework intercepta todas las llamadas de consulta de la base de datos y almacena en caché los conjuntos de resultados de la consulta. Esto aumenta el rendimiento de las aplicaciones al evitar costosos viajes a la base de datos.
- Escalabilidad de aplicación: NCache, un recurso de memoria confiable y compartido para almacenamiento, permite compartir contexto transaccional entre diferentes entidades en cualquier aplicación de Entity Framework.
El proveedor de almacenamiento en caché puede realizar varias funciones, como:
- Administrar conexiones, comandos, transacciones y lectores de datos.
- Monitoreo de consultas y comandos antes de que se ejecuten.
La siguiente figura muestra cómo y dónde NCache El proveedor de Entity Framework se conecta a una aplicación de Entity Framework.
Modos de integración de caché de Entity Framework
Hay dos modos de ejecución para el NCache Proveedor de almacenamiento en caché de Entity Framework:
- Modo de análisis
- Modo de almacenamiento en caché
Estos modos son mutuamente excluyentes, por lo que NCache El proveedor de almacenamiento en caché de Entity Framework no se puede ejecutar en ambos modos al mismo tiempo. Puede estar en modo "Almacenamiento en caché" o en modo "Análisis".
Note
Recomendación: Primero, ejecute la aplicación Entity Framework dentro del modo de análisis de NCache Proveedor de almacenamiento en caché de Entity Framework para analizar qué consultas deben usarse para la ejecución.
Modo de análisis
El modo de análisis es un modo de transferencia en el que no se realiza el almacenamiento en caché, sino que la aplicación examina el conjunto de consultas que se utilizarán. Este modo también proporciona las siguientes funciones:
Supervisar consultas: Esto ayuda a determinar la cantidad de veces que la aplicación Entity Framework ejecuta una consulta. Esto ayuda al usuario a filtrar las consultas de alta frecuencia para el almacenamiento en caché.
Generar informes: Esto es para consultas con sintaxis adecuada y dispuestas en orden descendente. También permite al usuario elegir consultas relevantes y copiarlas para almacenarlas en caché.
<analysis-report>
<query>
<!--Call count = 12-->
<cache-query query-text="SELECT [Extent1].[ProductID] AS [ProductID], [Extent1].[ProductName] AS [ProductName], [Extent1].[SupplierID] AS [SupplierID], [Extent1].[CategoryID] AS [CategoryID], [Extent1].[QuantityPerUnit] AS [QuantityPerUnit], [Extent1].[UnitPrice] AS [UnitPrice], [Extent1].[UnitsInStock] AS [UnitsInStock], [Extent1].[UnitsOnOrder] AS [UnitsOnOrder], [Extent1].[ReorderLevel] AS [ReorderLevel], [Extent1].[Discontinued] AS [Discontinued] FROM [dbo].[Products] AS [Extent1] WHERE 5 = [Extent1].[ProductID]"/>
<cache-policy vary-by-cache-param="" expiration-type="Absolute" enabled="True" expiration-time="30sec" dbsyncdependency="False" resyncProviderName="EFResync"/>
</query>
</analysis-report>
Modo de almacenamiento en caché
Este modo está diseñado para el uso real de NCache en aplicaciones de Entity Framework. En este punto, las consultas y sus conjuntos de resultados se almacenan en caché. El modo de almacenamiento en caché solo admite aquellas consultas que se proporcionan en el archivo de configuración, es decir efcaching.ncconf.
NCache Funciones admitidas con Entity Framework
NCache actúa como un caché de segundo nivel para las aplicaciones de Entity Framework, proporcionando las siguientes características, que se pueden especificar a través del Configuración de almacenamiento en caché de Entity Framework archivo:
Sincronización de caché con base de datos: En algunos casos, algunos datos del caché se pueden cambiar en la base de datos sin la participación de la aplicación. Por lo tanto, puede especificar las clases correspondientes para el sincronización de base de datos característica de NCache. Esto permite NCache para conectarse con la base de datos, controlar los cambios de datos y actualizar la memoria caché automáticamente para garantizar que los datos de la memoria caché estén siempre 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.
Caducidad absoluta: Caducidad absoluta se especifica por separado para cada elemento en caché y es un
DateTime
valor que especifica cuando NCache debería caducar automáticamente el artículo. Para el marco de la entidad, NCache le pide que especifique un "intervalo" en segundos y luego utiliza elNow + interval
fórmula para calcular el valor de fecha y hora para el vencimiento absoluto.Caducidad móvil: Caducidad móvil se especifica por separado para cada elemento en caché y es un valor de intervalo (segundos). NCache caduca el elemento almacenado en caché si no se ha obtenido ni actualizado para este intervalo.
Serialización compacta: NCache le permite registrar sus clases de Entity Framework para Serialización compacta y genera código de serialización cuando su aplicación se conecta al caché. NCache compila dinámicamente este código en la memoria y lo usa para la serialización, lo que aumenta el rendimiento de la serialización.
En esta sección
Usar NCache como caché de segundo nivel de Entity Framework (EF)
Explica cómo configurar y usar NCache como caché de segundo nivel de Entity Framework.
Archivo de configuración de almacenamiento en caché de Entity Framework (EF)
Explica los cambios necesarios en efcaching.ncconf archivo para ejecutar la aplicación Entity Framework en NCache.
Proveedor de resincronización de Entity Framework
Explica el mecanismo de resincronización de NCache y cómo mantiene los datos actualizados en todo el clúster.