2 Stimmen

Verwendung von statischen Objekten in asp.net

Ich verwende das folgende Objekt in meiner Asp.net-Seite

private static Dictionary<string, List<Guid>> OpenNodes = new Dictionary<string,    List<Guid>>();  
//Page start
if(!OpenNodes.ContainsKey(Session.SessionID))  
{  
    List<Guid> list = new List<Guid>();  
    OpenNodes.Add(Session.SessionID, list);  
}

//User clicked on a node
Guid id = new Guid(e.Node.Value);  
tmpList = OpenNodes[Session.SessionID];  
tmpList.Add(id);  
OpenNodes[Session.SessionID] = tmpList;  

Ist dies eine gute Praxis oder gibt es eine ähnliche "bessere" Methode, um das Gleiche zu erreichen?

7voto

mmx Punkte 400975

Sie sollten nicht ersetzen Session mit statischen Feldern. Session ist viel flexibler und weniger fehleranfällig. Sie können sie problemlos in Webfarmen einsetzen (mit statischen Feldern ist das nicht möglich). Sie können den Ersatz einiger Application Variablen mit statischen Feldern. Es ist wichtig zu wissen, dass statische Felder von vornherein keinen Mechanismus für die Threadsicherheit bieten und Sie sie entsprechend manuell steuern (sperren) sollten.

4voto

Arve Punkte 7144

Ein Webserver ist mehrfädig. Sie müssen den Zugriff auf gemeinsame/statische Objekte synchronisieren

3voto

GvS Punkte 51365

In diesem Fall können Sie einfach den Sitzungsstatus verwenden. Ich sehe keine Vorteile bei der Verwendung des Musters, das Sie hier vorschlagen.

Wenn Sie wirklich ein statisches Feld imitieren müssen. Sie sollten die Anmeldung Zustand.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X