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?

War es hilfreich?

Lösung

Sie wären besser von der Implementierung Appfabric-Cache für Ihr Szenario. Wenn Ihr System wächst, können Sie die Anzahl der Cache-Server mit jedem neuen Web-Knoten erhöhen - etwas, das Sie ohne zusätzliche Kosten nicht einfach mit SQL Server machen können. Die SQL Server-Lizenzierung kostet auch viel mehr als AppFabric - das mit einer Windows-Serverlizenz gebündelt ist.

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 appfabric cache auf einen anderen Server einlegen, wenn Sie in Speicherbeschränkungen laufen. Sie können dies nicht mit inproc tun.

Hier sind einige andere sonstige Vorteile des Appfabric-Caches:

    .
  1. unterstützt lokaler Cache < / stark> , um Abrufaufbereitungskosten an der Serialisierung / Deserialisierung zu beschleunigen.
  2. bietet feiner gekörte Kontrollen in Bezug auf Cache-Räumungs- und Verfallsrichtlinien .
  3. unterstützt Komprimierung der Sitzungsinhalte zur Verringerung der Netzwerkbandbreite . < / li>
  4. BLOB MODE VERSUS SINGLICHE EINZELTEIL AUFNAHME Um den Datenvorratsabruf zu verbessern große Objekte.
  5. 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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top