Я вижу, что есть 2 возможных сценария обработки сеанса:
- Открыть одну ISession за запрос. Откройте его в начале запроса и закройте в конце запроса.
- Откройте одну сессию IS на концептуальную «единицу работы». Многие сессии создаются для запроса.
Подход № 1 - это тот, который я делаю сейчас. Я немного беспокоюсь об этом, потому что, хотя это работает, его немного сложно отладить. Например, у меня есть объект, который не был сохранен (даже если я его заказал), и у меня возникают проблемы с отладкой, поскольку в течение полного жизненного цикла запроса происходит МНОГО вещей.
Подход №2, похоже, является стандартной передовой практикой (не уверен в ASP.NET), и я уверен, что отладка довольно проста. Проблема, которую я вижу, связана с межсессионным общением. Например: класс My Page содержит ссылку на пользователя, который является постоянным объектом. Многие из операций получают пользователя в качестве параметра. Поскольку пользователь принадлежит к другому сеансу, я не могу передать его в качестве параметра.
Я склонен к # 2, но я не знаю, является ли это наилучшей практикой или как обращаться с кросс-сессионным объектом.
Спасибо.