Использование статических объектов в asp.net - PullRequest
2 голосов
/ 05 февраля 2010

Я использую объект followign на моей странице asp.net

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;  

Это хорошо, практично или есть аналогичный «лучший» способ добиться того же?

Ответы [ 3 ]

7 голосов
/ 05 февраля 2010

Не следует заменять Session на статические поля. Session гораздо более гибкий и менее подвержен ошибкам. Вы можете легко заставить его работать в веб-фермах (вы не можете сделать это со статическими полями). Вы можете заменить некоторые переменные Application статическими полями. Важно знать, что статические поля не предоставляют никакого механизма безопасности потоков из коробки, и вы должны вручную управлять (блокировать) их соответствующим образом.

4 голосов
/ 05 февраля 2010

Веб-сервер многопоточный. Вам необходимо синхронизировать доступ к общим / статическим объектам

3 голосов
/ 05 февраля 2010

В этом случае вы можете просто использовать состояние сеанса. Я не вижу профессионалов в использовании предложенного вами здесь шаблона.

Если вам действительно нужно имитировать какое-то статическое поле. Вы должны использовать состояние Application .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...