ASP multi-régions.NET Core Fournisseur de sessions
NCache fournit ASP.NET Core prise en charge du partage de sessions dans plusieurs régions. Cela empêche les utilisateurs de perdre leurs sessions au cas où ils auraient besoin de rediriger leur trafic vers un autre emplacement en raison du trafic ou d'une reprise après sinistre. Les sessions sont répliquées de manière transparente sur le WAN sans répliquer l'intégralité de la session, ce qui peut entraîner une dépense en bande passante.
Figure 1 : Partage de session entre les centres de données
Pour partager ASP.NET Core session dans toutes les régions, vous devez activer l’affinité de localisation. Ceci est activé en définissant l'indicateur EnableLocationAffinity sur true et en fournissant les noms et préfixes du cache pour identifier la source (emplacement) du cache pour la demande. Vous pouvez fournir plusieurs noms de cache qui forment la batterie de serveurs Web. Toutefois, le cache spécifié pour CacheName est considéré comme le cache principal par défaut.
Conditions préalables pour configurer ASP multi-régions.NET Core Fournisseur de sessions
- Installez les packages NuGet suivants dans votre application en fonction de votre NCache Version:
- Enterprise: AspNetCore.Session.NCache
- Professionnel: AspNetCore.Session.NCache.Professionnel
- Open source: AspNetCore.Session.NCache.Open source
- Pour utiliser l'extension, incluez les espaces de noms suivants dans votre application dans Démarrage.cs:
- Le cache doit être en cours d'exécution.
- Pour plus de détails sur l'API, reportez-vous à : AjouterNCacheSession, UtilisezNCacheSession.
- Assurez-vous que les données ajoutées sont sérialisable.
- Pour s'assurer que l'opération est sécurisée, il est recommandé de gérer toutes les exceptions potentielles dans votre application, comme expliqué dans Gestion des échecs.
- Pour gérer les exceptions invisibles, reportez-vous au Dépannage .
Étape 1 : Configurer les services
Le service de gestion de session doit être initialisé. Dans Démarrage.cs, Utilisez l' AddNCacheSession()
méthode d'extension sur IServiceCollection
in ConfigureServices()
pour initialiser le service. La surcharge très basique de cette méthode d'extension prend un IOptions<NCacheSessionConfiguration>
comme configuration de base.
Il existe deux méthodes pour spécifier des configurations :
- Via votre application Startup.cs ou
- Au format JSON dans Appsettings.json .
Méthode 1 : spécification des configurations dans Startup.cs
Pour activer le partage de session, il est nécessaire de définir le EnableLocationAffinity
drapeau à vrai et fournir la liste des caches dans AffinityMapping
. Notez que l'un des caches doit correspondre au CacheName, qui est considéré comme le cache principal. Il est également nécessaire de spécifier un répertoire partagé par les deux applications.
Notes
Le préfixe du cache doit comporter au maximum 4 caractères.
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"},
};
});
}
Méthode 2 : Spécification des configurations dans Appsettings.json
Le service de gestion de session doit être initialisé. Dans Démarrage.cs, Utilisez l' AddNCacheSession()
méthode d'extension activée IServiceCollection
in ConfigureServices()
pour initialiser le service. La surcharge très basique de cette méthode d'extension prend un IOptions<NCacheSessionConfiguration>
comme configuration de base.
Notes
Le préfixe du cache doit comporter au maximum 4 caractères.
"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"));
}
Étape 2 : ajouter un middleware à l'application
Une fois les services initialisés, vous pouvez configurer le pipeline de requêtes HTTP en ajoutant un middleware dans le fichier Configure()
méthode. Ce qui suit est un extrait montrant l'ajout d'une couche middleware grâce à l'utilisation du UseNCacheSession()
méthode d'extension dans IApplicationBuilder
L’ NCache le middleware de session doit toujours être empilé avant la couche qui utilise les sessions.
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?}");
});
}
Vous pouvez maintenant passer à utilisé NCache comme cache sous-jacent pour votre ASP.NET Core sessions.
Ressources additionnelles
NCache fournit un exemple d'application pour la mise en cache de session sur GitHub.
- Livré avec NCache: %NCHOME%\samples\dotnetcore\SessionCaching
Voir aussi
.RAPPORTER: Alachisoft.NCache.Web.SessionState espace de noms.