Как реализовать фоновую обработку для веб-сайта ASP.Net MVC в среде совместного размещения?

Я разрабатываю свое первое веб-приложение с использованием ASP.Net MVC, и я в ситуации, когда мне бы хотелось, чтобы фоновая служба обрабатывала уведомления о состоянии за пределами приложения, в отличие от системы репутации/значка в stackoverflow.

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

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

Спасибо за ваш совет.

Ответ 1

Вы пробовали с quartz.net? Я думаю, что это может соответствовать вашим потребностям.

Ответ 2

также взгляните на это Имитировать службу Windows с помощью ASP.NET для запуска запланированных заданий.

он объясняет хороший способ планирования операций без внешней зависимости.

Идея заключается в использовании тайм-аута Cache для управления расписанием. Я успешно реализовал его в проекте, который требует регулярной очистки файла temp. Эта очистка немного тяжелая, поэтому мы переносим эту чистую операцию в запланированное задание (используя кеш asp.net), чтобы избежать необходимости развертывания запланированной задачи или пользовательской программы.

Ответ 3

Чтобы ответить, будет ли GoDaddy поддерживать отдельную службу, вам нужно спросить их.

Однако существует ряд творческих способов, которыми вы можете "обойти" эту проблему на общедоступном хостинге.

  • У вас есть безопасная страница, целью которой является выполнение вашей фоновой работы. У вас может быть запланированная задача на компьютере под вашим контролем, который вызывает на этой веб-странице через определенные промежутки времени.
  • Используйте вариант ответа рабочего потока работника из @safi. Ваш фоновый рабочий поток может проверить, проверяет ли кто-нибудь другой процесс и останавливается, так что одновременно запускается только один экземпляр.

Ответ 4

Если для вас достаточно одной фоновой задачи, используйте WebBackgrounder И это статья с подробным объяснением.