Condividi tramite


Il presente articolo è stato tradotto automaticamente.

Integrazione della cache

Creazione e utilizzo di provider OutputCache personalizzati in ASP.NET

Brandon Satrom

Scaricare il codice di esempio

Se sei uno sviluppatore Web, in passato si potrebbe avere utilizzata la funzione di memorizzazione nella cache di output fornita da ASP.NET. Introdotta con la prima versione di Microsoft.NET Framework, ASP.NET output caching può migliorare le prestazioni del servizio contenuto ai visitatori del sito mediante il recupero del contenuto da una cache ignorando la riesecuzione di pagine o i controller. In tal modo le chiamate di database costose applicazioni quando si restituiscono i dati che non viene aggiornata di frequente o che può essere superato per periodi di tempo.

L'applicazione ASP.Cache di output NET utilizza un meccanismo di archiviazione in memoria e, fino al.NET Framework 4, non consente di eseguire l'override o sostituire la cache predefinita con la propria implementazione. Con il nuovo tipo di OutputCacheProvider, ora è possibile implementare un proprio meccanismo per la memorizzazione nella cache dell'output della pagina in ASP.NET.

In questo articolo verranno descritte due tali meccanismi personalizzati. In primo luogo, mediante MongoDB, ovvero un database più diffuso orientati ai documenti, viene creato il proprio provider per facilitare la cache di output in una pagina ASP.Applicazione di NET MVC. Quindi, utilizzando la stessa applicazione, verrà rapidamente swapping provider personalizzato per sfruttare le funzionalità di Windows azzurro ghiaccio AppFabric, in particolare, il nuovo provider DistributedCache che sfrutta l'infrastruttura azzurro ghiaccio di Windows per offrire una cache in memoria distribuita nell'area.

memorizzazione nella cache dell'output in ASP.NET

In ASP.NET applicazioni, l'output nella cache può essere configurata mediante l'aggiunta di una direttiva OutputCache Page per qualsiasi applicazione ASP.NET pagina o del controllo utente:

< % @ OutputCache Duration = "60"Percorso = "Qualsiasi"VaryByParam = "name"% >

Per le applicazioni ASP.NET MVC, la cache di output è disponibile tramite un filtro di azione che viene fornito con ASP.NET MVC e che può essere utilizzata come attributo di qualsiasi azione controller:

[OutputCache (durata = 60, VaryByParam = "Nessuno")]

"Durata" e "varybyparam" sono necessarie in ASP.NET MVC 1 e 2 delle applicazioni (VaryByParam è facoltativo in ASP.NET MVC 3) e diversi altri attributi di fornire entrambi i meccanismi e i parametri che consentono agli sviluppatori di controllare il modo in cui è contenuto nella cache (diversi parametri di VaryByX), in cui è memorizzato nella cache (percorso) e funzionalità per l'impostazione della cache delle dipendenze di invalidazione (SqlDependency).

Per la cache di output tradizionali, nient'altro è necessario per implementare questa funzionalità nelle applicazioni. Il tipo di OutputCache è un HttpModule che viene eseguita quando l'applicazione viene avviata e va a lavorare quando una direttiva di pagina o l'azione viene rilevato. Alla prima richiesta della pagina o del controller in questione, ASP.NET accetta il contenuto risultante (HTML, CSS, file JavaScript e così via) e posizionare ogni elemento in una cache in memoria, con una scadenza e una chiave per identificare l'elemento. La scadenza è determinata dalla proprietà Duration e la chiave è determinata da una combinazione di percorso alla pagina e i valori di VaryBy necessari, i valori di stringa o un parametro di query, ad esempio, se la proprietà VaryByParam è disponibile. In questo modo, si consideri un azione controller definito in questo modo:

[OutputCache (durata = 20, VaryByParam = "vendorState")] ActionResult GetVendorList(string vendorState) pubbliche {/ / logica dell'azione.
}

In questo caso, ASP.NET memorizza nella cache un'istanza della visualizzazione HTML risultante per ogni occorrenza di vendorState (ad esempio, uno per Texas, uno per stato di Washington e così via) come richiesto di tale stato. La chiave con cui viene memorizzato ogni istanza, in questo caso, sarà una combinazione di percorso e il vendorState in questione.

Se, d'altro canto, la proprietà VaryByParam è impostata su "none", ASP.NET memorizza nella cache il risultato dell'esecuzione prima di GetVendorList e offre la stessa versione memorizzata nella cache per tutte le richieste successive, indipendentemente dal valore del parametro vendorState passato tale azione. La chiave, da cui questa istanza viene archiviata quando viene specificato alcun valore VaryByParam, sarebbe solo il percorso. Una vista semplificata di questo processo viene rappresentata in nella figura 1.

image: The ASP.NET Output Caching Process

Figura 1 ASP.NET Output Caching processo

Oltre il parametro durata, ovvero consentono di controllare la durata dell'elemento nella cache e alcuni dei parametri di VaryBy (VaryByParam, VaryByHeader, VaryByCustom, VaryByControl e VaryByContentEncoding) utilizzato per controllare il livello di dettaglio di elementi memorizzati nella cache, la cache di output può essere configurata per controllare la posizione del contenuto della cache (clientserver o proxy downstream). Inoltre, ASP.NET 2. 0 ha introdotto un attributo SqlDependency, che consente agli sviluppatori di specificare le tabelle del database una pagina o un controllo dipende in modo che, oltre alla scadenza del tempo, gli aggiornamenti per i dati di origine possono essere causato anche gli elementi memorizzati nella cache scadere.

Sebbene il.NET Framework 2. 0 e 3. 0 ha introdotto numerosi miglioramenti per il provider di cache, il provider stesso è rimasto lo stesso: un archivio in memoria, senza punti di estensione o per fornire un'implementazione personalizzata. La cache in memoria è un'opzione perfettamente accettabile nella maggior parte dei casi, ma, in alcuni casi, contribuiscono a prestazioni del sito avere effetti negativi sono limite massimo, le risorse del server e la memoria scarseggia. Che cos'è più, il meccanismo predefinito di memorizzazione provider automaticamente rimozione degli risorse memorizzate nella cache, indipendentemente dal periodo di tempo specificato, ovvero quando la memoria è scarsa, quali foglie lo sviluppatore con un minimo controllo sulle risorse memorizzate nella cache come vengono gestiti.

Extensible Output Caching in ASP.NET

Il rilascio di al.NET Framework 4 è stata introdotta una nuova funzionalità che consente agli sviluppatori di creare il proprio provider di cache di output e inserire facilmente i provider in applicazioni nuove o esistenti con modifiche limitate per l'applicazione e la relativa configurazione. Questi provider sono liberi di utilizzare qualsiasi meccanismo di archiviazione di informazioni memorizzate nella cache che sceglie, ad esempio i dischi locali, i database relazionali e non relazionali, la nuvola o distribuiti anche i motori di memorizzazione nella cache, ad esempio quelle fornite con Windows Server AppFabric. È anche possibile utilizzare più provider per pagine diverse nella stessa applicazione.

Creazione di un proprio provider di cache di output è semplice come creare una nuova classe che deriva dalla classe astratta System.Web.Caching.OutputCacheProvider nuova ed eseguendo l'override di quattro metodi che ASP.NET è necessario lavorare con elementi memorizzati nella cache. La definizione del framework per la classe OutputCacheProvider è elencata qui (cfr. bit.LY/fozTLc Per ulteriori informazioni):

classe astratta pubblica OutputCacheProvider: ProviderBase {pubblica oggetto astratto Get (chiave di stringa);oggetto di tipo abstract pubblica componente (chiave stringa, voce di oggetto, data/ora utcExpiry);Set void astratto pubblico (chiave stringa, voce di oggetto, data/ora utcExpiry);Rimuovi void pubblica abstract (chiave di stringa);}

Dopo aver implementato questi quattro metodi, rimane che è per aggiungere il nuovo provider per il Web. config, specificarlo come valore predefinito e aggiungere una direttiva OutputCache o all'applicazione dell'attributo. Si parlerà in dettaglio i singoli passaggi durante la descrizione dettagliata della creazione di un provider di cache di output che utilizza un database di documento denominato MongoDB. Ma in primo luogo, può essere utile per introdurre un contesto limitato lo strumento da utilizzare per creare il provider personalizzato.

NoSQL, i database del documento e MongoDB

Per gran parte di alcuni decenni precedenti, il meccanismo di archiviazione applicazione preferita è stato il sistema di gestione di database relazionali (RDBMS), che memorizza i dati e le relazioni delle tabelle. SQL Server e Oracle sono esempi di RDBMSes, come la maggior parte dei database di origine commerciali e open diffusi attualmente in uso.

Tuttavia, non tutti i problemi che richiedono storage adatta nello stampo transazione stesso. Anni in ritardo ' 90, con l'espansione di Internet e per gestire grandi volumi di dati, è aumentata del numero di siti divenne evidente che il modello relazionale fornito prestazioni meno ottimali su determinati tipi di applicazioni a uso intensivo di dati. Sono esempi di indicizzazione di grandi volumi di documenti, distribuzione di pagine Web di siti a traffico elevato o lo streaming multimediale ai consumatori.

Molte aziende trattati le crescenti esigenze di archiviazione per i database di NoSQL, una classe di database lightweight non espone un'interfaccia SQL, gli schemi fissi o relazioni predefinite. NoSQL database vengono utilizzati soprattutto dalle società, ad esempio Google Inc (BigTable), Inc. Amazon.com (Dinamometrica alla) e Facebook (che dispone di un archivio di più di 50 TB per le ricerche della posta in arrivo) e si verificano crescita costante diffusione e all'uso.

È importante notare che, mentre alcuni hanno utilizzato il termine NoSQL come una lamentela che suona rallying da chiamare per l'abbandono di tutti i RDBMSes, altri sottolineare il vantaggio dell'utilizzo di entrambi i tipi di archiviazione. NoSQL database sono stati concepiti per una classe di errore di RDBMSes non è stato risolto, non per sostituire questi sistemi definitive. Lo sviluppatore discriminante sarebbe saggio comprendere entrambi i sistemi e utilizzare ognuno se del caso, anche in alcuni casi combinazione di entrambi i tipi di archiviazione in un'unica applicazione.

Una situazione ideale per un database di NoSQL è uscita la memorizzazione nella cache. Database NoSQL sono ideali per l'utilizzo dei dati temporanei o temporanei e pagine memorizzate nella cache da una pagina ASP.NET in uso l'ideale per tale pagamento. Un'opzione di NoSQL più comune è (MongoDBmongodb.org), un database di NoSQL orientati ai documenti utilizzato da Shutterfly, Foursquare, The New York Times e molti altri. MongoDB è un database di origine completamente aperta scritto in C++, con i driver per quasi ogni linguaggio di programmazione principale, incluso il linguaggio c#. MongoDB verrà utilizzato come meccanismo di archiviazione per il provider della cache dell'output personalizzato.

Creazione di un OutputCacheProvider personalizzato mediante MongoDB

Per iniziare, si desidera passare a mongodb.org Per scaricare e installare lo strumento. I documenti in mongodb.org/display/DOCS/QuickStart è opportuno comunicare è tutto ciò che serve sapere per installare MongoDB in Windows, Mac OS X e Unix. Dopo aver scaricato MongoDB e testati esteso con la shell, consiglia di installare il database come un servizio utilizzando il seguente comando dalla directory di installazione (assicurarsi di eseguire cmd. exe come amministratore):

C:\Tools\MongoDB\bin > mongod.exe - logpath C:\Tools\MongoDB\Logs - directoryperdb - installazione

MongoDB verrà installata come servizio sul computer e utilizzare C:\Data\db come cartella predefinita per tutti i database. L'opzione - diretoryperdb indica a MongoDB per creare una directory principale per ogni database creato.

Dopo aver eseguito il comando precedente, digitare quanto segue per avviare il servizio:

NET start MongoDB

Una volta cose ed efficiente, è necessario installare una libreria di driver per lavorare con MongoDB in.NET. Sono disponibili diverse opzioni disponibili;Si possono utilizzare il driver mongodb csharp creato da Sam Corder (github.com/samus/mongodb-CSharp).

Abbiamo installato MongoDB e si dispone di un driver da utilizzare all'interno di una.NET in uso, a questo punto è possibile creare il provider della cache dell'output personalizzato. A tale scopo, ho creato una nuova libreria di classi denominata DocumentCache e aggiunti due classi: DocumentDatabaseOutputCacheProvider e CacheItem.

Il primo è il provider, che le sottoclassi di OutputCacheProvider astratta di classe di una pubblica. L'implementazione di inizio viene rappresentato in nella figura 2.

Figura 2 Una classe di OutputCacheProvider Starter

public class DocumentDatabaseOutputCacheProvider: OutputCacheProvider {readonly Mongo _mongo;ReadOnly IMongoCollection <CacheItem>_cacheItems; 
         
  public override oggetto Get(string key) {return null;} 
  
  public override oggetto Add (chiave della stringa, voce di oggetto, data/ora utcExpiry) {return null;} 
  
  public override void Set (chiave della stringa, voce di oggetto, data/ora utcExpiry) {return;} 
  
  public override void Remove (string key) {return;} }

Si noti che la seconda variabile privata in nella figura 2 fa riferimento a CacheItem, l'altra classe che è necessario creare il progetto. CacheItem esistente per contenere le informazioni che il provider di cache di output deve operare con ASP.NET e il database, ma non è un'esterna oggetto necessario al provider. Di conseguenza, si definisce CacheItem come una classe interna, come illustrato di seguito:

Classe interna [serializable] CacheItem {public string Id {get;set;} [] byte pubblico Item {get;set;} public DateTime scadenza {get;set;} }

ID associato alla chiave fornita all'utente da ASP.NET. Si ricordi che la chiave è una combinazione di percorso e le condizioni di VaryBy definite nell'attributo di direttiva o di azione della pagina. Il campo scadenza corrisponde al parametro di durata e la proprietà Item è l'elemento da memorizzare nella cache.

Si comincerà di implementazione di un nostro provider impostando operazioni nel costruttore della classe DocumentDatabaseOutputCacheProvider. Microsoft è consapevole che ASP.NET consente di mantenere una sola istanza del nostro provider per l'intera durata dell'applicazione, possiamo eseguire alcune operazioni di installazione nel nostro costruttore simile al seguente:

ReadOnly Mongo _mongo;ReadOnly IMongoCollection <CacheItem>_cacheItems; 
         
pubblica DocumentDatabaseOutputCacheProvider() {_mongo = nuovo Mongo();_mongo.Connect (); 
             
  archivio var = _mongo.GetDatabase("OutputCacheDB");_cacheItems = archivio.GetCollection <CacheItem> (.);}

Il costruttore crea una nuova istanza del tipo Mongo e si connette al server utilizzando il percorso predefinito (localhost). Richiede quindi MongoDB per il database OutputCacheDB e per un IMongoCollection del nostro tipo CacheItem. Poiché MongoDB è un database senza schema, creazione di database in tempo reale è supportata. La prima chiamata a _mongo.GetDatabase("OutputCacheDB") restituirà un'istanza di un nuovo database e tale database verrà creato sul disco quando si verifica il primo inserimento.

A questo punto è opportuno implementare il metodo Add, come illustrato nella nella figura 3.

Figura 3 l'implementazione del metodo Add

public override oggetto Add (chiave della stringa, voce di oggetto, data/ora utcExpiry) {chiave = MD5(key);elemento Var = _cacheItems.FindOne (nuovo {viene = key});Se (voce! = null) {se (voce.Expiration.ToUniversalTime() < = DateTime.UtcNow) {_cacheItems.Remove(item);} else {return Deserialize (voce.Voce);} } 
  
  _cacheItems.Insert (nuovo CacheItem {Id = chiave, Item = Serialize(entry), scadenza = utcExpiry}); 
  
  restituire la voce}

La prima cosa che faccio in ogni metodo è chiamata MD5 su chiave in passato. Questo metodo, ovvero omesso per brevità, ma che è disponibile nel download del codice sorgente in linea, genera un database di facile integrazione con hash MD5 basato sulla chiave da ASP.NET fornisce all'utente corrente. Quindi, chiamare il IMongoCollection <CacheItem>Digitare, _cacheItems, eseguire query sul database sottostante per la chiave in questione. Si noti il tipo anonimo (nuovo {viene = key}) passato nel metodo FindOne. L'esecuzione di query MongoDB viene effettuato principalmente attraverso il selettore oggetti o documenti di modello che specificano uno o più campi in un documento in modo che corrisponda al database. viene è la chiave MongoDB viene utilizzata per archiviare i documenti, e, ovvero dalla convenzione del driver che si sta utilizzando, ovvero che proprietà viene automaticamente associato alla proprietà Id della classe CacheItem. In tal caso, quando si salva un nuovo elemento nella cache, come illustrato nel metodo _cacheItems.Insert illustrato nella nella figura 3, la chiave viene assegnata utilizzando la proprietà Id, che MongoDB viene utilizzata per compilare il campo interno viene del record. MongoDB è un archivio di chiave-valore, in modo che ogni oggetto CacheItem viene archiviato utilizzando JSON serializzati in formato binario che è simile al seguente:

{"viene": ObjectId(Id), "cacheitem": nuovo CacheItem {Id = chiave, Item = voce, scadenza = utcExpiry}}

Se si trova un CacheItem con la stessa chiave di quello passato, controllare la scadenza di tale elemento rispetto all'ora UTC corrente. Se l'elemento non è scaduto, I binari deserializzare utilizzando un metodo privato (disponibile nel codice sorgente in linea) e restituire l'elemento esistente. In caso contrario, si inserisce un nuovo elemento nell'archivio personale, binario viene serializzato e restituire la voce in passato.

Una volta che ho implementato l'aggiunta di elementi alla cache, è possibile aggiungere il metodo Get, che consente di trovare e restituire un elemento memorizzato nella cache tramite chiave (o null) se non viene trovato un risultato come illustrato nella nella figura 4.

Figura 4 implementa il metodo Get

public override oggetto Get (chiave di stringa) {chiave = MD5(key);var cacheItem = _cacheItems.FindOne (nuovo {viene = key}); 
  
  Se (cacheItem! = null) {se (cacheItem.Expiration.ToUniversalTime() < = DateTime.UtcNow) {_cacheItems.Remove(cacheItem);} else {return Deserialize(cacheItem.Item);} } 
    
  restituire null.}

Come con il metodo Add, il metodo Get controlla inoltre la scadenza dell'elemento se esiste nel database e, se è scaduto, rimuove e restituisce null. Se l'elemento è presente e non sia scaduto, esso ha restituito.

A questo punto, è opportuno implementare il metodo Remove, che accetta una chiave e rimuove l'elemento in corrispondenza di tale chiave dal database, come illustrato di seguito:

public override void Remove (chiave di stringa) {chiave = MD5(key);_cacheItems.Remove (nuovo {viene = key});}

Proprio come con il codice che utilizza il driver per ottenere un database che non esiste ancora, MongoDB non lamentano se si tenta di rimuovere un elemento non è disponibile nel nostro database. Semplicemente non ha alcun effetto.

In base alla nostra classe base astratta, è ancora presente un ultimo metodo che è necessario implementare per dispone di un provider di cache di output personalizzato funzionale, il metodo Set. Ho incluso in nella figura 5.

Figura 5 l'implementazione l'impostare metodo Public Override Void Set(string key, object entry, DateTime utcExpiry)

{chiave = MD5(key);elemento Var = _cacheItems.FindOne (nuovo {viene = key}); 
  
  Se (voce! = null) {elemento.Item = Serialize(entry);elemento.Scadenza = utcExpiry;_cacheItems.Save(Item);} else {_cacheItems.Insert (nuovo CacheItem {Id = chiave, Item = Serialize(entry), scadenza = utcExpiry});} }

In breve, può sembrare che i metodi Add e Set sono identici, ma non vi è una differenza fondamentale tra loro implementazione prevista. In base ai documenti di MSDN Library nella classe (OutputCacheProviderbit.LY/fozTLc), il metodo Add di un provider personalizzato deve cercare un valore nella cache che corrisponde alla chiave specificata e, se presente, non eseguire alcuna operazione per la cache e restituire la voce salvata. Se tale elemento non esiste, Aggiungi opportuno inserirlo.

Il metodo Set, d'altro canto, deve sempre inserire il valore nella cache, inserendo l'elemento se non esiste e sovrascriverlo in questo caso. Si noterà che, in nella figura 3 per l'aggiunta e nella figura 5 per Set, che tali metodi si comportano come specificato.

Con questi quattro metodi implementati, ora è possibile inserire il provider per l'utilizzo.

Utilizzo di OutputCacheProvider di MongoDB in ASP.NET MVC

Una volta che abbiamo realizzato il provider personalizzato, è possibile aggiungere tale provider per qualsiasi applicazione ASP.NET con poche righe di configurazione. Dopo aver aggiunto un riferimento all'assembly che contiene il provider, aggiungere il seguente testo nel file Web. config in <system.web>sezione:

<caching>< outputCache defaultProvider = "documentdbcache" ><providers>< aggiungere nome = "documentdbcache"Type="DocumentCache.DocumentDatabaseOutputCacheProvider, DocumentCache"/ ></providers></outputCache></caching>

&Lt;providers>elemento definisce tutti i provider personalizzati da aggiungere all'applicazione e definisce un nome e il tipo per ciascuno di essi. Poiché è possibile avere più provider personalizzato in un'unica applicazione, è anche necessario specificare l'attributo defaultProvider come nel frammento di codice precedente.

Applicazione di esempio è una semplice applicazione ASP.Sito NET MVC con un CustomersController. In tale controller è un'azione denominata TopCustomers, che restituisce un elenco dei migliori clienti per la mia azienda. Queste informazioni sono il risultato di calcoli complessi e diversi database esegue una query nel database di SQL Server e viene aggiornata solo una volta all'ora. Per questi motivi, è un candidato ideale per la memorizzazione nella cache. Da aggiunta di un attributo OutputCache per l'azione come segue:

[OutputCache (durata = 3600, VaryByParam = "Nessuno")] public ActionResult TopCustomers() {var topCustomers = _repository.GetTopCustomers();restituire View(topCustomers);}

A questo punto, se si esegue il sito e passare alla pagina del TopCustomers, il provider personalizzato verrà eseguito il rollforward in azione. In primo luogo, viene chiamato il metodo Get, ma poiché in questa pagina non è ancora memorizzato nella cache, verrà restituito nulla. L'azione di controller verrà quindi eseguito e restituire la visualizzazione di TopCustomers, come illustrato nella nella figura 6.

image: The Cached TopCustomers View

Figura 6 La visualizzazione di TopCustomers nella cache

ASP.NET chiamerà il provider personalizzati di cache, l'esecuzione del metodo Set e l'elemento verrà memorizzato nella cache. Come procedere dopo la durata di 3600 secondi, o 60 minuti, e tutte le successive richieste per tale periodo verranno utilizzato l'elemento nella cache restituito mediante il metodo Get, ignorando la riesecuzione di azione del Controller. Se tutti i dati sottostanti viene modificati, gli aggiornamenti saranno applicati alla prima esecuzione dopo la scadenza e che le nuove informazioni verranno quindi essere memorizzati nella cache per un'ora. Se si desidera vedere MongoDB in azione, sono disponibili due opzioni. È possibile aprire il browser e passare a http://localhost:28107/, che consente di visualizzare il registro, come pure le query recenti e le statistiche relative al database. In alternativa, è possibile eseguire mongo.exe dalla directory bin dell'installazione di MongoDB e query del database tramite la Shell Mongo. Per ulteriori informazioni sull'utilizzo di questi strumenti, vedere mongodb.org.

Utilizzo del Provider DistributedCache

Se tutti i dati trattati finora è dunque più desiderati esplorare? Si supponga di utilizzare un meccanismo di memorizzazione nella cache alternativo, ma si dispone né ora né il desiderio di sviluppo applicativo? Sarà felice di sapere che, dopo l'introduzione di extensible output caching, molte alternative, commerciali, aprire l'origine e fornito da Microsoft, sono disponibili o in fase di sviluppo. Un esempio è una cache in memoria basata su aree, distribuita: il provider DistributedCache attualmente disponibile come parte di Windows azzurro ghiaccio AppFabric. Se si sono già creando applicazioni basata su aree, la memorizzazione nella cache di Windows azzurro ghiaccio AppFabric possibile velocizzare l'accesso ai dati per le applicazioni e, poiché la memorizzazione nella cache viene consegnato come servizio cloud, il programma di installazione è semplice e non un sovraccarico per mantenere.

Al momento della stesura di questo articolo, la memorizzazione nella cache di AppFabric fa parte di Windows azzurro ghiaccio AppFabric Comunità versione Technology Preview ottobre, in modo che è possibile accedere a funzionalità di memorizzazione nella cache senza un account azzurro ghiaccio Windows attivo. Tuttavia, se si è abbonati a MSDN, consiglio vivamente attivando i vantaggi azzurro ghiaccio Windows Windows.Azure.com. Vai alle Portal.appfabriclabs.com e creare un account per utilizzare le funzionalità di anteprima di sviluppatore.

Dopo avere creato un account Labs, fare clic sul collegamento Aggiungi spazio dei nomi di servizio per attivare i servizi di AppFabric (vedere nella figura 7).

image: Windows Azure AppFabric Labs Summary Page

Figura 7 pagina di riepilogo di Windows azzurro AppFabric Labs

Dopo aver impostato lo spazio dei nomi di servizio, fare clic sul collegamento nella Cache e prendere nota dell'autenticazione e l'URL del servizio token elencati nella sezione cache (vedere nella figura 8). È necessario che queste informazioni per configurare l'applicazione per utilizzare il provider di DistributedCache.

image: AppFabric Labs Cache Settings Page

Figura 8 pagina Impostazioni Cache di AppFabric Labs

A questo punto, sarà necessario scaricare e installare Windows azzurro ghiaccio AppFabric SDK (fare clic sul collegamento download nella pagina del portale Cache). Al termine dell'installazione, si è pronti per configurare la memorizzazione nella cache di Windows azzurro ghiaccio AppFabric dell'applicazione.

È necessario aggiungere i riferimenti agli assembly diversi che l'installazione di SDK memorizzato nel computer in uso. Utilizzando la stessa applicazione ASP.Applicazione MVC NET utilizzato per la cache del database documento personalizzata, passare al percorso di installazione SDK (valore predefinito è C:\Programmi * \Windows Azure AppFabric SDK\V2.0\Assemblies\Cache) e aggiungere riferimenti a ogni assembly contenuti all'interno.

Una volta completata questa analisi, aprire il file Web. config e aggiungere la seguente <configSections>voce, mantenendo tutte le sezioni di configurazione esistenti:

<configSections>< nome sezione = "dataCacheClient"Type="Microsoft.ApplicationServer.Caching.DataCacheClientSection, Microsoft.ApplicationServer.Caching.Core"allowLocation = "true"allowDefinition = "Senza confini" / ></configSections>

Successivamente, creare <dataCacheClient>sezione, sostituendo <host>nome, cachePort e <messageSecurity>le proprietà di authorizationInfo con dettagli dal portale conto, nel modo seguente:

< distribuzione dataCacheClient = "Semplice" ><hosts>< host name="yournamespace.cache.appfabriclabs.com"cachePort = "la porta"/ ></hosts>< modalità securityProperties = "Messaggio" >< messageSecurity authorizationInfo = "il token di autenticazione" ></messageSecurity></securityProperties></dataCacheClient>

Quindi, trovare <caching>sezione in <system.web>e aggiungere la seguente voce di provider dopo l'entrata che è stato creato per il provider personalizzato:

< aggiungere nome = "distributedcache"Type="Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider, Microsoft.Web.DistributedCache"cacheName = "default"/ >

Infine, modificare l'attributo defaultProvider su <outputCache>elemento da "distributedcache". Il DistributedCacheOutputCacheProvider è un tipo di sottoclasse di astratta OutputCacheProvider, come la nostra implementazione MongoDB.A questo punto, generare ed eseguire l'applicazione e passare alla pagina superiore clienti.Provare ad aggiungere un cliente, mentre l'elenco è ancora memorizzato nella cache e si noti che, come accade con la nostra implementazione di MongoDB, l'elenco rimarrà nella cache fino a quando si specifica.

Conclusioni

In questo articolo, ho parlato di ASP.NET output caching, classica utilizzo della cache in memoria predefinita e di nuove funzionalità di memorizzazione nella cache estensibile fornita utilizzando la classe astratta OutputCacheProvider nel.NET Framework 4.Parlato di NoSQL e i database del documento e come questi tipi di sistemi sono ideali per l'utilizzo con i dati temporanei, ad esempio l'output memorizzato nella cache.Abbiamo utilizzato MongoDB per la creazione di una cache di output di esempio e utilizzate in un'applicazione ASP.Applicazione di NET MVC.Infine, abbiamo spostato la cache di output per la nuvola e con minore installazione e configurazione qualsivoglia alcuna modifica del codice, siamo stati in grado di eseguire lo swapping di memorizzazione nella cache meccanismi nella nostra applicazione.

La cache di output estensibile è solo uno dei molti sulle nuove funzionalità in ASP.NET 4 e si spera l'esplorazione della funzionalità e delle tecnologie che possono essere utilizzate insieme a, ovvero è stata utile.Per ulteriori informazioni su MongoDB, Vai a mongodb.org.Per ulteriori informazioni su Windows azzurro ghiaccio AppFabric, Vai a Portal.appfabriclabs.com/helpandresources.aspx.

Brandon Satrom funziona come un evangelista developer per Microsoft in Austin, Texas. He blog a userinexperience.com e sono disponibili su movimenti: @ BrandonSatrom.

Grazie ai seguenti esperti tecnici per la revisione di questo articolo: H di Brian.Prince e Clark vendere