Entity Framework è un motore di mappatura relazionale a oggetti che fornisce l'astrazione dal database relazionale sottostante e quindi semplifica notevolmente lo sviluppo. Grazie a questi vantaggi, con Entity Framework vengono sviluppate sempre più applicazioni e servizi data-centric e altamente transazionali.
Tuttavia, queste applicazioni ad alto traffico devono affrontare problemi di scalabilità. Sebbene il livello dell'applicazione sia scalabile, il database o l'archiviazione dei dati non sono in grado di tenere il passo con il numero crescente di transazioni che vengono inviate a loro.
Questo è dove a cache distribuita arriva perché consente di memorizzare nella cache i dati e ridurre quei costosi viaggi del database che causano colli di bottiglia nella scalabilità. Tuttavia, Entity Framework non fornisce una soluzione pronta all'uso che consente di utilizzare la cache distribuita nell'applicazione. Esistono tuttavia due modi per incorporare la cache distribuita nell'applicazione Entity Framework. Uno consiste nel modificare il codice dell'applicazione Entity Framework ed effettuare chiamate API dirette alla cache distribuita. In secondo luogo, è utilizzare una cache distribuita che ha implementato un provider ADO.NET personalizzato che incorpora la memorizzazione nella cache dietro le quinte.
Entity Framework ha modello di provider pubblico per ADO.NET fornitori dove puoi scrivere provider per 3rd banche dati di partito. NCache ha implementato un provider ADO.NET di Entity Framework personalizzato di per sé attraverso il quale è in grado di effettuare chiamate cache distribuite NCache API. Questo provider ADO.NET di Entity Framework personalizzato intercetta tutte le chiamate di query del database e inserisce i set di risultati di queste query in una cache distribuita. Quindi, NCache il provider Entity Framework personalizzato intercetta tutte le chiamate di query successive e restituisce semplicemente i risultati dalla sua cache distribuita anziché effettuare il costoso viaggio del database. Se il set di risultati per una query non esiste nella cache distribuita, la query viene eseguita sul database e il set di risultati viene quindi inserito nella cache distribuita.
E, NCache Il provider Entity Framework personalizzato deve inoltre garantire che i dati nella cache distribuita siano sempre coerenti e sincronizzati con il database. E, per quello NCache usa SqlCacheDependency fornito in .NET. SqlCacheDependeny registra una query SQL con SQL Server, quindi se una riga nel set di dati rappresentato da questa query viene modificata nel database, SQL Server genera una notifica di evento .NET a NCache. NCache cattura questo evento .NET e rimuove il set di risultati corrispondente dalla cache distribuita.
La figura 1 mostra come NCache Entity Framework Provider si collega a un'applicazione Entity Framework.
Figure 1 NCache Provider Entity Framework in uso
È possibile integrare NCache provider ADO.NET di Entity Framework personalizzato nella tua applicazione in soli quattro semplici passaggi:
- Sostituisci provider predefinito: Sostituisci il provider predefinito delle tue applicazioni con NCache Provider del framework di entità nel file app.config/web.config e .edmx.
- Registrati NCache fornitore: Registra la tua candidatura in NCache Configurazione di Entity Framework (efcaching.conf). In efcaching.config, puoi specificare facilmente il livello di registro e le politiche di scadenza, ecc. Per la tua applicazione Entity Framework.
- Esegui l'app in modalità analisi: Esegui la tua applicazione in modalità analisi. In modalità Analisi, NCache Il provider di Entity Framework, registra le query di Entity Framework eseguite dall'applicazione insieme alla loro frequenza. Sulla base dei registri puoi esaminare le query di Entity Framework che desideri memorizzare nella cache.
- Esegui normalmente l'app: Passa alla modalità di memorizzazione nella cache ed esegui la tua applicazione.
Quindi, utilizzando NCache Il provider di memorizzazione nella cache di Entity Framework consente di ottenere facilmente la scalabilità lineare senza modificare il codice dell'applicazione di Entity Framework.
Quindi, scarica una versione di prova di 60 giorni completamente funzionante di NCache Enterprise e provalo tu stesso.
Sì, funziona con qualsiasi driver del connettore Entity Framework come SQL, Oracle, MySQL, PostreSQL ecc. NCache il provider di memorizzazione nella cache agisce tra il provider di framework di entità ADO.NET e il provider di dati originale per memorizzare nella cache le risposte alle query.
Funziona solo con SQL Server o qualsiasi driver del connettore ENTITY Framework?