Я использую шаблон 2. Я храню только один объект в сеансе, который я ловко называю SessionData
.Я стараюсь сделать его как можно меньше - почти каждый член этого объекта используется в каждом запросе.В случаях, когда мне нужны дополнительные данные для конкретной задачи (скажем, корзина покупок), у меня есть универсальный слот, куда я могу добавить их к своему объекту.Когда я закончу с дополнительными данными, я удаляю их из объекта SessionData, чтобы избежать ненужной сериализации.
Использование одного объекта означает, что мне нужно обращаться к Session только один раз для каждого запроса.Хотя запрос одного простого элемента, такого как Session["City"]
, будет быстрее, чем получение моего относительно большого объекта, так как в любом случае мне нужно все это, я подозреваю, что один сделанный мной вызов будет быстрее, чем выполнение дюжины или более отдельных вызовов сеанса.
Кроме того, если я когда-либо изменю свой гаджет управления сеансом, у меня будет только два места для изменения кода (функции get и add)