Обработка "Out of Band" Techiniques для приложений asp.net

Ранее Джефф писал о том, как использовать кеш для "внеполосной" обработки на своих веб-сайтах, однако мне было интересно, какие еще методы используют люди для обработки подобных задач?

9 ответов

Решение

Несколько лет назад я видел, как Роб Ховард описал способ использования HttpModule для обработки задач в фоновом режиме. Это не так гладко, как при использовании Cache, но в определенных обстоятельствах может быть лучше.

Этот пост содержит подробности, и есть много других, которые собирают ту же информацию, если вы посмотрите вокруг.

Служба Windows

Вы можете посмотреть, как это делает DotNetNuke. Я знаю, что это написано в VB.NET, но я модифицировал код в C#. Я просматривал источник и заметил, что у них есть функция в их области администратора для настройки запланированных задач. Эти задачи настраиваются через интерфейс администратора и сохраняются в базе данных. Когда сайт запускается через файл Global.asax, они либо создают другой поток для запуска этой службы, который затем выполняет запланированные задачи в назначенное время. Я не могу вспомнить точную логику, это было давно, но это определенно хороший ресурс о том, как другие люди делали внеполосные процессы для приложений Asp.Net. Эта техника все еще сохраняет логику в приложении Asp.Net, но, по моему мнению, она выходит за пределы допустимого диапазона.

Если это в основном задачи обработки данных и вы используете MSSQL, как насчет запланированных задач SSIS?

Простые файлы очереди вместе с отдельным агентом. Для каждого типа внешнего процесса напишите отдельный агент.exe, который просматривает каталог для файлов очереди, которые содержат все данные, необходимые для выполнения указанного процесса.

Это может показаться грязным, но в реальном мире я считаю, что это дает большую гибкость, вы не выполняете много обработки в пространстве процессов ASP.net, и вы могли бы легко адаптировать этот стиль для обработки фермы на дешевых серверах Linux, работающих под управлением Процесс агента на Mono, когда вы начинаете нуждаться в большем количестве ОЗУ / ЦП / диске.

Проблема с запланированными задачами или заданиями cron заключается в том, что они не разделяют пространство памяти с веб-сервером. Вы можете настроить запланированное задание, которое запрашивает страницы с веб-сервера, но это может создать проблемы с долго выполняющимися заданиями. Было бы неплохо иметь некоторые потоки с низким приоритетом, работающие в реальном стеке приложений ASP.Net, для выполнения простых служебных задач, таких как очистка кешей, мониторинг ресурсов и просто для общего обслуживания.

Если вас больше всего устраивают страницы asp.net, вы можете написать небольшое приложение, чтобы справиться с вашей работой, а затем "проверить связь" с внешним сервисом, который контролирует ваш веб-сайт. Это сохранит приложение живым.

Запланированные задания или задания cron.

Другие вопросы по тегам