Какой предпочтительный способ обернуть состояние сеанса в ASP.Net? - PullRequest
3 голосов
/ 14 августа 2010

У меня есть проект ASP.Net, который использует состояние сеанса, я хотел бы быть немного более строгим в том, как мы получаем доступ к состоянию сеанса, я не доволен всеми строками, плавающими вокруг кода. Мне также нужно знать, когда конкретное значение сохраняется / обновляется в состоянии сеанса для отслеживания последнего значения этого объекта.

Проблему строки легко решить с помощью констант, но она не помогает с отслеживанием. Инкапсуляция их всех в одном классе привлекательна, но затем я должен передать объект сеанса этому классу, и это кажется немного грязным

Я думаю об использовании одного из двух вариантов:

  1. Получатели и установщики расширений для объекта сеанса
  2. Метод расширения объекта сеанса для возврата класса с методами получения и установки

Первый дает мне синтаксис:

var thing = Session.GetThing();
Session.SetThing(thing);

Второй дает:

var thing = Session.Wrapper().Thing;
Session.Wrapper().Thing = thing;

Оба имеют свою привлекательность, хотя я склоняюсь ко второму. В идеальном мире я хотел бы иметь возможность сделать это:

var thing = Session.Thing(); // easy to do
Session.Thing() = thing; // don't think it's possible

Какой предпочтительный способ справиться с этим? Любой из них, другой способ, или я просто делаю это неправильно?

Ответы [ 2 ]

3 голосов
/ 14 августа 2010

Вам не нужно передавать сессию каждому классу, вы можете иметь:

public class State
{
    public string Something
    {
        get { return HttpContext.Current.Session["Something"] as string; }
        set { HttpContext.Current.Session["Something"] = value; }
    }
}

Это, я считаю, типичный подход. HttpContext имеет свойство Current, которое доступно статически.

1 голос
/ 14 августа 2010

Мой предпочтительный метод - поместить все переменные, которым требуется доступ, в объект.Затем я помещаю переменную в базовый класс нашей страницы, который обеспечивает соответствующий доступ к объекту в сеансе.Единственный способ истинного применения этого заключается в предоставлении стандарта, который требует использования этого объекта, а затем проверки кода / экспертной оценки, чтобы гарантировать, что разные строки / переменные не закончат засорять сеанс.

...