ASP.NET Core Sitzungsanbieter für NCache in Webfarmen

ASP.NET Core wurde komplett neu aufgebaut und hat daher ein anderes Session-Management-System als das ältere ASP.NET.

Obwohl ASP.NET Core bietet einen In-Memory-Session-Provider, der Sessions auf dem Webserver selbst speichert, ASP.NET Core Sitzungsspeicher in Webfarmen ist eine Herausforderung.

Ein Ansatz besteht darin, Sticky-Sessions in Webfarmen zu verwenden, die alle Benutzeranforderungen über das Application Request Routing-Modul an denselben Webserver weiterleiten. Sticky Sessions können jedoch die Skalierbarkeit beeinträchtigen und zu einer falschen Lastverteilung führen. Ein relativ besserer Ansatz ist die Verwendung von SQL Server für die Sitzungsspeicherung. Wenn es jedoch um skalierbares ASP geht.NET core Anwendungen, die SQL-Datenbanken werden zum Leistungsengpass. Dies liegt daran, dass SQL Server (wie alle relationalen Datenbanken) BLOBs nicht gut speichern kann und Sitzungen in der Datenbank als BLOBs gespeichert werden.

Eine praktikable Option ist die Verwendung von a Verteilter Cache zum Speichern von ASP.NET Core Sessions in einer Webfarm. Und der am besten geeignete verteilte Cache für diesen Zweck ist NCache das einen leistungsstarken und funktionsreichen ASP bietet.NET Core Sitzungsdienst, den Sie verwenden können.

NCache ist ein extrem schneller und skalierbarer verteilter Cache für .NET/.NET Core. Es bewältigt extreme Transaktionslasten, indem es Ihnen ermöglicht, zur Laufzeit weitere Cache-Server hinzuzufügen und linear zu skalieren. Inzwischen, NCache hohe Verfügbarkeit und dynamisches Cache-Clustering Stellen Sie sicher, dass Sie kein ASP verlieren.NET Core Sitzungsdaten, wenn ein Webserver oder ein Cache-Server ausfällt.

ASP.NET Core Sitzung - NCache

ASP konfigurieren.NET Core Sitzungsanbieter für NCache

Im Gegensatz zu ASP.NET, wo Sie nur web.config ändern, erfordert ASP.NET, dass Sie die "KonfigurierenServices()"-Methode in der Startup-Klasse. Der folgende Code zeigt, wie Sie dies tun können NCache. Weitere Einzelheiten finden Sie unter NCache ASP.NET Core Dokumentation zur Konfiguration des Sitzungsanbieters und folge den Schritten.

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";
    });
}

Vorteile von ASP.NET Core Sitzungsanbieter für NCache

Zunächst einmal ist für die Verwendung nur sehr wenig Programmierung erforderlich NCache als Ihr ASP.NET Core Sitzungsanbieter; die Codeänderung ist in der ConfigureServices(IServiceCollection services) Methode in der Startup Klasse. Details siehe unter ASP konfigurieren.NET Core Sitzungsanbieter für NCache. Im Folgenden sind einige der Vorteile für die Verwendung aufgeführt NCache als Ihr ASP.NET Core Sitzungsstatusanbieter:

  1. Hohe Verfügbarkeit: Ihr ASP.NET Core Die meisten Anwendungen erfordern eine hohe Verfügbarkeit von allem, wovon sie in der Produktion abhängen. Und, NCache bietet Ihnen dies durch a selbstheilende Peer-to-Peer-Clustering-Architektur das keinen Single Point of Failure hat. NCache repliziert auch ASP.NET Core Sitzungen, damit es keinen Datenverlust gibt, falls ein Server ausfällt.

  2. Lineare Skalierbarkeit: Ihr ASP.NET Core Die Anwendung muss höchstwahrscheinlich skaliert werden, um hohe Transaktionslasten zu bewältigen. Und wenn Ihr ASP.NET Core Wenn der Sitzungsspeicher nicht skaliert, wird Ihre Anwendung auch nicht skaliert. Glücklicherweise, NCache bietet lineare Skalierbarkeit und wird nie zu einem Flaschenhals für Ihren ASP.NET Core Anwendung.

  3. Intelligente Sitzungsreplikation: Die Sitzungsreplikation bietet zwar eine hohe Verfügbarkeit, ist jedoch mit Leistungseinbußen verbunden. NCache minimiert diese Kosten durch seine Reichhaltigkeit Caching-Topologien (Gespiegelter Cache, replizierter Cache und Partitionsreplikat-Cache). NCache repliziert Daten ohne spürbare Leistungseinbußen und erreicht dennoch Datenzuverlässigkeit.

  4. Schnelle kompakte Serialisierung: Die reguläre .NET-Serialisierung ist bei größeren Objekten oft langsam und sperrig. Um diesen Engpass zu umgehen, NCache hat a implementiert Kompakte Serialisierung das geht viel schneller. Sie müssen nur Ihre Klassen anmelden und NCache macht den Rest. Es ist keine Programmierung erforderlich. Nach der Verbindungszeit, NCache Generiert Serialisierungsquellcode, kompiliert ihn im Arbeitsspeicher und verwendet ihn dann für die Serialisierung.

Unterstützung für mehrere Regionen (Rechenzentren)

NCache ermöglicht Ihnen die Verwaltung von ASP.NET Core Sitzungen für Anwendungen, die in mehreren Regionen (Rechenzentren) ausgeführt werden. Hier sind sie:

  1. WAN-Replikation von ASP.NET Core Sitzungen: NCache bietet eine Multi-Datacenter-WAN-Replikationsfunktion, mit der Sie auch alle ASPs replizieren können.NET Core Sitzungen über das WAN in eine andere Region (Rechenzentrum). Dies erfolgt über eine Bridge-Topologie-Funktion von NCache. Dadurch wird sichergestellt, dass Ihr ASP.NET Core Sitzungen gehen nie verloren, selbst wenn eine Region (Rechenzentrum) ausfällt.

  2. ASP.NET-Sitzungsstatus für mehrere Regionen: Wenn Sie den ASP.NET-Sitzungsstatus aufgrund der Kosten für den Bandbreitenverbrauch nicht über das WAN replizieren möchten, können Sie sich für die Verwendung entscheiden NCache ASP.NET-Sitzungszustandsfunktion für mehrere Standorte. Dabei wird der ASP.NET-Sitzungsstatus nicht standortübergreifend repliziert, sondern am Ort seiner Erstellung aufbewahrt. Wenn Sie jedoch Datenverkehr von einer Region (Rechenzentrum) in eine andere verschieben, wird der ASP.NET-Sitzungsstatus mit verschoben. Weitere Details finden Sie auf unserer Produktseite für Regionsübergreifender ASP.NET-Sitzungszustandsanbieter für NCache.

Erweiterte Funktionen im NCache ASP.NET Core Sitzungsanbieter

ASP.NET Core Sitzungsanbieter für NCache implementiert alle Standard-ASP.NET Core Funktionen des Sitzungsanbieters. Darüber hinaus implementiert es verschiedene erweiterte Funktionen, mit denen Sie komplexe Situationen in Ihren Anwendungen im bearbeiten können ConfigureServices(IServiceCollection services) Methode.

  1. Standardsitzungssperre: Das Standard-ASP.NET Core Das Sitzungssperrverhalten besteht darin, dass die Sitzung niemals gesperrt wird. Daher können Sie die Sitzung beschädigen, wenn Sie versuchen, sie gleichzeitig zu aktualisieren. Damit, NCache hat eine Funktion zum Sperren von Sitzungen ähnlich dem älteren ASP.NET-Sitzungsstatus implementiert, bei der eine weitere Anforderung 90 Sekunden lang wartet (konfigurierbar), wenn eine Sitzung gesperrt ist, und am Ende die Sitzung zwangsweise entsperrt wird. Sie können diese Sperroption als folgende Eigenschaften in der "Konfiguration" festlegen:

    services.AddNCacheSession(configuration =>
    {
    configuration.RequestTimeout = 90;
    configuration.EnableSessionLocking = true;
    configuration.SessionLockingRetry = -1;
    configuration.EmptySessionWhenLocked = false;
    ...
    });
  2. Verbesserte Sitzungssperre: Für einen ASP mit hohem Datenverkehr.NET Core Anwendung haben Sie möglicherweise Roboter, die Daten auslesen und dieselbe Sitzungs-ID für Hunderte oder Tausende von Anfragen gleichzeitig verwenden. In diesem Fall können Sie sich die standardmäßige Option zum Sperren von Sitzungen nicht leisten, da das Warten auf 90 Sekunden alle Ihre verfügbaren Sockets binden könnte. Stattdessen möchten Sie die Anforderung schnell zurückgeben, um auf einen Fehler hinzuweisen. Dies können Sie wie folgt festlegen:

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

    Dies macht 5 Wiederholungen in Intervallen von einer halben Sekunde und gibt dann eine leere Sitzung zurück, um einen Fehler anzuzeigen. Selbst das Auslösen einer Ausnahme ist hier kostspielig. Aus diesem Grund wird eine leere Sitzung implementiert. Dieses Verhalten wurde ursprünglich auf Anfrage einer stark frequentierten Airline-Website implementiert.

  3. Fehlerprotokollierung: Sie können die Fehlerprotokollierung in einer Protokolldatei auf Ihrem Webserver aktivieren (in INSTALL_DIR\NCache\log-files\SessionStoreProvider Ordner) durch Angabe der „EnableLogs“ und „WriteExceptionsToEventLog" Konfigurationseigenschaften wie folgt:

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

Was macht man als nächstes

Melden Sie sich für den monatlichen E-Mail-Newsletter an, um die neuesten Updates zu erhalten.

© Copyright Alachisoft 2002 - . Alle Rechte vorbehalten. NCache ist eine eingetragene Marke der Diyatech Corp.