Entity Framework è un popolare framework di mappatura relazionale di oggetti per .NET di Microsoft. Ti consente di lavorare con dati relazionali tramite oggetti di dominio. Inoltre, elimina la necessità della maggior parte del codice di persistenza del database che altrimenti dovresti scrivere.
La popolarità di Entity Framework ne ha fatto sì che venga utilizzato frequentemente in applicazioni ad alto numero di transazioni in cui le prestazioni e la scalabilità sono fondamentali. Tuttavia, nella maggior parte dei casi di transazioni elevate, il database diventa rapidamente un collo di bottiglia. Questo perché, a differenza del livello applicazione in cui è possibile aggiungere più server applicazioni in base alle esigenze di scalabilità, non è possibile fare lo stesso con il livello database.
L'unico modo per ottenere questa scalabilità è con e come cache distribuita NCache. NCache è una cache distribuita estremamente veloce e scalabile per applicazioni .NET. Ti consente di memorizzare nella cache i dati dell'applicazione, ridurre i costosi spostamenti del database e migliorare le prestazioni e la scalabilità dell'applicazione.
Sebbene Entity Framework non fornisca un modello di provider di cache di secondo livello (2° livello), NCache ha implementato un provider ADO.NET personalizzato per Entity Framework con il quale NCache può collegare e memorizzare nella cache i risultati delle query di Entity Framework. Ciò consente di iniziare a utilizzare la cache distribuita nell'applicazione Entity Framework senza apportare modifiche al codice.
Visualizza la documentazioneSe 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 è una cache di secondo livello di Entity Framework ideale per configurazioni multi-server e dovresti usarla per questi motivi:
La cosa migliore dell'uso NCache con Entity Framework è che non è richiesta alcuna programmazione da parte tua. È sufficiente modificare i file di configurazione dell'applicazione e specificare NCache come provider di cache di secondo livello. Ecco un esempio di modifiche app.config:
<interceptors>
<interceptor type="Alachisoft.NCache.Integrations.EntityFramework.Caching.EFCommandInterceptor,
Alachisoft.Integrations.EntityFramework.CachingProvider" />
</interceptors>
Dal NCache Il provider di cache di secondo livello di Entity Framework si collega come provider ADO.NET personalizzato, ti consente di eseguirlo in modalità di analisi in cui registra tutte le diverse query che l'applicazione invia a Entity Framework. Queste query vengono registrate in un file insieme al conteggio di quante volte questa query è stata chiamata durante questa modalità di analisi. Di seguito è riportato un esempio:
<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>
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 le modifiche app.config, otterrai una cache distribuita di livello aziendale per la tua applicazione. Ecco alcune caratteristiche NCache fornisce app Entity Framework.
Anche se, usando NCache poiché Entity Framework Second Level Cache è molto semplice e veloce, 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 a livello di query SQL. Ce ne sono numerosi NCache funzionalità che non è possibile utilizzare se si decide di utilizzare NCache 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 Chiamate API come fanno tutte le altre applicazioni .NET non Entity Framework. Sebbene sia necessario un piccolo sforzo di programmazione per intraprendere questo percorso, potresti decidere che i vantaggi superano 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.