2012-05-05 5 views
0

Мне нужно сохранить несколько вещей в сеансе. На данный момент я использую сессию InProc на моей машине разработки, но я хочу развернуть ее с помощью сеанса SQL-сервера, а затем сеанса Azure в AppFabric.сохранение объекта в сеансе

Я создал объект, который содержит несколько свойств, все примитивные типы. Я обработка чтения сеанса, как это:

SessionObject TheCurrentSession = 
    HttpContext.Current.Session["UserAppSession"] as SessionObject; 

В принципе, я оберточный переменные сессии в объекте, который сериализация и десериализации каждый раз, когда сеансовые нагрузки и позволяет экономить.

Мне интересно, было бы лучше хранить каждое свойство в его родном формате и иметь объект-обертку, который будет читать/сохранять каждый из его свойств в сеансе как родной.

Так, например, я должен был бы метод, называемого RecreateSession так:

public class SessionObject 
{ 
    public void RecreateSession() 
    { 
     this.SessionObjectProperty1 = 
         HttpContext.Current.Session["SessionObjectProperty1"]; 
     this.SessionObjectProperty2 = ...; 
     this.SessionObjectProperty3 = ...; 
    } 
} 

я думаю, что сделать это будет препятствовать процессу сериализации/десериализации и могу сделать значение, доступного непосредственно в других частях коды (т. е. HTTP-модуль).

Стоит ли менять мою сессию? Каковы наилучшие методы для этого?

Спасибо за ваши предложения.

ответ

1

Стоит ли менять мою сессию?

Только в том случае, если это облегчит вам использование.

Каковы наилучшие методы для этого?

Вы в значительной степени уже делаете это. Создание единого объекта для хранения нескольких связанных свойств (которые, вероятно, будут использоваться вместе) и хранения его в сеансе вместо связки отдельных свойств сеанса имеет смысл.

+0

Хорошо, вы считаете, что сохранение сериализации/десериализации в объекте является лучшим способом хранения сеанса или вы считаете, что я должен хранить каждое свойство напрямую и создавать объект-оболочку, читая каждое свойство из контекста asp.net сессия? Я думаю, что в любом случае все будет в порядке с моим кодом. – frenchie

+0

@frenchie - Нет необходимости писать собственный код сериализации. Легче просто назначить свойство и приложить его по мере необходимости. – Oded

+0

Да, я знаю, что это автоматически сериализуется; но даже если фреймворк обрабатывает его автоматически, он все равно должен это сделать. Может ли эта постоянная сериализация/десериализация стать проблемой производительности/масштабирования в какой-то момент? – frenchie

1

Я всегда создавал пользовательский объект, в котором каждое свойство ссылается на определенный элемент сеанса ... Я думаю, что это лучший вариант.

Смежные вопросы