Мой текущий сайт настроен, чтобы оставлять сообщения для определенных людей при первом входе в приложение. Количество оставшихся сообщений может быть от 1000 до 10000, причем каждый из них является запросом и всеми запросами в операторе транзакции.Фоновая Threading в ASP.NET и влияние на производительность
Да, я знаю, что это похоже на плохой дизайн, это не мой вопрос.
В настоящее время, когда пользователь входит в систему, сервер должен выполнить все запросы до того, как пользователь действительно сможет что-либо сделать. Я имею в виду, что пользователь просматривает экран входа в систему до тех пор, пока таймаут не ударит и не сбрасывает страницу. В последнее время мы ожидали до 30 минут (!)
Я хочу, чтобы этот процесс был включен в поток, чтобы пользователь мог войти на веб-сайт, выполнить любую деятельность, необходимую ему, и просмотреть/удалить их сообщений, не препятствуя доставке сообщения.
Мой вопрос заключается в том, чтобы просто открутить новый поток, чтобы справиться с этим процессом, решить проблему (т. Е. Разрешить пользователю работать, пока поставщик сообщения оставляет сообщения)? Кроме того, вращение нити влияет на другие веб-приложения на одном сервере?
EDIT На основе замечаний KM в
упрощенных схемы:
Задачи таблица:
TaskID StartDate EndDate PercentComplete TSK1 4/17/09 5/17/09 60 TSK2 3/19/09 3/29/09 80 TSK3 1/1/08 2/9/09 100
Подборки стол:
TaskID ResourceID TSK1 111 TSK1 222 TSK2 222 TSK2 333 TSK2 444 TSK3 111 TSK3 333
Сообщения схема таблица:
Subject Receiver Sender Content Overdue Task 111 000 Task TSK1 is overdue. Overdue Task 222 000 Task TSK1 is overdue. Overdue Task 222 000 Task TSK2 is overdue. Overdue Task 333 000 Task TSK2 is overdue. Overdue Task 444 000 Task TSK2 is overdue.
Таким образом, код получит всех людей, назначенных на просроченную задачу (т. EndDate раньше, чем сегодня, и! = 100% завершено), и оставьте сообщение для них, сообщив им такие
Я думаю, что реальная проблема заключается в том, что я использую запрос select, чтобы люди, назначенные просроченным задачам из базы данных, а затем используя код C# для составления сообщений и транзакций перед вызовом базы данных для вставки сообщений.
информацию о том, как присоединить сообщения к задаче –
Сообщения не соединяются с задачей. Мне нужен только идентификатор задачи, поэтому я могу поместить его в тело сообщения. Это ресурсы, которые необходимо присоединить к сообщениям, поскольку они будут их читать. –