Джефф ранее писал о кеше, чтобы выполнять "вне диапазона" обработку на своих веб-сайтах, однако мне было интересно, какие другие методы люди используют для обработки этих виды задач?
"Вне диапазона" Обработка Techiniques для приложений asp.net
Ответ 1
Несколько лет назад я видел, как Роб Говард описал способ использования HttpModule для обработки задач в фоновом режиме. Это не похоже на использование кеша, но при определенных обстоятельствах это может быть лучше.
В этом сообщении в блоге есть подробности, и есть много других, которые захватывают ту же информацию, если вы посмотрите вокруг.
Ответ 2
Служба Windows
Ответ 3
Вы можете посмотреть, как DotNetNuke делает это. Я знаю, что это написано на VB.NET, но я обновил код на С#. Я изучал источник и заметил, что у них есть функция в их области администрирования для настройки запланированных задач. Эти задачи устанавливаются через интерфейс администратора и сохраняются в базе данных. Когда сайт начинается, через файл Global.asax, они либо создали другой поток для запуска этой службы, а затем запускают запланированные задачи в запланированное время. Я не помню точной логики, это было время, но это, безусловно, хороший ресурс о том, как другие люди делали внеполосные процессы для приложений Asp.Net. Этот метод по-прежнему сохраняет логику в приложении Asp.Net, но, по моему мнению, он выходит за рамки.
Ответ 4
если это прежде всего задачи обработки данных, и вы используете MSSQL, как насчет запланированных задач SSIS?
Ответ 5
- Запланированные задания с использованием http://www.codeproject.com/KB/cs/tsnewlib.aspx или schtasks.exe.
- Quartz.NET
- MSMQ
- SQL Server задания
- служба Windows
- System.Threading.Timer или System.Timers.Timer
- System.ComponentModel.BackgroundWorker
- Асинхронные вызовы и обратные вызовы
Ответ 6
Запланированные задания или задания cron.
Ответ 7
Проблема с запланированными задачами или заданиями cron заключается в том, что они не используют пространство памяти с веб-сервером. Вы можете настроить запланированную задачу, запрашивающую страницы с веб-сервера, но это может создать проблемы с долговременными задачами. Было бы неплохо иметь потоки с низким приоритетом, работающие в стеке приложений ASP.Net, чтобы выполнять простые служебные задачи, такие как очистка кэшей, мониторинг ресурсов и просто управление общим обслуживанием.
Ответ 8
Простые файлы очереди вместе с отдельным агентом. Для каждого типа внеполосного процесса напишите отдельный агент .exe, который следит за каталогом файлов очереди, которые включают в себя любые данные, необходимые для выполнения указанного процесса.
Это может показаться грязным, но в реальном мире я нахожу, что он дает большую гибкость, вы не делаете много обработки в пространстве процесса ASP.net, и вы можете легко адаптировать этот стиль для обработки фермы до дешевого Linux серверы, запускающие агентский процесс в Mono, когда вам нужно больше RAM/CPU/disk.
Ответ 9
Если вам удобнее пользоваться страницами asp.net, вы можете написать небольшое приложение для обработки своей работы, а затем "ping" приложение с внешней службой, которая контролирует ваш веб-сайт. Это сохранит приложение.