ASP multiregione.NET Core Fornitore di sessioni
NCache fornisce ASP.NET Core supporto per la condivisione delle sessioni tra più regioni. Ciò impedisce agli utenti di perdere le sessioni nel caso in cui debbano reindirizzare il traffico verso un'altra posizione a causa del traffico o di un ripristino di emergenza. Le sessioni vengono replicate sulla WAN senza soluzione di continuità senza replicare l'intera sessione, il che potrebbe comportare un dispendio di larghezza di banda.
Figura 1: Condivisione delle sessioni tra i data center
Per condividere ASP.NET Core sessione tra regioni, è necessario abilitare l'affinità di posizione. Ciò viene abilitato impostando il flag EnableLocationAffinity su true e fornendo i nomi e i prefissi della cache per identificare l'origine (posizione) della cache per la richiesta. È possibile fornire più nomi di cache che formano la Web farm, tuttavia, la cache specificata in CacheName è considerata la cache primaria per impostazione predefinita.
Prerequisiti per configurare ASP multiregione.NET Core Fornitore di sessioni
- Installa i pacchetti NuGet seguenti nell'applicazione in base al tuo NCache Versione:
- Enterprise: AspNetCore.Session.NCache
- Saloni professionali: AspNetCore.Session.NCache.Professionale
- Fonte aperta: AspNetCore.Session.NCache.Open Source
- Per utilizzare l'estensione, includi i seguenti spazi dei nomi nella tua applicazione in Avvio.cs:
- La cache deve essere in esecuzione.
- Per i dettagli dell'API, fare riferimento a: AggiungiNCacheSessione, Usa il NCacheSessione.
- Assicurati che i dati aggiunti lo siano serializzabile.
- Per garantire che l'operazione sia a prova di errore, si consiglia di gestire eventuali potenziali eccezioni all'interno dell'applicazione, come spiegato in Gestione dei guasti.
- Per gestire eventuali eccezioni invisibili, fare riferimento a Troubleshooting .
Passaggio 1: configurare i servizi
È necessario inizializzare il servizio di gestione della sessione. In Avvio.cs, Usa il AddNCacheSession()
metodo di estensione attivato IServiceCollection
in ConfigureServices()
per inizializzare il servizio. L'overload di base di questo metodo di estensione richiede un IOptions<NCacheSessionConfiguration>
come sua configurazione di base.
Esistono due metodi per specificare le configurazioni:
- Attraverso la tua applicazione Startup.cs o
- In formato JSON in Appsettings.json .
Metodo 1: specifica delle configurazioni in Startup.cs
Per abilitare la condivisione della sessione, è necessario impostare il file EnableLocationAffinity
contrassegnare su true e fornire l'elenco delle cache in AffinityMapping
. Tieni presente che una delle cache deve corrispondere a CacheName, che è considerata la cache primaria. È inoltre necessario specificare una directory condivisa da entrambe le applicazioni.
Note:
Il prefisso della cache deve contenere al massimo 4 caratteri.
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.AddDataProtection()
.PersistKeysToFileSystem(new DirectoryInfo(dir))
.SetApplicationName("SharedCookieApp");
services.AddNCacheSession(configuration =>
{
configuration.CacheName = "LondonCache"; //compulsory
configuration.EnableLogs = true;
configuration.SessionOptions.IdleTimeout = 5;
configuration.EnableLocationAffinity = true;
configuration.AffinityMapping = new CacheAffinity[]
{
new CacheAffinity { CacheName = "LondonCache", CachePrefix = "LDNC"},
new CacheAffinity { CacheName = "NewYorkCache", CachePrefix = "NYKC"},
new CacheAffinity { CacheName = "TokyoCache", CachePrefix = "TKYC"},
};
});
}
Metodo 2: specifica delle configurazioni in Appsettings.json
È necessario inizializzare il servizio di gestione della sessione. In Avvio.cs, Usa il AddNCacheSession()
metodo di estensione attivato IServiceCollection
in ConfigureServices()
per inizializzare il servizio. L'overload di base di questo metodo di estensione richiede un IOptions<NCacheSessionConfiguration>
come sua configurazione di base.
Note:
Il prefisso della cache deve contenere al massimo 4 caratteri.
"NCacheSettings": {
"EnableLocationAffinity": true,
"EnableLogs": true,
"RequestTimeout": 5,
"CacheName": "LondonCache",
"AffinityMapping": [
{
"CacheName": "LondonCache",
"CachePrefix": "LDNC"
},
{
"CacheName": "NewYorkCache",
"CachePrefix": "NYKC"
},
{
"CacheName": "TokyoCache",
"CachePrefix": "TKYC"
}
]
}
public void ConfigureServices(IServiceCollection services)
{
//Add framework services
services.AddMvc();
//Add services to the container
services.AddNCacheSession(Configuration.GetSection("NCacheSettings"));
}
Passaggio 2: aggiungere il middleware all'applicazione
Una volta inizializzati i servizi, è possibile configurare la pipeline delle richieste HTTP aggiungendo il middleware nel file Configure()
metodo. Di seguito è riportato un estratto che mostra l'aggiunta di uno strato middleware attraverso l'uso del file UseNCacheSession()
metodo di estensione in IApplicationBuilder
. NCache il middleware della sessione deve sempre essere impilato prima del livello che utilizza le sessioni.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
if (env.IsDevelopment()){
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
}
else{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseNCacheSession(); //store NCache session data
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=myApp}/{action=Index}/{id?}");
});
}
Ora puoi procedere a uso NCache come cache sottostante per il tuo ASP.NET Core sessioni.
Risorse addizionali
NCache fornisce un'applicazione di esempio per la memorizzazione nella cache della sessione GitHub.
- Spedito con NCache: %NCHOME%\samples\dotnetcore\SessionCaching
Vedere anche
.NETTO: Alachisoft.NCache.Web.SessionStato spazio dei nomi.