InProc vs.AppFabric-Sitzungsstatus mit einem einzelnen Webserver
-
12-12-2019 - |
Frage
Ich habe eine ASP.Net MVC-Anwendung, die die Sitzung in erheblichem Umfang zum Speichern des Status verwendet (einschließlich großer Datensammlungen).Derzeit wird es auf einem einzigen Webserver gehostet.Die Sitzung ist auf den Standardwert InProc eingestellt.
Es tritt ein Problem auf, bei dem die Anwendung für einige Benutzer einfriert, wenn viele Benutzer online sind.Ich vermute, dass dies daran liegt, dass die InProc-Sitzung nicht allzu gut skaliert werden kann und dass dem Prozess nur so viel Speicher zur Verfügung steht.(Was passiert, wenn der Speicherbedarf den verfügbaren Speicher übersteigt - wird er auf die Festplatte ausgelagert?)
Ich habe ein paar Lösungen im Sinn, die bei der Skalierbarkeit helfen würden.(a) SQL Server-Sitzungsstatus;(b) Konfigurieren Sie den Sitzungsstatus für die Verwendung von AppFabric-Caching.Die erste Option sieht nach einer guten Lösung aus, außer dass sie die Leistung beeinträchtigt und erfordert, dass gespeicherte Elemente serialisierbar sind.
Was ist mit der Konfiguration des Sitzungsstatus für die Verwendung von AppFabric-Caching (auch bekannt als Velocity) in einer Umgebung, in der der einzelne Webserver auch als Cache-Host verwendet wird?Wie unterscheidet sich dies von InProc in dieser Single-Server-Umgebung?Wird dies mehr Skalierbarkeit und verfügbaren Speicher bieten als InProc, oder wird es im Wesentlichen den gleichen Einschränkungen entsprechen?
Lösung
Sie wären besser von der Implementierung
Der einzige Nutzen-SQL-Server wird eine Wiederherstellbarkeit bereitstellen, aber für das, was Sie brauchen, ist es wahrscheinlich übertrieben.
siehe Resultat, also diskutieren Appfabric Cache vs. SQL Server für Session .
AS für AppFabric Cache vs. Inproc ...
Sie könnten Ihren
Hier sind einige andere sonstige Vorteile des Appfabric-Caches:
- .
- unterstützt
lokaler Cache < / stark> , um Abrufaufbereitungskosten an der Serialisierung / Deserialisierung zu beschleunigen. - bietet feiner gekörte Kontrollen in Bezug auf Cache-Räumungs- und Verfallsrichtlinien .
- unterstützt Komprimierung der Sitzungsinhalte zur Verringerung der Netzwerkbandbreite . < / li>
- BLOB MODE VERSUS SINGLICHE EINZELTEIL AUFNAHME Um den Datenvorratsabruf zu verbessern große Objekte.
- Derselbe Sitzungsstatusspeicher kann verwendet werden über mehrere Anwendungen ( über SharedID ).
Andere Tipps
Das Wichtigste ist, dass die Sitzung einen App-Pool-Recycling und sogar eine erneute Bereitstellung der Anwendung übersteht.
Auch AppFabric kann serialisieren IXmlSerializable
objekte sowie [Serializable]
.Wenn Sie versuchen, den Out-of-process zu verwenden ASP.NET sitzungsdienst, den Sie ironischerweise nicht serialisieren können IXmlSerializable
objekte wie XElement
.Sie können auch eine vollständig angepasste Serialisierung durchführen, wenn Sie möchten.Mit AppFabric ist Ihre App viel mehr 'azure' bereit, wenn Sie jemals auf diese Weise bewegen.
Dann können Sie es natürlich zum Zwischenspeichern anderer Daten verwenden, wenn Sie dies benötigen.