Entity Framework è un framework Microsoft di mapping relazionale a oggetti per .NET, ampiamente collaudato. Consente di lavorare con dati relazionali tramite oggetti di dominio. Inoltre, elimina la necessità di scrivere gran parte del codice di persistenza del database che altrimenti sarebbe necessario.
Entity Framework viene utilizzato in applicazioni ad alto numero di transazioni, dove prestazioni e scalabilità sono fondamentali. Tuttavia, nella maggior parte di queste applicazioni, il database diventa rapidamente un collo di bottiglia. Poiché, a differenza del livello applicativo, in cui è possibile aggiungere più server applicativi in base alle esigenze di scalabilità, non è possibile fare lo stesso con il livello database.
L'unico modo per ottenere questa scalabilità è con una cache distribuita come NCacheSi tratta di una cache distribuita estremamente veloce e scalabile per applicazioni .NET. Consente di memorizzare nella cache i dati delle applicazioni, ridurre i costosi interventi sul database e migliorare le prestazioni e la scalabilità delle applicazioni.
Entity Framework Second Level Cache (L2 Cache) è un modello di caching che preserva i dati in diversi contesti di database e sessioni utente. Sebbene Entity Framework 6.x (Classic) non lo fornisca in modo nativo, NCache Si integra come provider ADO.NET personalizzato. Ciò consente di trasferire le query a un cluster distribuito, garantendo scalabilità lineare e uptime del 100% senza modificare il codice.
Se l'applicazione Entity Framework è in esecuzione in un ambiente multi-server, è necessaria una cache distribuita come cache di secondo livello di Entity Framework. E, NCache è un'opzione ideale per configurazioni multi-server e dovresti utilizzarla per i seguenti motivi:
La cosa migliore dell'uso NCache con Entity Framework è che non è richiesta alcuna programmazione da parte tua. Devi semplicemente modificare i file di configurazione della tua applicazione aggiungendo un intercettore nel sezione e sovrascrivendo le configurazioni invariantName e type. Ecco un esempio di app.config modifiche:
<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>
Migliori NCache Il provider di cache di secondo livello di Entity Framework si integra come provider ADO.NET personalizzato. Questo provider consente l'esecuzione in modalità di analisi, registrando tutte le diverse query inviate dall'applicazione a Entity Framework. Queste query vengono registrate in un file insieme al conteggio delle volte in cui la query è stata chiamata durante questa modalità di analisi. Di seguito è riportato un esempio:
<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>
Ciò ti consente di determinare quali query desideri memorizzare nella cache e per quanto tempo. Puoi anche specificare la sincronizzazione del database per alcune o tutte le tue query.
Collegando NCache Provider di cache di secondo livello di Entity Framework: tramite modifiche ad app.config, otterrai una cache distribuita di livello aziendale per la tua applicazione. Di seguito sono riportate alcune funzionalità. NCache fornisce app Entity Framework.
Anche se, usando NCache poiché la cache di secondo livello di Entity Framework è molto veloce e semplice, fornisce solo un set limitato di NCache caratteristiche. La ragione di ciò è questa NCache è vincolato dal fatto che è collegato come provider ADO.NET personalizzato e deve gestire il livello di query SQL. Esistono numerosi NCache funzionalità che non potrai utilizzare se decidi di utilizzarlo come provider di cache di secondo livello di Entity Framework.
L'alternativa per te è usare NCache direttamente dall'interno dell'applicazione Entity Framework rendendo NCache API chiamate come tutte le altre applicazioni .NET non Entity Framework. Sebbene questo percorso richieda un piccolo sforzo di programmazione, si potrebbe decidere che i vantaggi superino lo sforzo di programmazione aggiuntivo.
Di seguito è riportato un elenco di funzionalità che ti mancherebbero se lo utilizzassi come cache di secondo livello di Entity Framework rispetto a se lo utilizzassi NCache direttamente dalla tua applicazione.
| Categoria di caratteristiche | Caratteristica | Fornitore di caching EF (senza codice) | NCache API diretta |
|---|---|---|---|
| Operazioni avanzate | Operazioni di massa | non Disponibile | Disponibile |
| Raggruppamento e ricerca | Tags and Tag con nome | non Disponibile | Disponibile |
| Interrogazione | SQL e ricerca LINQ | non Disponibile | Disponibile |
| Concorrenza | Blocco e sbloccare gli oggetti | non Disponibile | Disponibile |
| Integrità | Controllo delle versioni degli elementi della cache | non Disponibile | Disponibile |
| Fonte di dati | Lettura / Scrivere attraverso / Scrivi dietro | non Disponibile | Disponibile |
| Messaging | Notifiche di eventi (Articolo, Generale, Personalizzato) | non Disponibile | Disponibile |
| Manutenzione | Caricatore di cache e aggiornamento | non Disponibile | Disponibile |
© Copyright Alachisoft 2002 - . Tutti i diritti riservati. NCache è un marchio registrato di Diyatech Corp.