Балансировка нагрузки с IIS и ASP .Net - PullRequest
3 голосов
/ 11 января 2011

Привет,

Что я должен учитывать при кодировании веб-сайта ASP .Net в отношении того, будет ли приложение работать в среде, где для IIS существует балансировщик нагрузки?

Все пользовательские сеансы выполняются сами по себе без обмена данными между сеансами. Одиночные подключения к MSSQL. Изображения и файлы для загрузки будут размещены на одном сервере.

Windows Server 2008, C # и .Net 4.0.

Ответы [ 2 ]

7 голосов
/ 11 января 2011

Самым очевидным элементом является состояние сеанса. При балансировке нагрузки несколько запросов от одного и того же пользователя могут перемещаться между серверами. Поставщик сеансов по умолчанию для ASP.NET (in-proc) не поддерживает это (пользователь получит новый сеанс при каждом перемещении). Самые простые решения - перейти на сервер состояний ASP.NET или сеансы SQL Server.

К вашему сведению: оба эти решения требуют, чтобы все, что вы помещаете в Сессию, было [Сериализуемо]. Поставщик in-proc не имеет этого требования, поэтому вы можете увидеть некоторые ошибки во время выполнения и вам потребуется изменить код при смене поставщика.

0 голосов
/ 11 января 2011

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

В общем, избегайте использования сессий. Имейте в виду, что ASP.Net Session! = FormAuthentication. Скорее всего, ваша база данных станет узким местом задолго до веб-сервера, в зависимости от характера приложения.

...