Entity Framework es un framework de mapeo relacional de objetos de Microsoft para .NET de eficacia probada. Permite trabajar con datos relacionales mediante objetos de dominio. Además, elimina la necesidad de escribir la mayor parte del código de persistencia de bases de datos que de otro modo sería necesario.
Entity Framework se utiliza en aplicaciones con un alto volumen de transacciones, donde el rendimiento y la escalabilidad son cruciales. Sin embargo, en la mayoría de estas aplicaciones, la base de datos se convierte rápidamente en un cuello de botella. A diferencia de la capa de aplicación, donde se pueden agregar más servidores de aplicaciones según sea necesario para escalar, no es posible hacer lo mismo con la capa de base de datos.
La única forma de lograr esta escalabilidad es con caché distribuida como NCacheEs una caché distribuida extremadamente rápida y escalable para aplicaciones .NET. Permite almacenar en caché los datos de la aplicación, reducir las costosas visitas a la base de datos y mejorar el rendimiento y la escalabilidad de la aplicación.
La caché de segundo nivel de Entity Framework (caché L2) es un patrón de almacenamiento en caché que preserva los datos en diferentes contextos de bases de datos y sesiones de usuario. Si bien Entity Framework 6.x (Classic) no la ofrece de forma nativa, NCache Se integra como un proveedor ADO.NET personalizado. Esto permite transferir consultas a un clúster distribuido, garantizando una escalabilidad lineal y un tiempo de actividad del 100 % sin modificar el código.
Si su aplicación Entity Framework se ejecuta en un entorno multiservidor, necesitará una caché distribuida como caché de segundo nivel de Entity Framework. NCache es una opción ideal para configuraciones de múltiples servidores y deberías usarla por las siguientes razones:
Lo mejor de usar NCache Con Entity Framework, no se requiere programación. Simplemente modifica los archivos de configuración de tu aplicación agregando un interceptor en el... sección y sobrescribiendo las configuraciones de invariantName y type. Aquí hay un ejemplo de aplicación.config cambios:
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
<interceptors>
<interceptor type="Alachisoft.NCache.Integrations.EntityFramework.Caching.EFCommandInterceptor, Alachisoft.Integrations.EntityFramework.CachingProvider"/>
</interceptors>
</entityFramework>
El NCache El proveedor de caché de segundo nivel de Entity Framework se integra como un proveedor ADO.NET personalizado. Este proveedor permite ejecutar en modo de análisis, donde registra todas las consultas que la aplicación emite en Entity Framework. Estas consultas se registran en un archivo junto con el número de veces que se llamaron durante este modo de análisis. A continuación, se muestra un ejemplo:
<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>
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 Mediante cambios en app.config, obtendrá una caché distribuida de nivel empresarial para su aplicación. A continuación, se presentan algunas características. NCache proporciona aplicaciones de Entity Framework.
Aunque, usando NCache Como el caché de segundo nivel de Entity Framework es muy rápido y fácil, solo le proporciona un conjunto limitado de NCache características. La razón de esto es que NCache Está limitado por el hecho de que está conectado como un proveedor ADO.NET personalizado y debe gestionar consultas SQL. Existen numerosos NCache características que no podrá utilizar si decide usarlo 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 API Llama como cualquier otra aplicación .NET que no sea Entity Framework. Si bien este camino requiere un pequeño esfuerzo de programación, podría considerar que los beneficios compensan el esfuerzo 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.
| Categoría de característica | Elemento | Proveedor de almacenamiento en caché de EF (sin código) | NCache API directa |
|---|---|---|---|
| Operaciones avanzadas | Operaciones masivas | no disponible | Disponible |
| Agrupación y búsqueda | Etiquetas y Etiquetas con nombre | no disponible | Disponible |
| Consulta | SQL y búsqueda LINQ | no disponible | Disponible |
| Concurrencia | Cerraduras y desbloquear objetos | no disponible | Disponible |
| Integridad | Control de versiones de elementos de caché | no disponible | Disponible |
| Fuente de datos | Leer de parte a parte / Escriba por medio de / escribir detrás | no disponible | Disponible |
| Mensajes | Notificaciones de eventos (Artículo, General, Personalizado) | no disponible | Disponible |
| Mantenimiento | Cargador de caché y actualización | no disponible | Disponible |
© Copyright Alachisoft 2002 - Todos los derechos reservados. NCache es una marca registrada de Diyatech Corp.