Ich habe mehrere Variablen, die ich von Seite zu Seite senden muss ... Was ist der beste Weg, dies zu tun?
Sende sie einfach eins nach dem anderen:
%Vor%und so weiter ...
Oder legen Sie sie alle in eine Art Container-Objekt?
%Vor%-
%Vor%Was ist die beste Lösung? Was benutzt du?
Ein Hybrid der beiden ist der wartungsfreundlichste Ansatz. Das Session
bietet einen niederohmigen, flexiblen Schlüssel-Wert-Paar-Speicher, so dass es verschwenderisch wäre, diesen Vorteil nicht zu nutzen. Für komplexe Datenelemente, die immer miteinander in Beziehung stehen, beispielsweise ein UserProfile, ist es jedoch sinnvoll, ein tief verschachteltes Objekt zu verwenden.
Wenn alle Daten, die Sie in der Sitzung speichern, verwandt sind, würde ich vorschlagen, sie in ein einzelnes Objekt wie das zweite Beispiel zu konsolidieren:
%Vor%Und dann laden Sie alles einmal und speichern Sie es für die Sitzung.
Allerdings würde ich nicht vorschlagen, nicht verwandte Sitzungsdaten in ein einzelnes Objekt zu bündeln. Ich würde jede einzelne Gruppe verwandter Gegenstände in ihre eigenen zerlegen. Das Ergebnis wäre etwas von einem Mittelgrund zwischen den beiden Hardline-Ansätzen, die Sie zur Verfügung gestellt haben.
Ich glaube nicht, dass ich jedes Mal ein Objekt erstellt habe, nur um andere Objekte für die Speicherung in einer Sitzung zu bündeln, also würde ich wahrscheinlich mit der ersten Option gehen. Das heißt, wenn Sie eine so große Anzahl von Objekten haben, dass Sie sie bündeln müssen, um die Arbeit zu erleichtern, sollten Sie Ihre Architektur noch einmal überprüfen.
Ich habe beide benutzt. Im Allgemeinen führen viele Session-Variablennamen zu Kollisionen, wodurch Collections ein wenig zuverlässiger werden. Stellen Sie sicher, dass sich der Sammlungsinhalt wie für jedes Objekt auf eine einzelne Verantwortung bezieht. (Geschäftsobjekte eignen sich hervorragend für Sitzungsobjekte.)
Zwei Tipps:
Definieren Sie alle Sitzungsnamen als öffentliche statische schreibgeschützte Variablen und machen Sie einen Kodierungsstandard, um nur diese statischen Variablen zu verwenden, wenn Sie Sitzungsdaten benennen.
Stellen Sie zweitens sicher, dass jedes Objekt mit dem Attribut [Serializable]
gekennzeichnet ist. Wenn Sie den Sitzungszustand außerhalb des Prozesses speichern müssen, ist dies unerlässlich.
Tags und Links asp.net session session-variables