Con AppFabricIl ritiro del mercato, l'industria .NET rimane in asso per una cache distribuita in memoria per emergere come un contendente. Sebbene siano state avanzate alcune alternative, nessuna offre una soluzione completa come NCache.
NCache è una cache distribuita in memoria open source che fornisce agli utenti una cache distribuita estremamente veloce e linearmente scalabile che memorizza nella cache i dati delle applicazioni e riduce i costosi viaggi del database. NCache è un prodotto di mercato collaudato e precede App Fabric di circa cinque anni. E ci sono numerosi vantaggi che ti aspettano al termine del processo di migrazione, come vedremo di seguito.
NCache Dettagli AppFabric Fine AppFabric Migrazione
1. Mantenere la cache fresca
La sincronizzazione del database è una caratteristica fondamentale per una cache distribuita in memoria di qualità. Poiché di solito si trovano cache distribuite nel livello intermedio tra le applicazioni e un database, è molto probabile che i dati vengano aggiornati direttamente nel database o nella cache in modo indipendente. Questo problema richiede un meccanismo per prevenire i dati obsoleti.
Pertanto, tali cache distribuite devono consentire di specificare una relazione o una dipendenza tra l'elemento memorizzato nella cache e l'elemento corrispondente nel database. Pertanto, ogni volta che il database cambia, le sue modifiche si riflettono nella cache tramite invalidamento o aggiornamenti.
Per esempio, NCache fornisce Dipendenza Sql supporto per SQL Server. È possibile creare una dipendenza di un elemento memorizzato nella cache con un set di dati basato su istruzioni SQL. Ogni volta che il set di dati specifico viene modificato o modificato, SQL Server invia un evento a NCachee l'elemento della cache viene invalidato. Ad esempio, CacheItem item = newCacheItem(myObject);
1 2 3 4 5 6 7 8 9 10 11 |
// Get orders against customerID from DB var order = FetchOrderByCustomerID("ALFKI"); // Generate a unique cache key for the order string key = $"Order:{order.OrderID}"; CacheItem item = new CacheItem(order); // Create SQL query to select the data from the database string query = "SELECT CustomerID, Address, City FROM dbo.Customers WHERE CustomerID = 'ALFKI';"; //Specify the database connection string and the query to create and set SQLCacheDependency. item.Dependency = new SqlCacheDependency(dbConnString, query); // Insert the item into the cache cache.Insert(key, item); |
Quindi, la cache si sincronizzerà con il database. NCache supporta anche la stessa funzionalità con Oracle, OleDB e persino origini dati non relazionali come FileSystems tramite il nostro Negozio di persistenza.
NCache Dettagli Database Oracle OleDB
2. Query SQL
Dato NCacheGrazie alla capacità di sincronizzazione di, è facile considerare di tenere tutti i dati nella cache. Sfortunatamente, ciò presenterebbe un leggero problema poiché la ricerca è possibile solo attraverso i dati memorizzati nella cache se il recupero tramite Key è l'unica opzione. NCache offre una soluzione a questo tramite query SQL. Questo è possibile da indicizzazione attributi dell'oggetto .NET selezionati ed esecuzione di query di ricerca.
1 2 3 4 5 6 7 8 9 |
//string query = "SELECT * FROM FQN.Product WHERE UnitsInStock > ?"; var queryCommand = new QueryCommand(query); queryCommand.Parameters.Add("UnitsInStock",0); ICacheReader reader = cache.ExecuteReader(queryCommand); while (reader.Read()) { string ID = reader.GetValue("ProductID"); string Name = reader.GetValue("ProductName"); } |
Per migliorare l'esperienza degli sviluppatori, NCache ti permette anche di assegnare gruppi, tage tag denominati agli elementi memorizzati nella cache che puoi utilizzare in seguito nelle query SQL per recuperare rapidamente gli elementi.
3. Interrogazione LINQ
Analogamente, NCache offre agli utenti l'opportunità di attraversare i propri dati tramite query LINQ, come illustrato di seguito.
1 2 3 4 |
IQueryable products = new NCacheQuery(cache); var result = from prod in products where prod.ProductID > 1001 select prod; |
Inoltre, puoi personalizzare ulteriormente queste query utilizzando l'identificato logico, Aggregazionee Wildcard Operazioni.
NCache Dettagli Query SQL Query LINQ
4. Codice lato server
Spesso, le cache distribuite aiutano le applicazioni a recuperare i dati dal database e a inserirli nella cache. Tuttavia, un altro approccio è quello in cui l'applicazione delega questa responsabilità alla cache distribuita. In sostanza, quando l'applicazione richiede un elemento dalla cache, determina se l'elemento in questione esiste o meno nella cache e carica i dati corrispondenti dal database. Questa funzione è chiamata lettura. NCache offre un simile scrivere attraverso opzione, che consente operazioni di scrittura direttamente sull'origine dati tramite la cache.
E altre ancora… NCache'S funzionalità lato server va molto oltre con Cache Loader & Refresher. Questa funzionalità ha superato con successo il divario di prestazioni iniziale che tutte le cache devono affrontare all'avvio, poiché all'inizio sono vuote. È possibile utilizzare il caricatore per identificare i dati necessari e precaricarli. L'aggiornamento esiste semplicemente per garantire che questi dati non diventino obsoleti.
NCahttps://www.alachisoft.com/resources/docs/ncache/prog-guide/server-side-api-programming.htmlche fornisce anche un framework MapReduce completo in cui è possibile eseguire analisi sui dati memorizzati nella cache e produrre informazioni utili in tempo reale. Il codice MapReduce è scritto in .NET e quindi viene eseguito all'interno di NCache processo.
NCache Dettagli Riduci mappa NCache Caricatore e aggiornamento
5. Cache client (vicino alla cache)
A Cache cliente, è locale per il server Web o l'applicazione e consente di memorizzare nella cache i dati utilizzati di frequente all'interno dello stesso processo o macchina server. Quindi, una cache client è una cache di affinità, che offre alla tua applicazione un ulteriore aumento delle prestazioni diminuendo i costi della larghezza di banda della rete senza compromettere l'integrità dei dati. Una cache client funziona con tutti NCache raggruppati topologie di memorizzazione nella cache (Cache duplicata, partizionata e partizione-replica).
Lo fa rimanendo connesso al cluster di cache e sincronizzandosi replicando le modifiche nel cluster di cache principale. La differenza tra AppFabric cache locale e il NCache la cache del client è quella AppFabric La cache locale è autonoma e non crea una connessione con il cluster principale.
6. Supporto multi-datacenter
La replica WAN è un'altra caratteristica fondamentale per le cache distribuite in memoria di alto calibro AppFabric manca. È particolarmente utile con i data center geo-distribuiti, per il ripristino di emergenza o il bilanciamento del carico per il traffico localizzato.
NCache fornisce topologie Bridge per gestire le latenze WAN. Il NCache Ponte replica e mantiene la coerenza tra diverse cache in tutto il mondo. Hai la possibilità di mantenere il cluster di cache passivo per simulare una replica del cluster per il ripristino di emergenza o di sincronizzare due cache separate in data center diversi. I dati vengono replicati in modo asincrono su connessioni Internet sicure.
NCache Dettagli Cache cliente Replica WAN
7. Cluster dinamico
Come tutti AppFabric i clienti sono probabilmente consapevoli del fatto che il loro cluster non è completamente dinamico. La dipendenza di Microsoft dalla sua regola di maggioranza degli host principali significa un cluster molto fallibile, che si interrompe abbastanza facilmente se anche uno degli host principali si interrompe. Questi nodi host principali assomigliano anche all'architettura master e slave e non sono nemmeno completamente peer-to-peer.
Alternativamente, NCache is altamente dinamico e ti consente di aggiungere o rimuovere server di cache in fase di esecuzione senza interruzioni. I dati vengono ribilanciati automaticamente (o stato trasferito) in fase di esecuzione senza alcun degrado delle prestazioni. NCache i client mantengono automaticamente il canale di comunicazione con i server cache, indipendentemente dallo stato del server. Inoltre, i suoi cluster di cache garantiscono l'esecuzione delle operazioni client anche quando è in corso il bilanciamento dei dati (trasferimento dello stato).
Ciò significa che nel cluster non esistono nodi master o slave. C'è un nodo coordinatore primario che è il nodo senior. E se va giù, il nodo successivo più anziano diventa automaticamente il coordinatore principale. Tutto ciò avviene senza alcuna interruzione delle operazioni del cliente.
8. Integrazioni di terze parti
Ed infine, NCache supporta ufficialmente provider per diverse importanti biblioteche di terze parti, come ad esempio:
- Entity Framework Core Cache
- Cache di Entity Framework
- Ibernazione della cache di 2° livello
- Stato della sessione ASP e memorizzazione nella cache dello stato di visualizzazione
Conclusione
In breve, NCache presenta un'ampia gamma di funzionalità che le aziende utilizzano e richiedono nelle loro applicazioni .NET. In particolare, quelli che AppFabric non sono riusciti a introdurre in nessun momento del loro ciclo di vita. Quindi, se vuoi fare del tuo meglio e investire in un sistema di memorizzazione nella cache distribuito che soddisfi davvero le tue esigenze, scarica NCache per una migrazione indolore.
NCache Dettagli Scaricare NCache Confronto edizione