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
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.
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.
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
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.
- 1. Wie Speichern von Array in Sitzung in ASP.NET MVC?
- 2. Benutzerinformationen in Sitzung speichern?
- 3. Speichern von Daumen hoch/runter in Datenbank oder Sitzung?
- 4. ASP.NET MVC 5 Speichern von Identitätsbenutzern in der Oracle-Datenbank
- 5. Speichern von ASP.Net MVC-Ansichten in der Datenbank
- 6. set Sitzung in der Datenbank in PHP
- 7. Rails: Vorteile der Speicherung der Sitzung in der Datenbank?
- 8. BBCode vs html, welche in der Datenbank speichern?
- 9. IIS Session Timeout vs ASP.NET Sitzung Timeout
- 10. Sitzung in asp.net überprüfen?
- 11. Objekte in der Datenbank speichern
- 12. Sitzung in asp.net C#
- 13. Rails: Speichern von Vorlagen in der Datenbank
- 14. Drools: Speichern von Regeln in der Datenbank
- 15. Firebase - Speichern von Daten in der Datenbank
- 16. Speichern von Werten in der Datenbank
- 17. Speichern von HTML in der Datenbank
- 18. Speichern von Objekt in der Datenbank Spalte
- 19. Speichern von Datenpunktkoordinaten in der Datenbank
- 20. Speichern von Währungswerten in der MySQL-Datenbank
- 21. Speichern von Arrays in der Datenbank serialisieren?
- 22. HTML5 Speichern und Wiederherstellen von Status in der Datenbank
- 23. die Datenbank ändern, in der ASP.NET Identitätsbenutzerdaten speichern
- 24. Abrufen der Sitzung ordnungsgemäß in ASP.NET
- 25. PHP, welches ist der bessere Weg zwischen dem Speichern von Daten in Sitzung und Datenbank?
- 26. Benutzerrollen - warum nicht in Sitzung speichern?
- 27. Speichern einer ID in Sitzung
- 28. Django - Objekte in Sitzung speichern
- 29. Sitzung Timeout Warnung in ASP.NET
- 30. Sitzung endet nicht in ASP.NET