Un primo sguardo a Microsoft Velocity

di Andrea Colaci, in ASP.NET 4.0,

Questo articolo è basato su una versione non definitiva, pertanto alcune delle informazioni presenti potrebbero aver subito cambiamenti.
Velocity ha il nome definitivo di Windows Server AppFabric Caching.

Velocity è un progetto Microsoft, attualmente in CTP2, il cui obbiettivo è quello di fornire alle nostre applicazioni una cache distribuita, performante ed altamente affidabile. Velocity è integrabile sia in applicazioni web che desktop, grazie ad un'API che consente di eseguire le operazioni di base come il caricamento ed il prelievo degli oggetti managed dalla cache, sia operazioni leggermente più complesse come il locking.

Una delle caratteristiche che fanno di Velocity un progetto interessante è l'alta affidabilità. Questa è ottenuta creando ed utilizzando un cluster di server che sinergicamente erogano il servizio di cache distribuita gestendone, in maniera totalmente trasparente, il mantenimento in memoria, la consistenza, la ricerca, l'eventuale confinamento in regioni/server specifici e, in presenza di un guasto improvviso ad uno dei server, la ridondanza (su server secondari) degli oggetti presenti nella cache.

La tabella comparativa riportata di seguito permette di comprendere meglio le caratteristiche che distinguono Velocity dagli altri framework di cache esistenti.

FunzionalitàDescrizione breveASP.NET 2.0
Cache
EntLib Caching
App. Block 4.0
Velocity CTP2
Utilizzo da applicazioni Web e DesktopLa cache può essere utilizzata sia in applicazioni web che desktop.XXX
Strumento di configurazioneDisponibilità di uno strumento per la configurazione della cache. EntLib Configuration ConsolePowershell
Strumento di amministrazioneDisponibilità di uno strumento per la gestione della cache a runtime.  Powershell
Scadenza ed invalidazione della cachetempo assolutoLa cache scade ad una data/ora specifica.XX 
formato temporale estesoPermette la scadenza della cache ad uno specifico giorno della settimana o del mese. X 
durataLa cache scade dopo un intervallo di tempo configurabile.XXX
intervallo rinnovabileLa cache scade dopo un intervallo di tempo configurabile che si rinnova ad ogni accesso alla stessa.XX 
dipendenza su fileLa chache scade ogni qualvolta un file viene modificato.XX 
dipendenza su altri elementi della cacheLa cache scade quando un altro elemento nella cache scade.X  
dipendenza su Database SQLLa cache scade quando il contenuto di una tabella del database cambia.X  
dipendenza personalizzataLa cache scade al verificarsi di un evento personalizzato.X  
nessuna scadenzaLa cache non ha nessuna scadenza.XX 
metodi di scadenza multipliPossibilità di combinare più metodi di scadenza per la cache.XX 
callback di rimozionePossibilità di ricevere notifiche quando un elemento viene rimosso dalla cache.X  
ricaricamento automaticoPossibilità di definire un metodo/funzione che ricarica la cache quando questa scade. X 
Priorità di rimozioneOgni elemento della cache possiede un parametro che ne indica la priorità di rimozione, in fase di liberazione della memoria (scavenging).XXLRU (Last Recently Used) Eviction
Proprietà estese per elementi della cachePossibilità di accedere a proprietà estese degli elementi nella cache, come priorità ed altre informazioni.Sì, tramite Reflection X
Persistenza dati in cacheIn chiaroIl contenuto della cache, in fase di uscita dall'applicazione, può essere salvato su filesystem o database, quindi ricaricato al successivo avvio dell'applicazione. X 
CifrataCome il precedente, ma con supporto per la cifratura dei dati. X 
ConcorrenzaOttimisticaGli elementi della cache possono essere modificati con lock ottimistico, prima della modifica la versione di ogni elemento viene controllata per evitare conflitti.  X
PessimisticaGli elementi della cache possono essere bloccati e modificati da un solo utente alla volta.Si usando lock in C# oppure synklock in Visual Basic (limitatamente ad un singolo cache server).XX
Sincronizzazione tra AppDomain diversiGli elementi della cache sono sincronizzati e mantenuti consistenti attraverso differenti appdomain in esecuzione su differenti server.  X
Alta affidabilitàQuando l'alta affidabilità è abilitata, gli elementi nella cache sono ricopiati in cache host differenti. Se uno degli host non è più disponibile, gli elementi sono comunque disponibili dagli host secondari.  X
RegionsLe Regions sono una alternativa opzionale per migliorare la ricerca defgli elementi nella cache, mediante l'uso di Tags. Le Regions servono anche per indicizzare e confinare gli elementi della cache su un singolo server.  X
Cache ClientsCache localeParcheggia una copia deserializzata dell'elemento della cache del computer locale che esegue l'applicazione. Quando l'elemento viene richiesto, se questo esiste già nella cache locale, viene restituito immediatamente all'applicazione, senza costi di trasmissione e deserializzazione.  X
Routing clientUn routing client tiene traccia della dislocazione di ogni elemento nella cache su ciascun host del cluster, in modo da contattare l'host che lo contiene quando l'elemento viene richiesto.  X
4 pagine in totale: 1 2 3 4

Attenzione: Questo articolo contiene un allegato.

Contenuti dell'articolo

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti