2010-08-11 4 views
17

Was wird der effizienteste Weg sein, eine ASP.NET MVC-Anwendung Webfarm bereit zu machen.Stellen Sie eine ASP.NET MVC-Anwendung bereit Webfarm

Am wichtigsten ist die gemeinsame Nutzung der aktuellen Benutzerinformationen (Kontext) und (nicht so wichtig) zwischengespeicherten Objekten wie Nachschlageelementen (Staaten, Straßentypen, Landkreise usw.).

Ich habe von MemCache gehört/gelesen, aber habe keine einfache anwendbare Methode (Dokumentation) zur Implementierung und zum Testen von MemCache gesehen.

Antwort

21

Antrag Kontext
Jede Anfrage, die eine Web-Farm trifft wird von einem verfügbaren IIS-Server bedient. Der Kontext wird dort erstellt und die gesamte Anfrage wird vom selben Server bedient. Daher sollte der Kontext kein Problem sein. Eine Anfrage ist eine statusfreie Ausführungspipeline, so dass keine Daten mit anderen Servern in irgendeiner Form geteilt werden müssen. Es wird von Anfang bis Ende von derselben Maschine bedient.
Benutzerinformationen werden von einem Cookie gelesen und von dem Server verarbeitet, der die Anforderung bedient. Das hängt davon ab, ob Sie das komplette Benutzerobjekt irgendwo zwischenspeichern.

Session
Wenn Sie TempData Wörterbuch verwenden, sollten Sie sich bewusst sein, dass es innerhalb Session Wörterbuch gespeichert ist. In einer Serverfarm sollten Sie daher andere Methoden als InProc-Sitzungen verwenden, da sie nicht von IIS-Servern in der gesamten Farm gemeinsam genutzt werden. Sie sollten andere Sitzungsmanager konfigurieren, die entweder eine Datenbank oder andere verwenden (Statusserver usw.).

Cache
Wenn es es ist eine andere Geschichte cachen kommt. Um es so effizient wie möglich zu machen, sollte auch der Cache bedient werden. Standardmäßig ist es nicht. Aber wenn man sich den Cache anschaut, heißt das kaum, dass wenn kein Cache vorhanden ist, dieser im Cache gelesen und gespeichert werden sollte. Wenn also ein bestimmter Serverfarmserver kein Cache-Objekt hat, würde er ihn erstellen. Mit der Zeit würden alle von ihnen gemeinsam genutzte öffentlich genutzte Daten zwischenspeichern.
Oder ... Sie könnten Bibliotheken wie memcached (wie Sie es erwähnten) verwenden und nutzen Sie den gemeinsamen Cache. Es gibt einige Beispiele im Netz, wie man es benutzt.

Aber diese Lösungen alle bringen zusätzlichen Overhead von mehreren Dingen (wie Netzwerk und dritten Prozessverarbeitung und Datenabruf usw.), wenn nichts anderes. Daher ist der Standard-Cache der schnellste und wenn Sie explizit einen gemeinsam genutzten Cache benötigen, entscheiden Sie sich für einen. Teilen Sie den Cache nur dann, wenn es wirklich notwendig ist.

Verwandte Themen