2010-07-28 6 views
6

Ich arbeite mit einer asp.net-Anwendung, die meisten Daten in einer Datenbank und nicht Sitzung speichert. Ich wundere mich über die Vor- und Nachteile von jedem und was ist der bessere Weg zu gehen. Beispielsweise haben Sie eine ziemlich ausgelastete Site, und statt benutzerspezifische Variablen in der Sitzung zu speichern, gibt es eine DB-Tabelle namens Benutzerdaten, die alle benutzerspezifischen Daten speichern kann, auf die von jeder Seite zugegriffen werden kann, indem die Datenbank abgefragt wird. Welcher Weg ist besser, Session oder Datenbank?Speichern von Benutzervariablen in der Datenbank vs Sitzung in asp.net

Antwort

2

Interessante Frage. Wenn es sich um Daten handelt, die in Sitzungen (z. B. der letzten angezeigten Seite) nicht wichtig sind -> Sitzung. Wenn es sich um Daten handelt, die persistent sein sollen (zB Passwort) -> Datenbank. Der interessante Fall und der, auf den Sie sich wahrscheinlich beziehen: Daten, die persistent sein sollten, aber auch häufig verwendet werden (zB der Benutzername). Von diesen tendiere ich dazu, diese Werte aus der DB in die Sitzung zu kopieren, die es mir ermöglichen, ohne Datenbankzugriff auf Seiten mit trivialen Aufgaben zu arbeiten.

3

Alles, was im Sitzungszustand gespeichert wird, verschwindet, wenn die AppDomain zurückgesetzt wird.

Sie könnten dies vermeiden, indem Sie einen prozessexternen Session-State-Handler verwenden, aber das ist nicht besser als eine Datenbank.

3

Session (aber es hängt viel von der Sitzungskonfiguration):

  • Kein Zugriff auf die Datenbank oder weniger.
  • Temporärer Speicher: Sie können die Informationen verlieren, zumindest wenn die Sitzung endet.
  • Möglicherweise ein Sicherheitsproblem, abhängig davon, wo Sie die Sitzungsinformationen speichern
  • Nicht freigegeben: Sie haben möglicherweise Probleme, wenn Sie eine Serverfarm verwenden, hat ein Server möglicherweise keinen Zugriff auf die andere Serversitzung.
  • Funktioniert möglicherweise nicht, wenn der Client die Cookies deaktiviert hat.

Datenbank:

  • Datenbank Verkehr für jede Postbacks, wenn Sie die Informationen auf jeder Seite benötigen.
  • Permanentspeicher.
  • Keine Informationen mit dem Client gespeichert (Cookies ...).
  • Freigegeben: Daten, auf die von einem beliebigen Server in einer Webfarm zugegriffen werden kann.

Bitte beachten Sie, dass Sie Sitzungsinformationen in der Datenbank speichern können. Deshalb verwende ich im Session-Teil das Wort "may". Siehe here some session configuration and possibilities

2

In vielen Fällen verwende ich Session, um temporäre Daten über die ... nun ... "Sitzung" zu speichern. In ASP.NET ist die Sitzung konfigurierbar. Sie können in-proc (Standard) verwenden, der den Speicher des Servers verwendet. Sie können die Sitzung auch so konfigurieren, dass sie eine Datenbank oder ein Sitzungsverwaltungstool verwendet (falls der Serverspeicher ein Problem darstellt oder Sie in eine Cluster-/Farmumgebung wechseln).

Sitzung soll vorübergehend sein. Dies ist ideal, wenn Sie wirklich Daten über den Benutzer speichern, der gerade Ihre Anwendung verwendet. Wenn der Benutzer die App verlässt und seine Sitzung abläuft, wird der Speicher freigegeben. Sie müssen nichts manuell löschen.

Sitzung verwendet den Speicher des Servers. Solange Sie genug Speicher haben und Sie nicht auf einem Server-Cluster sind, funktioniert das großartig.Der Speicher ist schnell, so dass das Abrufen und Einstellen von Daten in einer Sitzung sehr schnell ist und keine Netzwerkbandbreite benötigt.

Haben Sie all das gesagt, in einigen meiner Anwendungen habe ich Sitzung für die Verwendung von SQL konfiguriert. Es ist im Grunde das gleiche wie die Datenbank direkt zu benutzen, aber ich muss nicht mit DAL umgehen ... lass das Framework einfach für dich arbeiten.

Verwandte Themen