Я участвую в разработке расчетного приложения, полностью размещенного в Web. Приложение занимается тем, что под указанные пользователем параметры подбирает оборудование, сохраняя при этом все промежуточные значения расчета.
Выглядит это так: пользователь вводит данные, появляется окно со списком подобранного оборудования. Выбирая оборудование, пользователю через Ajax демонстрируются его настройки, рассчитанные исходя из введенных данных.
Однако, тут возникает проблема - Ajax запрос делается асинхронно, т.е. в другом потоке, который не видит объектов расчета из первого потока.
Вопрос: где хранить подобные данные?
Сразу в БД? Но пользователю нужно только одно оборудование из списка подобранного, поэтому встает вопрос как очищать ненужные данные после завершения сеанса. В статическом ConcurrentDictionary? Очистка более простая, но тоже какой-то плохой, как мне кажется, подход. Сразу передавать содержимое всего расчета пользователю? Но элементов может быть 5000+ и страница с результатами начинает весить очень много.
Какие лучшие практики реализации подобного? Куда рыть? Что читать?