2010-11-09 8 views
16

Lesen Guru-Gu's blog post about ASP.NET MVC3 hitting RC, sagt er: -Was ist ein Szenario mit einem sitzungslosen Controller in ASP.NET MVC3?

Session losen Controller Unterstützung

Sie können nun angeben, ob Sie eine Controller-Klasse Sitzungszustands verwenden - und wenn ja, ob Sie es wollen be lesen/schreiben oder readonly.read/write oder readonly.

Kann jemand erklären, was für ein Szenario jemand möchte einen sessionlosen Controller haben? oder ein schreibgeschützter Controller?

Ich habe schon immer eine separate IIS website which I use to handle all static images/content and then have this same website have session state turned off erstellt ... also keine Cookies über die Leitung gesendet werden. Ist das ein ähnliches Szenario?

Antwort

25

Gu kommentiert darüber. Zitiert:

Die Release Notes diese mehr decken (Sie können sie aus dem Link herunterladen herunterladen oben). Der Sitzungsstatus ist so entworfen, dass nur eine Anfrage von ein bestimmter Benutzer/Sitzung bei einer Zeit auftritt. Also, wenn Sie eine Seite haben, die mehrere AJAX Callbacks bei einmal passiert haben, werden sie in der seriellen Mode auf dem Server verarbeitet werden. Going session-less bedeutet, dass sie parallel ausgeführt werden würde.

Dies ist ein bekanntes Szenario in ASP.NET im Allgemeinen. Das Sitzungsobjekt für denselben Benutzer ist nicht Thread-sicher. Dies bedeutet, dass, wenn derselbe Benutzer (dasselbe Sitzungs-ID-Cookie) mehrere Anfragen an eine Seite sendet, die eine Sitzung verwendet, diese Anfragen in eine Warteschlange gestellt werden und in Serie und nicht parallel verarbeitet werden.

+0

Oh wow. Ich habe das nie gewusst (und ich arbeite seit ASP mit ASP). Beeindruckend. Aber ... das macht Sinn :) Die Sitzungsdaten sind wichtig und müssen daher "gesperrt" werden, nehme ich an und erzwinge die serielle Verarbeitung. Hmm ... Also das wäre ein großartiger Kandidat, um alle Ajax ActionMethods Session-less zu machen :) –

+4

Absolut, alle AJAX-Aufrufe sollten session-less gemacht werden. Übrigens hasse ich Session, also mache ich generell meine ganze Session-Session :-) –

+1

Also gibt es nichts, was man in der Session braucht? eingeloggter Benutzer? –