2 Stimmen

Alternativen zur Verwendung von Sitzungsvariablen in ASP.NET (einschließlich MVC)

Bitte entschuldigen Sie, wenn diese Frage schon einmal gestellt wurde, aber ich habe die spezifische Frage, die ich im Kopf habe, nicht ganz gefunden.

Für die Website, die ich aufbaue (mit ASP.NET MVC), ist die Leistung ein wichtiges Merkmal. Außerdem besteht die Möglichkeit, dass die Website in einer Umgebung gehostet wird, in der der Anwendungspool alle 20 Minuten (oder früher, wenn der Speicherschwellenwert erreicht ist) recycelt wird. Ich würde gerne völlig unabhängig von Sitzungsvariablen sein und stattdessen einen GUID-ähnlichen Wert in einem Cookie speichern. Ich weiß nicht, wie lange die Sitzung aufgrund des AppPool-Recyclings dauern wird, und ich möchte nicht, dass die Sitzung vorzeitig beendet wird und die Benutzer sich wiederholt anmelden müssen.

Der GUID-Wert im Cookie würde als Nachschlageschlüssel für eine Tabelle dienen, in der ich sitzungsähnliche Informationen speichere (einen Benutzer-ID-Wert usw.). Wenn ich also diese Daten benötige, kann ich sie aus der Datenbank abrufen. Ich würde immer noch das Ereignis Session_OnEnd verwenden, um die Sitzungstabelle von Zeilen mit einem Wert für die "letzte Aktivität" von mehr als 20 Minuten zu löschen (oder wie lange Sitzungen auch immer konfiguriert sind, um zu dauern). Ich würde also immer noch den Sitzungsstatus verwenden, nur nicht die Sitzungsvariablen.

Meine Sorge gilt jedoch wiederum der Leistung. Daher war ich neugierig, ob es bessere Methoden gibt, um die Verwendung von Sitzungsvariablen zu vermeiden und gleichzeitig die Fähigkeit zu erhalten, Dinge über den Benutzer zu wissen und seine Besuche auf der Website auf eine "sitzungsähnliche" Weise zu verwalten. Ich bin immer noch ein Neuling in MVC, aber habe viel Erfahrung in ASP.NET im Laufe der Jahre so, ich hoffe, meine Frage macht Sinn!

EDIT: Ich schrecke irgendwie vor der Verwendung von SQL Session State zurück, weil ich wahrscheinlich in einer gemeinsam genutzten Sql-Server-Hosting-Umgebung sein werde und nicht glaube, dass ich ein Login mit der Fähigkeit zum Erstellen/Ausführen von Aufträgen haben werde, falls erforderlich, um abgelaufene Sql-Sitzungsdaten usw. zu löschen. Gibt es wirkliche Nachteile, wenn man im AppPool-Recycling-Szenario von Session_OnEnd mit einem Cookie abhängig ist? Könnte Session_OnEnd nicht für Sitzungen ausgeführt werden, die aktuell sind, wenn der AppPool recycelt wird?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X