Методики внеполосной обработки для приложений asp.net

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
12
0
950
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

Служба Windows

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

Ответ принят как подходящий

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

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

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

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

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

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

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

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

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