ASP.NET Core est un framework open source utilisé pour créer des applications Web évolutives. Il offre des fonctionnalités multiplateformes et est très populaire auprès des microservices architecture. Et, avec l'avènement de .FILET 6.0, il ne fait que s'améliorer en termes de performances et d'expérience de développement. Cependant, certains goulots d'étranglement existent toujours qui freinent son véritable potentiel.
L'un de ces goulots d'étranglement est le temps de lecture de la base de données et ce goulot d'étranglement est particulièrement visible lorsque votre application doit servir des centaines de milliers d'utilisateurs à la fois. ASPIC.NET Core le stockage de session peut aider à atténuer ces problèmes en utilisant le stockage de données en mémoire. Cependant, le fournisseur de stockage de session par défaut présente quelques limitations. Ceux-ci sont:
- Perte de session : Les sessions sont perdues si le serveur d'applications tombe en panne.
- Limitations de la mémoire: Étant donné que les données sont stockées dans l'espace mémoire du processus d'application.
- Aucune réplication de session : Si le trafic est redirigé vers un autre serveur pour une raison quelconque, les sessions ne sont pas reportées.
- Séances collantes : Dans un environnement de batterie de serveurs Web, des sessions persistantes doivent être utilisées, ce qui va à l'encontre de l'objectif d'équilibrage de charge.
Heureusement pour toi NCache est là pour résoudre tous ces problèmes et plus encore. Nous entrerons dans les détails dans les sections suivantes.
NCache Détails Télécharger NCache ASP .NET Core Stratégies de stockage de session
Pourquoi utiliser le stockage de session distribué en premier lieu ?
Par définition, HTTP est un protocole sans état, ce qui signifie que les informations ne sont pas conservées sur plusieurs requêtes. Un mécanisme tiers est généralement utilisé pour transférer les informations. L'un de ces mécanismes est le stockage de session. ASPIC.NET Core propose son stockage de session, qui sauvegarde les données dans un cache. Ainsi, au lieu d'aller simplement directement à la base de données, l'application vérifiera d'abord si elle a les informations stockées dans le cache, si oui, l'application renverra ces informations et si ce n'est pas le cas, alors seulement l'application interrogera la base de données.
Cependant, gardez à l'esprit que les données de session sont considérées comme des données éphémères. L'application doit continuer à fonctionner indépendamment d'un cache de session vide. Les données de session ne doivent être utilisées que pour les besoins d'optimisation des performances. ASPIC.NET Core offre deux options pour la mise en cache de session :
Ces deux options sont assez rapides et, pour la plupart, feront le travail. Cependant, leurs implémentations par défaut présentent les mêmes inconvénients. Les deux offrent des caches autonomes avec un point de défaillance unique et sans possibilité de réplication des données en cas de panne d'un serveur. Pour les applications critiques, où un grand nombre d'utilisateurs demandent des ressources en même temps et où la perte de données de session n'est pas une option, un cache distribué est la solution.
Constat NCache?
NCache est un cache distribué en mémoire open source développé nativement dans .NET et .NET Core. Il peut être configuré pour fonctionner localement ainsi que sur certaines plateformes d'hébergement tierces. De plus, NCache peut être configuré comme un magasin de sauvegarde pour le stockage de session avec très peu de changements de code, et en raison de sa nature distribuée inhérente, les problèmes suivants seront résolus :
- Limites de mémoire : Le cache lui-même sera désormais dans un processus distinct de l'application Web réelle, donc plus de limitations de mémoire.
- Meilleure fiabilité: Le cluster de cache peut même être sur un ensemble de machines complètement séparé, pour obtenir une fiabilité encore meilleure.
- Topologies de mise en cache : NCache propose 4 différents topologies de mise en cache. Vous pouvez choisir l'un d'entre eux en fonction de vos besoins, que vous donniez la priorité à l'évolutivité, à la haute disponibilité ou à la réplication des données (au détriment de l'utilisation de la mémoire).
- Réplication des données : Même si un serveur d'application tombe en panne, les données de session seront conservées en toute sécurité.
- Multi-Stockage de session de région : NCache . Partage de session multi-régions aussi bien. Les sessions sont répliquées de manière transparente sur le WAN. Ainsi, si les utilisateurs doivent être redirigés vers un autre emplacement, leurs sessions seront conservées intactes.
NCache offre deux stratégies pour le stockage de session, l'une est avec le Fournisseur de stockage de session et l'autre est NCachel'implémentation de IDistributedCache. Dans les sections suivantes, nous entrerons dans les détails techniques de la façon dont NCache peut aider au stockage de session d'ASP.NET Core.
NCache Détails ASP .NET Core Stratégies de stockage de session ASP.NET Core Cache haute performance
Stockage de session à l'aide NCache
Mise en place NCache en tant que magasin de sauvegarde pour le stockage de session est très simple. Nous examinerons deux approches proposées par NCache:
Méthode 1 : fournisseur de magasin de sessions
Pour cette approche, vous devez installer le AspNetCore.Session.NCache Paquet NuGet. Une fois ce package installé, assurez-vous d'inclure le Alachisoft.NCache.Web.SessionState
espace de noms dans le Démarrage.cs dossier de votre candidature, et ajoutez NCache en tant que service dans votre collection de services :
1 2 3 4 5 6 7 8 9 10 |
public void ConfigureServices(IServiceCollection services) { services.AddNCacheSession(configuration => { configuration.CacheName = "demoCache"; configuration.EnableLogs = true; configuration.SessionAppId = "demoApp"; configuration.SessionOptions.IdleTimeout = 5; configuration.SessionOptions.CookieName = "AspNetCore.Session"; }); } |
Et voilà, vous avez configuré avec succès NCache en tant que fournisseur de stockage de session. Pour plus de détails sur NCache, vous pouvez consulter NCache guide des programmeurs.
Méthode 2 : Implémentation de IDistributedCache
Si vous utilisez déjà une implémentation de IDistributedCache
, vous pouvez suivre cette approche. Installez simplement le NCache.Microsoft.Extensions.Caching Paquet NuGet. Et lors de la configuration des services pour votre ASP.NET Core application il suffit d'ajouter le code suivant :
1 2 3 4 5 6 7 8 9 |
public void ConfigureServices(IServiceCollection services) { services.AddNCacheDistributedCache(configuration => { configuration.CacheName = "demoCache"; configuration.EnableLogs = true; configuration.ExceptionsEnabled = true; }); } |
Et voilà, vous pouvez maintenant utiliser NCachela mise en œuvre de IDistributedCache
.
Stockage de session multi-régions à l'aide NCache
Outre les capacités de réplication de données fournies par les différentes topologies de mise en cache, NCache offre également un partage de session complet entre des clusters de cache distincts. Cela peut être très utile dans les situations où vous avez différents centres de données pour différentes régions, et peut-être en raison de circonstances inévitables, vous devez rediriger votre trafic d'une région à une autre.
Vous pouvez facilement configurer le partage de session entre vos différentes régions. Les sessions d'une région seront répliquées de manière transparente sur le WAN vers les autres régions. Les données de session sont répliquées du cache principal vers un ou plusieurs caches secondaires. Pour utiliser le partage de session multi-région, vous devez utiliser le NCache fournisseur de stockage de session et seules les modifications suivantes seront nécessaires dans votre Démarrage.cs fichier:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public void ConfigureServices(IServiceCollection services) { services.AddNCacheSession(configuration => { configuration.CacheName = "LondonCache"; configuration.EnableLogs = true; configuration.SessionAppId = "demoApp"; configuration.SessionOptions.IdleTimeout = 5; configuration.SessionOptions.CookieName = "AspNetCore.Session"; 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" } }; }); } |
Remarque : Une chose à garder à l'esprit est que l'affinité d'emplacement doit être activée afin d'utiliser le partage de session multirégional.
Le nom du cache est spécifié dans le configuration.CacheName
sera votre cache principal, tandis que tous les caches restants spécifiés dans le configuration.AffinityMapping
seront vos caches secondaires. La CachePrefix
est important, car ce préfixe est attaché à l'ID de session. Ce préfixe identifie l'endroit où les données de session sont stockées. Ainsi, si une requête arrive dans un cache et que le préfixe du cache est différent du préfixe du cache actuel, alors le cache réel est contacté pour les données de session (si les données ne sont pas déjà présentes). Maintenant que le cache actuel contient les données de session, toutes les requêtes suivantes seront désormais servies localement à partir de ce cache.
NCache Détails ASP .NET Core Stratégies de stockage de session Partage de session multi-régions
Conclusion
Dans ce blog, nous avons examiné pourquoi le stockage de session est une fonctionnalité puissante d'ASP.NET Core et comment cela peut considérablement améliorer les performances de votre application. Nous avons également examiné comment NCache peut considérablement améliorer le stockage des sessions à l'aide de la mise en cache distribuée et si vous avez besoin d'une fiabilité encore meilleure, vous pouvez toujours opter pour NCachela fonctionnalité de partage de session multirégionale de pour une expérience utilisateur de premier ordre.