ASP.NET; Mehrere Session-Variablen oder ein "Container-Objekt"?

8

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?

    
Christian Wattengård 21.06.2010, 13:18
quelle

6 Antworten

6

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.

    
Rex M 21.06.2010, 13:20
quelle
2

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.

    
Justin Niessner 21.06.2010 13:22
quelle
1

Ich benutze einen SessionHandler, der eine benutzerdefinierte gerollte Klasse ist, die wie folgt aussieht

%Vor%

Und dann im Code tue ich

%Vor%     
JustLoren 21.06.2010 13:23
quelle
0

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.

    
chris 21.06.2010 13:21
quelle
0

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.

    
Cylon Cat 21.06.2010 13:22
quelle
0

Das große Plus eines Objekts: Eigenschaften sind stark typisiert.

    
Denis 04.03.2014 14:04
quelle