ASP.NET Управление сеансами с несколькими экземплярами MVC на amazon ec2

#asp.net-mvc-2 #session #amazon-ec2 #load-balancing #multiple-instances

#asp.net-mvc-2 #сеанс #amazon-ec2 #балансировка нагрузки #несколько экземпляров

Вопрос:

У меня есть веб-приложение, написанное на asp.net mvc2. В настоящее время размещен в Amazon cloud ec2. Из-за растущего трафика мы хотим перенести среду с несколькими экземплярами. У меня есть пользовательский класс сеанса, который в настоящее время инициируется при запуске сеанса (глобальный asax), и я использую класс getter или setter в приложении. Из-за рутинной работы с несколькими экземплярами мне приходится обрабатывать архитектуру безопасности hole. Я ищу лучший способ справиться с этой проблемой.

     protected void OnSessionStart()
    {
        HttpContext.Current.Session.Add("mySessionObject", new MyAppSession());
    }


    public static MyAppSession GetMySessionObject(HttpContextBase current)
    {
        if (current != null)
        {
            if (current.Session != null)
                if (current.Session["mySessionObject"] == null)
                {
                    current.Session.Add("mySessionObject", new MyAppSession());
                }
        }
        if ( current != null amp;amp; current.Session != null)
            return (MyAppSession ) (current.Session["mySessionObject"]);
        return null;
    }


and so on.
  

Ответ №1:

В среде с несколькими экземплярами есть широкие возможности для управления сеансами.

База данных состояния сеанса
Если мы хотим привязать каждый запрос, тогда мы должны хранить информацию о сеансе в базе данных и передавать информацию между ними. Это сложно реализовать.

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

Я выбираю второй вариант.