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ónSi 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:
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>
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.
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.
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.
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.