Итак, я некоторое время работал над проектом ASP.NET, и, похоже, я сделал несколько неудачных дизайнерских решений, которые будут преследовать меня, поскольку проект становится все больше и больше с точки зрения содержащихся данных.
Прочитав об управлении памятью в .NET, я думаю, что определил целый набор возможных причин. Поскольку вещи, которые я делаю, не особенно особенные, мне интересно, есть ли стандартный шаблон для достижения того, что я хочу сделать, чего мне не хватает.
Итак, у меня есть (несколько дорогой запрос), который дает от 1 до 20000 результатов. При последующих запросах мы можем просто листать набор результатов, поэтому я сохраняю этот результат в сеансе. Сессия InProc. Мне любопытно:
Имеет ли смысл а) хранить результат б) в сеансе в) в процессе? Мне нужна скорость (а). Я не знаю, есть ли более эффективный способ, чем хранить его пользователем (b), и если я использую более сложный сервер состояний, не будет ли он работать медленнее (c)? Или это может быть решением, быстрее избавляющимся от этих больших объектов, вместо того, чтобы хранить последний набор результатов в ОЗУ до истечения срока действия сеанса?
Если какой-либо результирующий набор> ~ 20000 строк в конечном итоге потенциально испортит LOH, есть ли общий способ обойти это?
Я знаю, что этот вопрос немного занижен. Я только что понял, что мой общий дизайн может быть ошибочным (относительно масштабируемости), и я просто пытаюсь оценить, насколько именно он ошибочен. Я надеюсь, что некоторые подсказки о стандартных шаблонах могут быть собраны, что, тем не менее, превратит этот вопрос в общий полезный вопрос.