“Внеполосные” технологии обработки для asp.net приложений

StackOverflow https://stackoverflow.com/questions/42822

Вопрос

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

Это было полезно?

Решение

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

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

Другие советы

Служба Windows

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top