2008-09-16 4 views
8

Wir haben mehrere Wizard-Formularanwendungen auf unserer Website, auf denen wir Informationen vom Benutzer auf jeder Seite erfassen und dann über einen Webdienst an einen Back-End-Prozess senden.Wie viele Daten können/sollten Sie in einem Benutzersitzungsobjekt speichern?

Leider können wir die Informationen nicht in Chunks bei jeder Formularübergabe einreichen, daher müssen wir die Sitzung des Benutzers bis zum Ende des Prozesses speichern und alles zur selben Zeit absenden.

Ist die Menge an Serverspeicher/sql Server Speicherplatz die einzige Einschränkung, wie viel ich in Benutzersitzungen speichern kann oder muss ich noch etwas anderes beachten?

Bearbeiten: Die Website ist auf ASP.NET Web Forms gebaut.

+0

Sie können nach wie vor Daisy-Chain-Postdata von jeder Form mit asp.net, entfernen Sie einfach den runat = Server und Post auf einen anderen .net-Seite. – mmattax

Antwort

3

Angenommen, die Informationen sind nicht sensibel, dann könnten Sie die Informationen in einem Cookie speichern, was die Menge an Informationen reduzieren würde, die serverseitig gespeichert werden müssen. Auf diese Weise können Sie auch über JavaScript auf die Informationen zugreifen.

Alternativ könnten Sie den Viewstate verwenden, um die Informationen zu speichern, obwohl dies dazu führen kann, dass große Datenmengen zwischen dem Server und dem Client gesendet werden und nicht meine bevorzugte Lösung.

Die Menge der Sitzungsinformationen Sie wild speichern soll, variiert abhängig von der Anwendung, Anzahl der erwarteten Benutzer, Server-Spezifikation usw. Um eine genauere Antwort geben würde schließlich weitere Informationen :)

verlangen, dass die Informationen unter der Annahme, gesammelt während des Prozesses ist nicht von Seite zu Seite erforderlich, dann könnten Sie alle Informationen in einer Datenbanktabelle speichern und nur die Datensätze ID in der Sitzung speichern. Wenn jede Seite übergeben wird, wird der Datenbankdatensatz aktualisiert und auf der letzten Seite werden alle Informationen abgerufen und übermittelt. Dies ist keine Ideallösung, wenn Sie aufgrund der Anzahl der erforderlichen db-Lesevorgänge vorherige Informationen auf jeder nachfolgenden Seite abrufen müssen.

0

Wenn Sie ein herkömmliches HTTP-Modell verwenden (dh nicht runat = "server" verwenden), können Sie die Daten auf einer anderen ASP-Seite veröffentlichen und die geposteten Daten in verborgene Formularelemente einfügen. Dies können Sie für beliebig viele Seiten tun Sie müssen also vermeiden, dass Sie etwas in eine Sitzungsvariable einfügen.

2

könnten Sie haben auch ein ASP-Seite mit der gesamten HTML-Formular, und verstecken Teile davon, bis der Benutzer füllen und „trägt“ der sichtbare Teil ...

dann verstecken Sie einfach den Teil, der gefüllt ist und zeigen Sie den nächsten Teil des Formulars ...

Dies wäre sehr einfach in der .NET-Framework, verwenden Sie Panels für jeden "Assistenten Schritt" und fügen Sie loggic wann jedes Panel anzuzeigen und auszublenden.

haben Sie dann alle Daten auf einer Seite.

0

Da es aus Leistungsperspektive problematisch ist, große Datenmengen im Benutzersitzungsobjekt zu speichern, bietet ASP.Net einige weitere Problemumgehungen zusätzlich zu dem, was in den obigen Posts erwähnt wird. ASP.NET Profile Provider können Sie sitzungsbezogene Informationen in einer Datenbank persistieren. Sie können auch Session State Server verwenden, die einen separaten Server zum Speichern aller Sitzungsinformationen verwendet. Beide Situationen berücksichtigen, wenn Sie Cluster oder Load Balancer verwenden müssen, können die Server die Sitzungsinformationen weiterhin auf verschiedenen Servern erkennen. Wenn Sie Informationen im Http-Sitzungsobjekt speichern, tritt das Problem auf, dass ein Benutzer immer zu demselben Server für diese Sitzung wechseln muss.

0

Sitzung, Ansichtszustand, Datenbank.Diese sind alle langsam aber werden die Arbeit erledigen.

versteckte Formularfelder ist die Antwort, die ich am besten gefällt.

Es gibt andere Wege Zustand zu verharren. Cookies, Popup-Fenster, Frameset oder iframes.

Verwandte Themen