2009-11-22 1 views
5

Я только что закончил просмотр PDC Стефана Шаккова 2009 session, и он отметил, что он удивлен тем, что люди все еще используют состояние сеанса в ASP.NET. Состояние сеанса даже используется internally в ASP.NET MVC.Создание приложения ASP.NET без состояния сеанса?

Работая с устаревшим приложением, где все помещается в сеанс «in-proc» (даже для данных!), Я видел, как из-за сеанса было из первых рук.

Есть ли способ создать приложение ASP.NET без состояния сеанса? Как вы будете хранить информацию для каждого шага типичного рабочего процесса электронной торговли?

ответ

3

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

Следует отметить, что .NET поддерживает разные механизмы «сеанса», один из которых хранит информацию в базе данных (что предпочтительнее, на мой взгляд) вместо in-proc.

+0

Насколько масштабируемо ваше решение в условиях высокой трафики? Будет ли чтение/запись объекта сеанса из базы данных для каждого веб-запроса проблемой производительности? – Herman

+0

Короткий ответ на этот вопрос - «попробуй и посмотри». однако мы используем SQL для управления сеансами на сайте с относительно высоким трафиком и не видели каких-либо проблем с производительностью. Помните, что БД предназначена для таких вещей - быстрых, легких запросов и ответов. Я был бы очень удивлен, если бы вам удалось подорвать приличный сервер баз данных с таким подходом. –

+0

http://odetocode.com/articles/440.aspx –

0

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

+0

Из-за своей природы (сохраненной в поле скрытой формы), viewstate не работает на одной странице. –

+0

Вы правы. Не уверен, что я думал. –

+0

Упоминайте, почему нижняя сторона? Я имею в виду, Дэвид Лайвли предложил ту же самую чертову вещь после того, как я написал это, и я получаю нисходящий знак? –

3

У вас есть следующие опции: файлы cookie, база данных, последовательность запросов, переменные страницы и кеш сервера, чтобы попытаться обработать безгражданный характер Интернета. Каждый из них имеет свои собственные компромиссы, но прагматично говоря, что в настоящее время я использую сеанс, который хранится в db. Это хорошо масштабируется для серверных ферм, помогает сохранить размер страниц и легко реализуется.