Cache di secondo livello di Entity Framework con NCache

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 documentazione

Perché usare NCache come cache di secondo livello di Entity Framework?

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 è una cache di secondo livello di Entity Framework ideale per configurazioni multi-server e dovresti usarla per questi motivi:

  1. NCache è estremamente veloce: NCache è una cache distribuita estremamente veloce e offre tempi di risposta inferiori al millisecondo.
  2. NCache fornisce scalabilità lineare: NCache non diventa mai un collo di bottiglia della scalabilità. Ti consente di aggiungere server al cluster di cache per ottenere una scalabilità lineare e gestire carichi di transazione estremi.
  3. La dimensione della cache può crescere all'infinito: NCache fornisce il partizionamento della cache e raggruppa insieme la memoria di tutti i server cache. Pertanto, puoi aumentare lo spazio di archiviazione della cache semplicemente aggiungendo più server al cluster di cache.
  4. NCache replica i dati in modo intelligente: NCache ti consente di replicare in modo intelligente la cache e senza compromettere le prestazioni. Pertanto, non perderai alcun dato della cache anche se un server della cache non funziona.
  5. NCache ti offre il 100% di operatività: NCache dispone di un cluster di cache dinamica con autoriparazione senza singoli punti di errore. Di conseguenza, NCache ti consente di aggiungere o rimuovere server cache in fase di esecuzione senza interrompere l'applicazione o la cache.

Usa il NCache come cache di secondo livello di Entity Framework senza programmazione

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>

Usa la modalità di analisi e la modalità di memorizzazione nella cache

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.

NCache Funzionalità per la cache di secondo livello di Entity Framework

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.

  1. Sincronizza la cache con il database: Alcuni dati presenti nella cache potrebbero essere modificati nel database all'insaputa o senza il coinvolgimento dell'applicazione. E, per questi dati, è possibile specificare le classi corrispondenti per la funzionalità di sincronizzazione del database NCache. Questo permette NCache per connettersi quindi al database, monitorare le modifiche dei dati e quindi aggiornare automaticamente la cache per garantire che i dati nella cache siano sempre sincronizzati con il database. NCache fornisce SqlDependency per SQL Server, OracleDependency per Oracle e DbDependency per qualsiasi database compatibile con OLEDB.
  2. Scadenza assoluta: Scadenza assoluta tra NCache è specificato separatamente per ciascun elemento memorizzato nella cache ed è un valore data-ora quando NCache fa scadere automaticamente l'oggetto. Per Entity Framework, NCache ti chiede di specificare un valore "intervallo" e quindi utilizza la formula "Now() + interval" per calcolare il valore data-ora per la scadenza assoluta.
  3. Scadenza scorrevole: Scadenza scorrevole NCache è specificato separatamente per ogni elemento memorizzato nella cache ed è un valore di intervallo. NCache fa scadere l'elemento memorizzato nella cache se non è stato né recuperato né aggiornato per questo intervallo. È possibile specificare questo intervallo tramite NCache File di configurazione del provider della cache di secondo livello di Entity Framework.
  4. Serializzazione compatta: Ogni volta che un oggetto .NET viene memorizzato nella cache in una cache out-of-process o distribuita, deve prima essere serializzato. Inoltre, la normale serializzazione .NET è lenta perché usa .NET Reflection in fase di esecuzione. NCache fornisce un modo per registrare le tue lezioni NCache ed NCache genera codice di serializzazione quando l'applicazione si connette alla cache. NCache quindi compila questo codice in memoria e lo utilizza per la serializzazione. Questo è quasi 10 volte più veloce della normale serializzazione .NET. Inoltre, puoi utilizzare questa funzionalità con Entity Framework. Basta registrare le classi Entity Entity Framework con NCache per la serializzazione compatta.

utilizzando NCache Direttamente dalle applicazioni 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.

NCache Funzionalità mancanti nella cache di secondo livello di Entity Framework

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.

  1. Operazioni in blocco
  2. Dipendenze della cache
    • Basato su chiave
    • Basato su file
    • Custom
  3. Gruppi e sottogruppi
  4. tag
  5. Tag con nome
  6. Ricerche basate su Object Query Language (OQL) e LINQ
  7. Blocca e sblocca gli elementi memorizzati nella cache
  8. Versioni degli elementi della cache
  9. API di streaming
  10. Read-through, Write-through e Write-behind
  11. Notifiche di eventi
    • Basato sull'articolo (aggiorna e rimuovi)
    • Uso generico (aggiungi, aggiorna, rimuovi)
    • Custom
  12. Interrogazione continua
  13. Condivisione dei dati di runtime
  14. Caricatore di cache

Cosa fare dopo?

© Copyright Alachisoft 2002 - . Tutti i diritti riservati. NCache è un marchio registrato di Diyatech Corp.