ASP.NET Core ist ein Open-Source-Framework zum Erstellen skalierbarer Webanwendungen. Es bietet plattformübergreifende Funktionen und ist bei den sehr beliebt Microservices die Architektur. Und mit dem Aufkommen von .NETTO 6.0, es wird nur besser in Bezug auf Leistung und Entwicklungserfahrung. Es gibt jedoch immer noch bestimmte Engpässe, die ihr wahres Potenzial zurückhalten.
Einer dieser Engpässe sind die Lesezeiten der Datenbank, und dieser Engpass macht sich besonders bemerkbar, wenn Ihre Anwendung Hunderttausende von Benutzern gleichzeitig bedienen muss. ASP.NET Core Sitzungsspeicherung kann dazu beitragen, solche Probleme durch die Verwendung von In-Memory-Datenspeicherung zu mindern. Der standardmäßige Sitzungsspeicheranbieter weist jedoch einige Einschränkungen auf. Diese sind:
- Sitzungsverlust: Sitzungen gehen verloren, wenn der Anwendungsserver ausfällt.
- Speicherbeschränkungen: Da Daten im Speicherplatz des Anwendungsprozesses gespeichert werden.
- Keine Sitzungsreplikation: Wenn der Datenverkehr aus irgendeinem Grund auf einen anderen Server umgeleitet wird, werden Sitzungen nicht übertragen.
- Sticky-Sitzungen: In einer Webfarmumgebung müssen Sticky Sessions verwendet werden, was den Zweck des Lastenausgleichs zunichte macht.
Zum Glück für Sie, NCache ist hier, um all diese Probleme und mehr zu lösen. Auf weitere Details gehen wir in den folgenden Abschnitten ein.
NCache Details Herunterladen NCache ASP .NET Core Sitzungsspeicherstrategien
Warum überhaupt verteilten Sitzungsspeicher verwenden?
Per Definition ist HTTP ein zustandsloses Protokoll, was bedeutet, dass Informationen nicht über mehrere Anfragen hinweg aufbewahrt werden. Normalerweise wird ein Mechanismus eines Drittanbieters verwendet, um Informationen zu übertragen. Ein solcher Mechanismus ist die Sitzungsspeicherung. ASP.NET Core bietet seinen Sitzungsspeicher an, der Daten in einem Cache sichert. Anstatt also direkt zur Datenbank zu gehen, prüft die Anwendung zunächst, ob die Informationen im Cache gespeichert sind. Wenn ja, gibt die Anwendung diese Informationen zurück, und wenn nicht, fragt die Anwendung erst dann die Datenbank ab.
Beachten Sie jedoch, dass Sitzungsdaten als flüchtige Daten gelten. Die Anwendung sollte unabhängig von einem leeren Sitzungscache weiterhin funktionieren. Sitzungsdaten sollten nur für Zwecke der Leistungsoptimierung verwendet werden. ASP.NET Core bietet zwei Optionen für das Session-Caching:
Beide Optionen sind ziemlich schnell und erledigen die Arbeit größtenteils. Ihre Standardimplementierungen haben jedoch die gleichen Nachteile. Beide bieten eigenständige Caches mit einem Single Point of Failure und ohne Option zur Datenreplikation, falls ein Server ausfällt. Für geschäftskritische Anwendungen, bei denen eine große Anzahl von Benutzern gleichzeitig Ressourcen anfordern und der Verlust von Sitzungsdaten keine Option ist, ist ein verteilter Cache die richtige Wahl.
Warum NCache?
NCache ist ein verteilter Open-Source-In-Memory-Cache, der nativ in .NET und entwickelt wurde .NET Core. Es kann so konfiguriert werden, dass es sowohl lokal als auch auf einigen Hosting-Plattformen von Drittanbietern funktioniert. Darüber hinaus, NCache kann mit sehr wenigen Codeänderungen als Sicherungsspeicher für die Sitzungsspeicherung eingerichtet werden, und aufgrund seiner inhärenten verteilten Natur werden die folgenden Probleme behoben:
- Speicherbeschränkungen: Der Cache selbst befindet sich jetzt in einem von der eigentlichen Webanwendung getrennten Prozess, sodass keine Speicherbeschränkungen mehr bestehen.
- Bessere Zuverlässigkeit: Der Cache-Cluster kann sich sogar auf einem vollständig separaten Satz von Maschinen befinden, um eine noch bessere Zuverlässigkeit zu erreichen.
- Caching-Topologien: NCache bietet 4 verschiedene Caching-Topologien. Sie können eine davon basierend auf Ihren Anforderungen auswählen, unabhängig davon, ob Sie Skalierbarkeit, Hochverfügbarkeit oder Datenreplikation (auf Kosten der Speichernutzung) priorisieren.
- Datenreplikation: Auch wenn ein Anwendungsserver ausfällt, bleiben die Sitzungsdaten sicher.
- Multi-Region Sitzungsspeicher: NCache bietet Sitzungsfreigabe in mehreren Regionen auch. Sitzungen werden nahtlos über das WAN repliziert. Wenn Benutzer also an einen anderen Ort umgeleitet werden müssen, bleiben ihre Sitzungen intakt.
NCache bietet zwei Strategien für die Sitzungsspeicherung, eine davon ist die Sitzungsspeicheranbieter und das andere ist NCache's-Implementierung von IDistributedCache. In den folgenden Abschnitten gehen wir auf die technischen Details des Wie ein NCache kann bei der Sitzungsspeicherung von ASP helfen.NET Core.
NCache Details ASP .NET Core Sitzungsspeicherstrategien ASP.NET Core Caching
Sitzungsspeicher verwenden NCache
Einrichten NCache als Sicherungsspeicher für die Sitzungsspeicherung ist sehr einfach. Wir werden uns zwei Ansätze ansehen, die von angeboten werden NCache:
Methode 1: Sitzungsspeicheranbieter
Für diesen Ansatz müssen Sie die AspNetCore.Session.NCache NuGet-Paket. Stellen Sie nach der Installation dieses Pakets sicher, dass Sie die Alachisoft.NCache.Web.SessionState
Namensraum im Startup.cs Datei Ihrer Anwendung, und fügen Sie hinzu NCache als Dienst in Ihrer Dienstsammlung:
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"; }); } |
Und das war's, Sie haben erfolgreich eingerichtet NCache als Anbieter von Sitzungsspeichern. Für mehr Details über NCache, kann man sich anschauen NCache Programmierhandbuch.
Methode 2: IDistributedCache-Implementierung
Falls Sie bereits eine Implementierung von verwenden IDistributedCache
, können Sie mit diesem Ansatz gehen. Installieren Sie einfach die NCache.Microsoft.Extensions.Caching NuGet-Paket. Und beim Konfigurieren von Diensten für Ihren ASP.NET Core Anwendung fügen Sie einfach den folgenden Code hinzu:
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; }); } |
Und voila, Sie können jetzt verwenden NCache's Umsetzung von IDistributedCache
.
Verwendung von Sitzungsspeicher für mehrere Regionen NCache
Zusätzlich zu den Datenreplikationsfunktionen, die von den verschiedenen Caching-Topologien bereitgestellt werden, NCache bietet auch vollständiges Session-Sharing zwischen separaten Cache-Clustern. Dies kann in Situationen sehr nützlich sein, in denen Sie verschiedene Rechenzentren für verschiedene Regionen haben und möglicherweise aufgrund einiger unvermeidbarer Umstände Ihren Datenverkehr von einer Region in eine andere umleiten müssen.
Sie können ganz einfach Sitzungsfreigaben zwischen Ihren verschiedenen Regionen einrichten. Die Sitzungen aus einer Region werden nahtlos über WAN in die anderen Regionen repliziert. Die Sitzungsdaten werden vom primären Cache in einen oder mehrere sekundäre Caches repliziert. Um die Sitzungsfreigabe für mehrere Regionen zu verwenden, müssen Sie die verwenden NCache Sitzungsspeicheranbieter und nur die folgenden Änderungen sind in Ihrem erforderlich Startup.cs Datei:
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" } }; }); } |
Hinweis: Beachten Sie, dass die Standortaffinität aktiviert sein muss, um die Sitzungsfreigabe für mehrere Regionen zu verwenden.
Der Cache-Name ist in der angegeben configuration.CacheName
Feld wird Ihr primärer Cache sein, während alle verbleibenden Caches, die im angegeben sind configuration.AffinityMapping
werden Ihre sekundären Caches sein. Das CachePrefix
ist wichtig, da dieses Präfix an die Sitzungs-ID angehängt wird. Dieses Präfix gibt an, wo die Sitzungsdaten gespeichert werden. Wenn also eine Anfrage bei einem Cache ankommt und das Cache-Präfix sich vom Präfix des aktuellen Caches unterscheidet, wird der eigentliche Cache für die Sitzungsdaten kontaktiert (falls die Daten nicht bereits vorhanden sind). Da der aktuelle Cache nun über die Sitzungsdaten verfügt, werden alle nachfolgenden Anforderungen nun lokal aus diesem Cache bedient.
NCache Details ASP .NET Core Sitzungsspeicherstrategien Sitzungsfreigabe in mehreren Regionen
Zusammenfassung
In diesem Blog haben wir uns angesehen, warum die Sitzungsspeicherung eine leistungsstarke Funktion von ASP ist.NET Core und wie es die Leistung Ihrer Anwendung drastisch verbessern kann. Wir haben uns auch angesehen, wie NCache kann die Sitzungsspeicherung mit Hilfe von verteiltem Caching erheblich verbessern, und wenn Sie noch mehr Zuverlässigkeit benötigen, können Sie sich jederzeit dafür entscheiden NCacheSession-Sharing-Funktion für mehrere Regionen für ein erstklassiges Benutzererlebnis.