Eseguire la migrazione da Shared Caching di Azure a Cache nel ruolo
Importante
Microsoft consiglia tutti i nuovi sviluppi di usare Cache Redis di Azure. Per la documentazione e le indicazioni correnti sulla scelta di un'offerta di Cache di Azure, vedere Quale offerta di Cache di Azure è adatta per l'utente?
La migrazione delle applicazioni che usano Memorizzazione nella cache condivisa di Microsoft Azure per In-Role memorizzazione nella cache della cache può essere eseguita con modifiche minime all'applicazione. Poiché In-Role cache usa la stessa API di Memorizzazione nella cache condivisa, il codice esistente che usa Memorizzazione nella cache condivisa per accedere a una cache può essere riutilizzato per accedere a una cache In-Role cache nel ruolo. Questo argomento illustra come apportare le modifiche necessarie alla configurazione e all'applicazione per eseguire la migrazione dell'applicazione Memorizzazione nella cache condivisa da usare In-Role Cache.
Nota
Per altre informazioni sui vantaggi dell'uso di In-Role Cache, vedere Informazioni su cache di In-Role per Cache di Azure.
Passaggi della migrazione
Le sezioni seguenti descrivono i passaggi necessari per eseguire la migrazione di un'applicazione Memorizzazione nella cache condivisa di Microsoft Azure da usare In-Role Cache.
Determinare la topologia di distribuzione del cluster di cache
Configurare un cluster di cache basata su ruolo dedicato
Configurare un cluster di cache basata su ruolo con risorse condivise
Configurazione dell'account di archiviazione del cluster di cache
Configurare le impostazioni della cache denominata
Configurare i client della cache
Rimuovere la configurazione di Shared Caching
Configurare un client della cache mediante il pacchetto NuGet di Caching
Eseguire la migrazione della memorizzazione nella cache dell'output delle pagine e dello stato della sessione ASP.NET
Determinare la topologia di distribuzione del cluster di cache
In-Role Cache offre la possibilità di ospitare servizi di memorizzazione nella cache nei ruoli di Azure. In questo modello, la cache fa parte del servizio cloud, Viene selezionato un ruolo all'interno del servizio cloud per ospitare In-Role Cache. Le istanze in esecuzione di questo ruolo vengono aggiunte alle risorse di memoria in modo da formare un cluster di cache Questo cluster di cache privato è disponibile solo per i ruoli all'interno della stessa distribuzione. Esistono due topologie di distribuzione per In-Role Cache: dedicata e condivisa.
Topologia di distribuzione del cluster di cache | Descrizione |
---|---|
Memorizzazione nella cache basata su ruolo dedicato |
Le istanze di ruolo di lavoro vengono usate esclusivamente per la memorizzazione nella cache. |
Memorizzazione nella cache basata su ruolo con risorse condivise |
La cache condivide le risorse della macchina virtuale (larghezza di banda, CPU e memoria) con l'applicazione principale ospitata dal ruolo. |
Se nei ruoli esistenti dell'applicazione è disponibile una parte di memoria non usata, è possibile configurare un cluster di cache basata su ruolo con risorse condivise su questi ruoli e usare quella memoria supplementare per la memorizzazione nella cache. Se nei ruoli non è disponibile memoria supplementare sufficiente per supportare un cluster di cache, è possibile eseguire la scalabilità orizzontale dei ruoli oppure aggiungere un ruolo di lavoro della cache e configurare un cluster di cache basata su ruolo dedicato.
Configurare un cluster di cache basata su ruolo dedicato
Configurare un cluster di cache basata su ruolo con risorse condivise
Configurare un cluster di cache basata su ruolo dedicato
Per configurare un cluster di cache basata su ruolo dedicato, aggiungere un ruolo di lavoro della cache al progetto. Per aggiungere un ruolo di lavoro della cache, espandere Azure in Esplora soluzioni se non è già espanso.
Nota
La memorizzazione nella cache basata su ruolo dedicato è supportata esclusivamente sui ruoli di lavoro e non può essere configurata sui ruoli Web.
Fare clic con il pulsante destro del mouse sulla cartella Ruoli nel progetto Azure e scegliere Aggiungi, Nuovo progetto di ruolo di lavoro, quindi scegliere Ruolo di lavoro della cache. Digitare il nome desiderato per il ruolo nella casella Nome e fare clic su Aggiungi.
Un ruolo di lavoro della cache è preconfigurato per la memorizzazione nella cache basata su ruolo dedicato. Per visualizzare le impostazioni, fare clic con il pulsante destro del mouse sul ruolo appena aggiunto nella cartella Ruoli di Azure e scegliere Proprietà.
Passare alla scheda Caching per visualizzare le proprietà di memorizzazione nella cache del ruolo di lavoro della cache.
Trattandosi di un ruolo di lavoro della cache, la casella di controllo Abilita Caching è già selezionata così come la memorizzazione nella cache basata su Ruolo dedicato. Le impostazioni per la cache sono configurate nella sezione Impostazioni cache denominata. Esistono alcune differenze nelle impostazioni della cache tra cache In-Role Cache e Memorizzazione nella cache condivisa di Microsoft Azure. Queste impostazioni sono descritte nelle sezioni seguenti Configurare l'account Archiviazione del cluster di cache e configurare la Impostazioni cache denominata.
Passare alla scheda Configurazione.
Il valore predefinito di Conteggio istanze è 1 e l'impostazione predefinita di Dimensioni macchina virtuale è Piccola. Modificare queste impostazioni in base alla configurazione desiderata. La guida Considerazioni sulla pianificazione della capacità per Cache In-Role di Azure può fornire indicazioni sulle impostazioni da scegliere per soddisfare i requisiti di memorizzazione nella cache dell'applicazione.
Dopo aver aggiunto il ruolo di lavoro della cache e aver configurato le dimensioni della macchina virtuale e il numero di istanze, è possibile configurare la cache come descritto nella sezione Configurare la cache denominata Impostazioni.
Configurare un cluster di cache basata su ruolo con risorse condivise
Per configurare un cluster della cache dei ruoli con percorso condiviso, fare clic con il pulsante destro del mouse sul ruolo desiderato nella cartella Ruoli di Azure e scegliere Proprietà.
Passare alla scheda Caching, selezionare la casella di controllo Abilita Caching e specificare le opzioni desiderate per la memorizzazione nella cache. In base alla configurazione predefinita, il 30% della memoria nell'istanza del ruolo viene allocato per la memorizzazione nella cache. Spostare il dispositivo di scorrimento Dimensioni cache (%) in modo da configurare la cache desiderata.
Una buona approssimazione della formula usata per determinare le dimensioni della cache consiste nel moltiplicare il numero di istanze del ruolo per la quantità di memoria in base alla dimensione della macchina virtuale e usare la percentuale specificata. Si noti che questa formula è un'approssimazione molto semplice e per altre informazioni sulle impostazioni necessarie per effettuare il provisioning di una cache delle dimensioni desiderate, vedere Considerazioni sulla pianificazione della capacità per Cache In-Role di Azure. Se per ospitare il cluster di cache sono necessarie altre istanze di ruolo o una dimensione maggiore della macchina virtuale, è possibile configurarle nella scheda Configurazione.
Configurazione dell'account di archiviazione del cluster di cache
In-Role Cache richiede un account di archiviazione di Azure. Questo account di archiviazione viene utilizzato per contenere i dati relativi al cluster di cache a cui viene eseguito l'accesso da tutte le macchine virtuali che lo compongono. Questo account è specificato nella scheda Caching della pagina delle proprietà del ruolo del cluster di cache, sopra alla voce Impostazioni cache denominata.
Importante
Se l'account di archiviazione non è configurato i ruoli non verranno avviati.
Configurare le impostazioni della cache denominata
Le impostazioni della cache vengono configurate nella sezione Impostazioni cache denominata.
Esistono alcune differenze nelle impostazioni della cache tra cache In-Role Cache e Memorizzazione nella cache condivisa di Microsoft Azure.
Funzionalità | Supporto della cache In-Role | supporto di Memorizzazione nella cache condivisa di Microsoft Azure |
---|---|---|
Nome |
È configurata una cache predefinita ed è possibile configurare cache denominate supplementari, se necessario. |
Solo cache predefinita. |
Disponibilità elevata |
Fornisce disponibilità elevata per gli elementi nella cache. Se un ruolo è disattivato, una copia di backup degli elementi nella cache sarà comunque disponibile. |
Nessuna disponibilità elevata. |
Notifications |
Le notifiche consentono all'applicazione di ricevere notifiche in modo asincrono quando vengono eseguite diverse operazioni nel cluster di cache. Per altre informazioni, vedere Notifiche in Cache In-Role di Azure |
Non supportata. |
Criteri di rimozione |
Le opzioni sono LRU (utilizzati meno di recente) o Nessuno. Il valore predefinito è LRU. |
Solo LRU. |
Durata (min) |
La scadenza predefinita per gli elementi nella cache è 10 minuti, ma è configurabile. È anche possibile specificare l'ora di scadenza per singoli elementi aggiunti alla cache usando overload di Add e Put quando gli elementi vengono aggiunti alla cache. |
La scadenza predefinita è 24 ore e non è configurabile. La scadenza per i singoli elementi aggiunti alla cache può essere configurata usando overload di Add e Put quando gli elementi vengono aggiunti alla cache. |
Tipo di scadenza |
Esistono tre tipologie di Tipo di scadenza: Nessuna, Assoluta e Finestra scorrevole. Quando si specifica Assoluta, l'intervallo di scadenza specificato da Durata (TTL) (min) inizia quando gli elementi vengono aggiunti alla cache. Quando si specifica Finestra temporale scorrevole, l'intervallo viene reimpostato ogni volta che si verifica un accesso a un elemento nella cache. Quando si specifica Nessuna, è necessario che il valore Durata (TTL) (min) sia impostato su 0 e gli elementi non scadranno. Il valore predefinito è Assoluta. Per altre informazioni, vedere Scadenza e rimozione in Cache In-Role di Azure. |
Il criterio di scadenza è assoluto. L'intervallo di scadenza inizia quando vengono aggiunti elementi alla cache. |
Configurare i client della cache
Dopo avere configurato il cluster di cache, occorre aggiungere la configurazione e i riferimenti necessari per fare in modo che i client possano accedere alla cache. Nella cache In-Role, i client possono essere qualsiasi ruolo nella stessa distribuzione del cluster della cache. Quando si accede a un cluster di cache basata su ruolo con risorse condivise, il client può essere il ruolo stesso che ospita il cluster di cache. Per configurare i client della cache, eseguire la seguente procedura per ogni ruolo che accede alla cache.
Rimuovere la configurazione di Shared Caching
Configurare un client della cache mediante il pacchetto NuGet di Caching
Rimuovere la configurazione di Shared Caching
Prima che i ruoli client siano configurati per In-Role Cache, è necessario rimuovere i riferimenti alla configurazione e all'assembly Memorizzazione nella cache condivisa esistenti. Se Memorizzazione nella cache condivisa è stato configurato usando il pacchetto di Memorizzazione nella cache condivisa NuGet, la configurazione può essere rimossa disinstallando il Memorizzazione nella cache condivisa NuGet in caso contrario, deve essere rimosso manualmente.
Disinstallare il pacchetto NuGet di Shared Caching
Rimuovere manualmente la configurazione di Shared Caching
Disinstallare il pacchetto NuGet di Shared Caching
Per disinstallare il pacchetto Memorizzazione nella cache condivisa NuGet, fare clic con il pulsante destro del mouse sul ruolo client desiderato in Esplora soluzioni e scegliere Gestisci pacchetti NuGet. Selezionare il nodo Pacchetti installati, digitare Caching nella casella Cerca in pacchetti installati. Selezionare Shared Caching di Azure, fare clic su Disinstalla, quindi su Chiudi.
Nota
Se non è presente alcun pacchetto Memorizzazione nella cache condivisa di Microsoft Azure NuGet nell'elenco, fare clic su Chiudi e seguire la procedura descritta in Rimuovere manualmente la configurazione Memorizzazione nella cache condivisa.
La disinstallazione del pacchetto di Memorizzazione nella cache condivisa NuGet rimuove gli assembly Memorizzazione nella cache condivisa e le voci Memorizzazione nella cache condivisa nel app.config
ruolo o web.config
del ruolo client. Poiché quando si disinstalla il pacchetto NuGet alcune impostazioni personalizzate potrebbero non essere rimosse, aprire il file web.config
o app.config
e assicurarsi che i seguenti elementi siano stati completamente rimossi.
Verificare che la voce
dataCacheClients
sia stata rimossa dall'elementoconfigSections
. Non rimuovere l'intero elementoconfigSections
, ma solo la vocedataCacheClients
, se presente.<configSections> <!-- Existing sections omitted for clarity. --> <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" /> </configSections>
Verificare che la sezione
dataCacheClients
sia stata rimossa. La sezionedataCacheClients
sarà simile all'esempio seguente.<dataCacheClients> <dataCacheClient name="default"> <hosts> <host name="MyCacheNamespace.cache.windows.net" cachePort="22233" /> </hosts> <securityProperties mode="Message"> <messageSecurity authorizationInfo="Your authorization token will be here."> </messageSecurity> </securityProperties> </dataCacheClient> </dataCacheClients>
Dopo aver rimosso la configurazione Memorizzazione nella cache condivisa, è possibile configurare il client della cache come descritto nella sezione Configurare un client della cache usando la sezione Caching NuGet Package.
Rimuovere manualmente la configurazione di Shared Caching
Per rimuovere manualmente la configurazione di Memorizzazione nella cache condivisa, è necessario rimuovere i riferimenti all'assembly Memorizzazione nella cache condivisa e la configurazione Memorizzazione nella cache condivisa da app.config
o web.config
.
Per rimuovere i riferimenti all'assembly Memorizzazione nella cache condivisa, selezionare il ruolo client desiderato in Esplora soluzioni ed espandere la cartella Riferimenti. Per ciascun assembly incluso nel seguente elenco, fare clic con il pulsante destro del mouse nella cartella Riferimenti in Esplora soluzioni e scegliere Rimuovi. Se il client è un ruolo Web, rimuovere anche Microsoft.Web.DistributedCache.
Microsoft.ApplicationServer.Caching.Client
Microsoft.ApplicationServer.Caching.Core
Microsoft.WindowsFabric.Common
Microsoft.WindowsFabric.Data.Common
Per rimuovere la configurazione Memorizzazione nella cache condivisa, aprire o web.config
app.config
del ruolo client e rimuovere i due elementi seguenti.
Rimuovere la voce
dataCacheClients
dall'elementoconfigSections
. Non rimuovere l'intero elementoconfigSections
, ma solo la vocedataCacheClients
, se presente.<configSections> <!-- Existing sections omitted for clarity. --> <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" /> </configSections>
Rimuovere la sezione
dataCacheClients
che sarà simile a quella riportata nel seguente esempio.<dataCacheClients> <dataCacheClient name="default"> <hosts> <host name="MyCacheNamespace.cache.windows.net" cachePort="22233" /> </hosts> <securityProperties mode="Message"> <messageSecurity authorizationInfo="Your authorization token will be here."> </messageSecurity> </securityProperties> </dataCacheClient> </dataCacheClients>
Dopo aver rimosso questi elementi, si possono eseguire i passaggi riportati nella sezione successiva per configurare il client della cache.
Configurare un client della cache mediante il pacchetto NuGet di Caching
In-Role Cache fornisce un pacchetto NuGet per aggiungere i riferimenti di configurazione e assembly necessari per consentire ai ruoli client di accedere a un cluster della cache.
Importante
Prima di configurare il client della cache usando il pacchetto NuGet cache di In-Role, assicurarsi che la configurazione Memorizzazione nella cache condivisa venga rimossa completamente dal web.config
ruolo o app.config
del ruolo client, come descritto nella sezione precedente.
Per usare il pacchetto NuGet cache In-Role, fare clic con il pulsante destro del mouse sul ruolo client desiderato in Esplora soluzioni e scegliere Gestisci pacchetti NuGet.
Selezionare Caching di Azure, fare clic su Installa e quindi su Accetto. Al termine dell'installazione del pacchetto nel ruolo, fare clic su Chiudi per chiudere la finestra Gestisci pacchetti NuGet.
Nota
Se Caching di Azure non è incluso nell'elenco, digitare WindowsAzure.Caching nella casella di testo Cerca Online.
Quando il pacchetto NuGet cache In-Role viene installato in un ruolo client, aggiunge la configurazione e i riferimenti all'assembly necessari in modo che il ruolo client possa accedere al cluster di cache desiderato.
In web.config
o app.config
per il ruolo, vengono aggiunti più elementi.
A
configSections
vengono aggiunte due sezioni, denominatedataCacheClients
ecacheDiagnostics
.<configSections> <!-- Existing sections omitted for clarity. --> <section name="dataCacheClients" type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" allowLocation="true" allowDefinition="Everywhere" /> <section name="cacheDiagnostics" type="Microsoft.ApplicationServer.Caching.AzureCommon.DiagnosticsConfigurationSection, Microsoft.ApplicationServer.Caching.AzureCommon" allowLocation="true" allowDefinition="Everywhere" /> </configSections>
Viene aggiunta una sezione
dataCacheClients
alla sezioneconfiguration
.<dataCacheClients> <dataCacheClient name="default"> <autoDiscover isEnabled="true" identifier="[cache cluster role name]" /> <!--<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />--> </dataCacheClient> </dataCacheClients>
Sostituire [nome ruolo cluster cache] con il nome del ruolo che ospita il cluster della cache. Nel seguente esempio
[cache cluster role name]
è stato sostituito conCacheWorkerRole1
.<autoDiscover isEnabled="true" identifier="CacheWorkerRole1" />
Avviso
Questa impostazione deve essere configurata in modo corretto, altrimenti i client non saranno in grado di accedere alla cache. Se l'identificatore non esegue il mapping a un ruolo, viene generata un'eccezione TargetInvocationException quando si accede alla cache con un'eccezione DataCacheException interna contenente un messaggio simile al seguente: .
The role [cache cluster role name] was not found in the current deployment
Se l'identificatore esegue il mapping a un ruolo nella distribuzione che non ospita un cluster della cache, viene generata un'eccezione InvalidOperationException con il messaggio seguente: .No Endpoints found
Viene inoltre aggiunta una sezione
cacheDiagnostics
alla sezioneconfiguration
.<cacheDiagnostics> <crashDump dumpLevel="Off" dumpStorageQuotaInMB="100" /> </cacheDiagnostics>
Nota
I dump di arresto anomalo del sistema per i client della cache sono disabilitati per impostazione predefinita e sono controllati da questa sezione. Per altre informazioni sulla diagnostica della memorizzazione nella cache, vedere Risoluzione dei problemi e diagnostica della cache di Azure In-Role.
Il pacchetto NuGet cache In-Role aggiunge anche un'impostazione ClientDiagnosticLevel al ConfigurationSettings
del ruolo client della cache in ServiceConfiguration.cscfg
. L'esempio seguente è la WebRole1
sezione di un ServiceConfiguration.cscfg
file con clientDiagnosticLevel pari a 1, ovvero il valore predefinito ClientDiagnosticLevel.
<Role name="WebRole1">
<Instances count="1" />
<ConfigurationSettings>
<!-- Other settings omitted for clarity... -->
<Setting name="Microsoft.WindowsAzure.Plugins.Caching.ClientDiagnosticLevel" value="1" />
</ConfigurationSettings>
</Role>
Nota
Per altre informazioni sui livelli di diagnostica della cache, vedere Risoluzione dei problemi e diagnostica della cache di Azure In-Role.
Oltre ad aggiungere la configurazione necessaria, il pacchetto NuGet cache In-Role aggiunge anche i riferimenti all'assembly seguenti.
Microsoft.ApplicationServer.Caching.Client.dll
Microsoft.ApplicationServer.Caching.Core.dll
Microsoft.ApplicationServer.Caching.AzureCommon.dll
Microsoft.ApplicationServer.Caching.AzureClientHelper.dll
Microsoft.WindowsFabric.Common.dll
Microsoft.WindowsFabric.Data.Common.dll
Se il ruolo è un ruolo Web, viene aggiunto anche il riferimento al seguente assembly.
- Microsoft.Web.DistributedCache.dll
Nota
In-Role Cache e Memorizzazione nella cache condivisa di Microsoft Azure condividono la stessa API e, anche se i nomi degli assembly sono uguali, gli assembly stessi sono diversi e si trovano in posizioni diverse. Il pacchetto NuGet cache In-Role rimuoverà i riferimenti all'assembly Memorizzazione nella cache condivisa e aggiungerà i riferimenti all'assembly In-Role cache corretti. Gli assembly della cache In-Role si trovano nella C:\Program Files\Microsoft SDKs\Azure\.NET SDK\2012-10\ref\Caching
cartella .
Eseguire la migrazione della memorizzazione nella cache dell'output delle pagine e dello stato della sessione ASP.NET
Dopo aver eseguito la migrazione dei client del ruolo Web ASP.NET da Memorizzazione nella cache condivisa di Microsoft Azure a cache In-Role, come descritto in Configurare i client della cache, sono necessarie solo modifiche minime per archiviare ASP.NET stato sessione o output pagina Caching in una cache nel ruolo. Per consentire la memorizzazione dello stato della sessione ASP.NET nella cache, aggiungere la seguente sezione a system.web
nel file web.config
.
Nota
Se il ruolo Web ASP.NET è già stato configurato per l'uso del provider di stato sessione per Microsoft Azure Cache, questa sezione è già presente.
<sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider">
<providers>
<add name="AppFabricCacheSessionStoreProvider" type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache" cacheName="default" useBlobMode="true" dataCacheClientName="default" />
</providers>
</sessionState>
Aggiornare cacheName
per specificare la cache nel cluster di cache che contiene lo stato della sessione. Usare default
per specificare la cache predefinita.
Per abilitare la memorizzazione nella cache dell'output delle pagine, aggiungere la seguente sezione a system.web
.
Nota
Se il ruolo Web ASP.NET è già stato configurato per l'uso del provider di cache di output per Microsoft Azure cache, questa sezione è già presente.
<caching>
<outputCache defaultProvider="DistributedCache">
<providers>
<add name="DistributedCache" type="Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider, Microsoft.Web.DistributedCache" cacheName="default" dataCacheClientName="default" />
</providers>
</outputCache>
</caching>
Aggiornare cacheName
per specificare la cache nel cluster di cache che contiene lo stato della sessione. Usare default
per specificare la cache predefinita.
Aggiungere una direttiva OutputCache
a ogni pagina per cui si desidera memorizzare l'output nella cache.
<%@ OutputCache Duration="60" VaryByParam="*" %>
In questo esempio i dati delle pagine rimangono memorizzati nella cache per 60 secondi e per ogni combinazione di parametri viene memorizzata nella cache una versione diversa della pagina. Per altre informazioni sulle opzioni disponibili, vedere Direttiva OutputCache.