ASP.NET Core Fournisseur de sessions pour NCache dans les fermes Web

ASP.NET Core a été entièrement repensé et dispose donc d'un système de gestion de session différent de l'ancien ASP.NET.

Bien que l'ASP.NET Core fournit un fournisseur de sessions en mémoire qui stocke les sessions sur le serveur Web lui-même, ASP.NET Core stockage de session dans les fermes Web est difficile.

Une approche consiste à utiliser des sessions persistantes dans des fermes Web qui acheminent toutes les demandes des utilisateurs vers le même serveur Web via le module Application Request Routing. Cependant, les sessions persistantes peuvent affecter l'évolutivité et entraîner une mauvaise répartition de la charge. Une approche relativement meilleure consiste à utiliser SQL Server pour le stockage de session. Cependant, lorsqu'il s'agit d'ASP évolutif.NET core candidatures, le Les bases de données SQL deviennent un goulot d'étranglement des performances. En effet, SQL Server (comme toutes les bases de données relationnelles) n'est pas bon pour stocker les BLOB et les sessions sont enregistrées dans la base de données en tant que BLOB.

Une option viable consiste à utiliser un cache distribué pour stocker ASP.NET Core brainstorming dans une ferme Web. Et, le cache distribué le plus approprié à cet effet est NCache qui fournit un ASP puissant et riche en fonctionnalités.NET Core Service de session que vous pouvez utiliser.

NCache est un extrêmement cache distribué rapide et évolutif pour .NET/.NET Core. Il gère une charge de transaction extrême en vous permettant d'ajouter plus de serveurs de cache au moment de l'exécution et d'évoluer de manière linéaire. Entre-temps, NCache haute disponibilité et clustering de cache dynamique assurez-vous de ne perdre aucun ASP.NET Core Données de session si un serveur Web ou un serveur de cache tombe en panne.

ASP.NET Core Session - NCache

Configuration de l'ASP.NET Core Fournisseur de sessions pour NCache

Contrairement à ASP.NET où vous ne modifiez que web.config, ASP.NET vous oblige à modifier le "ConfigureServices()" dans la classe Startup. Le code suivant montre comment vous pouvez le faire pour NCache. Pour plus de détails, consultez NCache ASP.NET Core Documents de configuration du fournisseur de session et suivez les étapes.

public void ConfigureServices(IServiceCollection services)
{
    // Add framework services
    services.AddMvc();

    // Add NCache Session service to IServiceCollection with various configuration 
    // options

    services.AddNCacheSession(configuration =>
    {
        configuration.CacheName = "mySessionCache";
        configuration.EnableLogs = true;
        configuration.SessionAppId = "NCacheSessionApp";
        configuration.SessionOptions.IdleTimeout = 5;
        configuration.SessionOptions.CookieName = "AspNetCore.Session";
    });
}

Avantages de l'ASP.NET Core Fournisseur de sessions pour NCache

Tout d'abord, il y a très peu de programmation nécessaire pour utiliser NCache en tant que votre ASP.NET Core fournisseur de sessions ; le changement de code est dans le ConfigureServices(IServiceCollection services) méthode dans le Startup classer. Voir les détails sur Configurer ASP.NET Core Fournisseur de sessions pour NCache. Voici quelques-uns des avantages de l'utilisation NCache en tant que votre ASP.NET Core Fournisseur d'état de session :

  1. La haute disponibilité: Votre FAI.NET Core l'application nécessite le plus une haute disponibilité de tout ce dont elle dépend en production. Et, NCache vous le propose par le biais d'un architecture de clustering peer to peer à auto-guérison qui n'a pas de point de défaillance unique. NCache réplique également ASP.NET Core Sessions afin qu'il n'y ait pas de perte de données en cas de panne d'un serveur.

  2. Évolutivité linéaire : Votre FAI.NET Core l'application doit très probablement évoluer pour gérer des charges de transaction élevées. Et, si votre ASP.NET Core Le magasin de session ne s'adapte pas, votre application ne le sera pas non plus. Heureusement, NCache fournit évolutivité linéaire et ne devient jamais un goulot d'étranglement pour votre ASP.NET Core .

  3. Réplication de session intelligente : Bien que la réplication de session offre une haute disponibilité, elle a un coût en termes de performances. NCache minimise ce coût grâce à sa richesse topologies de mise en cache (Cache miroir, cache répliqué et cache de partition-réplication). NCache réplique les données sans sacrifier les performances de manière notable tout en garantissant la fiabilité des données.

  4. Sérialisation compacte et rapide : La sérialisation .NET régulière est souvent lente et volumineuse pour les objets plus volumineux. Pour gérer ce goulot d'étranglement, NCache a mis en place un Sérialisation compacte c'est beaucoup plus rapide. Il vous suffit d'inscrire vos cours et NCache fait le reste. Aucune programmation n'est nécessaire. Au moment de la connexion, NCache génère le code source de sérialisation, le compile en mémoire, puis l'utilise pour la sérialisation.

Prise en charge de plusieurs régions (centres de données)

NCache vous permet de gérer ASP.NET Core Sessions pour les applications exécutées dans plusieurs régions (centres de données). Les voici:

  1. Réplication WAN d'ASP.NET Core Séances: NCache fournit une fonctionnalité de réplications WAN multi-centres de données qui vous permet également de répliquer tous les ASP.NET Core sessions sur le WAN vers une autre région (centre de données). Cela se fait via une fonctionnalité de topologie de pont de NCache. Cela garantit que votre ASP.NET Core les sessions ne sont jamais perdues même si une région (centre de données) tombe en panne.

  2. État de la session ASP.NET multirégionale : Si vous ne souhaitez pas répliquer l'état de session ASP.NET sur le WAN en raison du coût de la consommation de bande passante, vous pouvez choisir d'utiliser NCache Fonctionnalité d'état de session ASP.NET multisite. Dans ce cas, l'état de session ASP.NET n'est pas répliqué sur les sites et est plutôt conservé à l'emplacement de sa création. Mais, si vous déplacez du trafic d'une région (centre de données) à une autre, l'état de session ASP.NET se déplace avec lui. Pour plus de détails, vous pouvez lire notre page produit pour Fournisseur d'état de session ASP.NET multirégional pour NCache.

Fonctionnalités avancées dans NCache ASP.NET Core Fournisseur de sessions

ASP.NET Core Fournisseur de sessions pour NCache implémente tous les ASP standards.NET Core Fonctionnalités du fournisseur de sessions. De plus, il implémente diverses fonctionnalités avancées pour vous permettre de gérer des situations complexes dans vos applications dans le ConfigureServices(IServiceCollection services) méthode.

  1. Verrouillage de session standard : L'ASP standard.NET Core le comportement de verrouillage de session est que la session n'est jamais verrouillée. Par conséquent, vous risquez de corrompre la session si vous essayez de la mettre à jour simultanément. Alors, NCache a implémenté une fonctionnalité de verrouillage de session similaire à l'ancien état de session ASP.NET où si une session est verrouillée, une autre demande attend pendant 90 secondes (configurable) et à la fin déverrouille de force la session. Vous pouvez spécifier cette option de verrouillage en tant que propriétés suivantes dans la "configuration" :

    services.AddNCacheSession(configuration =>
    {
    configuration.RequestTimeout = 90;
    configuration.EnableSessionLocking = true;
    configuration.SessionLockingRetry = -1;
    configuration.EmptySessionWhenLocked = false;
    ...
    });
  2. Verrouillage de session amélioré : Pour un ASP à fort trafic.NET Core application, vous pouvez avoir des robots qui récupèrent des données et utilisent le même identifiant de session pour des centaines ou des milliers de requêtes simultanément. Dans ce cas, vous ne pouvez pas vous permettre l'option de verrouillage de session standard car attendre 90 secondes pourrait bloquer toutes vos sockets disponibles. Au lieu de cela, vous souhaitez renvoyer la demande rapidement pour indiquer un échec. Vous pouvez le spécifier comme suit :

    services.AddNCacheSession(configuration =>
    {
    configuration.EnableSessionLocking = true;
    configuration.SessionLockingRetry = 5;
    configuration.EmptySessionWhenLocked = true;
    ...
    });

    Cela fait 5 tentatives à des intervalles d'une demi-seconde, puis renvoie une session vide pour signifier un échec. Même lancer une exception ici est coûteux. C'est pourquoi une session vide est implémentée. Ce comportement a été mis en œuvre à l'origine à la demande d'un site Web de compagnie aérienne à fort trafic.

  3. Journalisation des erreurs : Vous pouvez activer la journalisation des erreurs dans un fichier journal sur votre serveur Web (dans INSTALL_DIR\NCache\log-files\SessionStoreProvider dossier) en spécifiant les "EnableLogs" et "WriteExceptionsToEventLog" propriétés de configuration comme suit :

    services.AddNCacheSession(configuration =>
    {
    configuration.EnableLogs = true;
    configuration.WriteExceptionsToEventLog = false;
    ...
    });
    

Que faire ensuite

© Copyright Alachisoft 2002 - . Tous droits réservés. NCache est une marque déposée de Diyatech Corp.