StateServer oder SQLServer?
Hier sind einige Gedanken über Pro's / Con's. Ich habe auch Microsoft Velocity Distributed Caching-Lösung hinzugefügt.
Ich denke, die Annahme wäre, dass Sie eine Webfarm irgendeiner Art verwenden.
Eine Verwendung des Staatsdienstes erfolgt in einem Web Garden (mehrere Worker-Prozesse auf demselben Rechner). In diesem Fall können Sie den Lastenausgleich verwenden, um die Verbindung eines Benutzers zu einem bestimmten Server zu halten, und den n Worker alle Prozesse verarbeiten lassen, die denselben Zustandsdienst verwenden.
BEARBEITEN: Im Szenario "Webgarten + Statusdienst" oder "SQL Server" haben Sie auch den Vorteil, die Arbeitsprozesse auf dieser Maschine zu recyceln, ohne dass die verbundenen Clients ihre Sitzung verlieren.
Ich bin nicht so vertraut mit SQL Server als Sitzungszustandsspeicher, aber ich würde denken, dass Sie durch die Verwendung eines SQL Server in einem Cluster Robustheit gewinnen würden. In diesem Fall könnten Sie immer noch mehrere Arbeitsprozesse und mehrere Server haben, aber Sie müssten keine Sticky-Sitzung (Serveraffinität) verwenden.
Und noch ein Hinweis: Sie können den Statusdienst auf einem zweiten Computer verwenden und alle Server in der Farm haben diesen Computer betroffen, aber Sie haben dann einen einzigen Fehlerpunkt.
Und schließlich gibt es 3rd Party (und einige selbstgewachsene) verteilte State-Service-ähnliche Anwendungen. Einige davon haben Leistungsvorteile gegenüber den anderen Optionen, und das Ereignis Session_End wird tatsächlich ausgelöst. (Sowohl im Statusdienst als auch in der SQL Server-Sitzungsunterstützung wird das Session_End in Global.asax nicht ausgelöst (möglicherweise gibt es eine Möglichkeit, den SQL Server zu verwenden)).
In einer n-tierigen Umgebung mit SQL Server-Hosting-Sitzungsstatus erstellen Sie zusätzlichen Netzwerkverkehr für Ihr Back-End sowie einige SQL Server-Ressourcen, die diesen zusätzlichen Datenverkehr (Sitzung) übernehmen müssen Anfragen). SQL Server-Statusverwaltung ist auch langsamer als Statusserver.
Wenn Ihre Server jedoch bei unvorhergesehenen Vorfällen ausfallen, wird SQL Server höchstwahrscheinlich die Sitzungsinformationen verwalten, im Gegensatz zu einem Statusserver.
In meiner persönlichen Erfahrung hatte ich ein paar Probleme beim Speichern in Sitzungsvariablen. Ich verlor immer wieder die Sitzung und ich glaube, es war der Anti-Virus, der, während er jede Datei auf dem Server scannte, die Site neu kompilierte und die Sitzungen löschte. (Ich muss sagen, ich hatte keine Macht über diesen Server, ich wurde aufgefordert, die App dort zu hosten)
Also habe ich beschlossen, die Sitzung im SQL Server zu speichern und alle sind jetzt glücklich ... es ist unglaublich schnell
Schauen Sie sich diesen Artikel für einen schnellen Start an
Die Verwendung einer einzelnen Maschine zur Speicherung des Status in einem Webgarten bedeutet einen einzelnen Fehlerpunkt. Wir verwenden SQL-Status, aber es fügt ein wenig Overhead hinzu.
In Proc ist sehr schnell. Aber Begrenzung haben. Wir können nur ein einzelnes System verwenden. Beim Neustart des Systems gehen Informationen verloren. Arbeiterprozesse in derselben Maschine
StateServer speicherte die Sitzungsinformationen auf einem anderen Computer. Web Farm kann die Sitzung verwenden. Für Beispiel: mehrere Worker-Prozesse können vom Server auf die Sitzungsinformationen zugreifen. Wenn der Server neu gestartet wird, gehen Informationen verloren.
SQL Server wird verwendet, um die Informationen in Tabelle zu speichern. Standardmäßig wird es in TempDB gespeichert. Diese tempdb wird nach dem Aufruf von sqlservice dynamisch aufgerufen. Damit bleiben die Daten auch nicht erhalten. In diesem Szenario können wir in unserer eigenen Datenbank mit Hilfe von Script, das Custom Option heißt, speichern.
Tags und Links asp.net session load-balancing