StateServer oder SQLServer?
- Was ist die beste Lösung für die Speicherung von ASP.NET-Sitzungsvariablen?
- Was sind die Vor- und Nachteile der beiden?
- Ist das eine besser als das andere in einer bestimmten Situation?
StateServer oder SQLServer?
Hier sind einige Gedanken zu den Vor- und Nachteilen. Ich habe auch die Lösung Microsoft Velocity Distributed Caching hinzugefügt.
Ich gehe davon aus, dass Sie eine Art von Webfarm verwenden.
Ein Beispiel für einen State Service ist ein Web Garden (mehrere Worker-Prozesse auf demselben Rechner). In diesem Fall können Sie die Lastverteilung nutzen, um die Verbindung eines Benutzers zu einem bestimmten Server aufrechtzuerhalten, und die n Worker-Prozesse müssen sich alle denselben State Service teilen.
EDIT: In der Web-Garten + State Service oder Sql-Server-Szenario, haben Sie auch den Vorteil, in der Lage, die Worker-Prozesse auf dieser Maschine ohne die verbundenen Clients verlieren ihre Sitzung zu recyceln.
Ich bin nicht so vertraut mit der Verwendung von SQL Server als Sitzungszustandsspeicher, aber ich würde denken, dass Sie durch die Verwendung eines SQL Servers in einem Cluster an Robustheit gewinnen würden. In diesem Fall könnten Sie immer noch mehrere Arbeitsprozesse und mehrere Server haben, aber Sie müssten keine sticky session (Serveraffinität) verwenden.
Und noch ein Hinweis: Sie können den Statusdienst auf einem zweiten Rechner verwenden und alle Server in der Farm auf diesen Rechner zugreifen lassen, aber Sie hätten dann einen Single Point of Failure.
Und schließlich gibt es verteilte zustandsdienstähnliche Anwendungen von Drittanbietern (und einige selbstentwickelte). Einige von ihnen haben Leistungsvorteile gegenüber den anderen Optionen, und das Ereignis Session_End wird tatsächlich ausgelöst. (Sowohl beim State Service als auch bei der SQL Server-Sitzungsunterstützung wird das Session_End-Ereignis in Global.asax nicht ausgelöst (vielleicht gibt es eine Möglichkeit, sich in SQL Server einzuklinken)).
In einer n-Tier-Umgebung, in der der Sitzungsstatus von SQL Server gehostet wird, erzeugen Sie zusätzlichen Netzwerkverkehr zu Ihrem Backend und verlieren einige SQL Server-Ressourcen, die sich nun um diesen zusätzlichen Verkehr (sitzungsbezogene Anfragen) kümmern müssen. Die SQL Server-Zustandsverwaltung ist auch langsamer als der State Server.
Sollten Ihre Server jedoch bei einem unvorhergesehenen Zwischenfall ausfallen, wird SQL Server höchstwahrscheinlich die Sitzungsinformationen beibehalten, im Gegensatz zu einem State Server.
Nach meiner persönlichen Erfahrung hatte ich einige Probleme beim Speichern von Sitzungsvariablen. Ich verlor immer wieder die Sitzung und ich glaube, es war das Anti-Virus, das, während es jede Datei auf dem Server scannte, IIS die Site neu kompilierte und die Sitzungen tötete. (Ich muss sagen, dass ich keine Macht über diesen Server hatte, mir wurde gesagt, dass ich die Anwendung dort hosten sollte)
Also beschloss ich, die Sitzung im SQL Server zu speichern, und jetzt sind alle zufrieden... es geht unglaublich schnell
Werfen Sie einen Blick auf dieser Artikel für einen schnellen Start
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.
0 Stimmen
Beabsichtigen Sie, eine Webfarm zu nutzen?
0 Stimmen
Er ist, dies ist eine Fortsetzung von stackoverflow.com/questions/224009/ . Ich habe nicht geantwortet, da ich selbst InProc verwende.