IRequiresSessionState vs IReadOnlySessionState
Was ist der Unterschied zwischen IRequiresSessionState
und IReadOnlySessionState
neben der Unfähigkeit der zweite um die änderungen zu speichern, um die session-Variablen?
Beide bieten mir die Möglichkeit zum Zugriff auf session-Variablen in meinem HttpHandler
. Aber warum würde ich lieber IReadOnlySessionState
? Nur es schränkt mich von der Rettung der Sitzung für die nächste Anfrage.
Oder gibt mir einen performance-Vorteil gegenüber IRequiresSessionState
?
Wenn würde ich lieber mit IReadOnlySessionState
über IRequiresSessionState
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen kritischen Unterschied ist, dass IRequiresSessionState setzt eine exklusive Sperre auf die aktuelle Sitzung, damit möglicherweise die Begrenzung der Anzahl der gleichzeitigen Anfragen, die der aktuelle Benutzer ist. (Für weitere Hintergrundinformationen zu dieser locking-Phänomen, siehe Ist es möglich zu erzwingen Anfrage Parallelität bei Verwendung von ASP.NET Sitzungen?)
Im Gegensatz dazu IReadOnlySessionState nicht eine exklusive Sperre.
Dies ist die gleiche Sache dokumentiert in renad hilfreich, die Antwort auf eine fast identische Frage ALSO.
Die besten die offizielle Dokumentation, die ich gefunden habe für dies ist von MSDN-Artikel Session-State-Provider:
Beachten Sie die parallele zwischen explizit über diese Schnittstellen und die Verwendung der EnableSessionState Page-Direktive:
Diese Schnittstelle steuert, ob der Rahmen wird das speichern der aktuellen session-Zustand am Ende der Anfrage. Es macht einen größeren Unterschied, wenn Sie mit out-of-process session-state-Speicher. In diesem Fall, ohne die Schnittstelle, das system wird weiterhin speichern der session-Daten in der entfernten Datenbank, auch wenn es sich nicht geändert hat (das system nicht nachzuvollziehen, ob die session-Daten wurde geändert, während der Anfrage). Wenn Sie die IReadOnlySessionState-Schnittstelle, die write-back-phase übersprungen.
Folgen Sie diesem http://msdn.microsoft.com/en-us/library/system.web.sessionstate.irequiressessionstate.aspx
IRequiresSessionState ist abgeleitet von System.Web.SessionState
die diese Schnittstelle verwenden wir access-Sitzung in Httphandler und Class-Datei
Wenn Sie brauchen, nur-lese-Zugriff auf die Session, Umsetzung der IReadOnlySessionState-Schnittstelle.
IRequiresSessionState
ist, aber warum istIReadOnlySessionState
existiert? Warum würde ich es vorziehen, es zu benutzen?