У вас возникла потребность в фоновой задаче, которая бы запускалась периодически (независимо от запросов к Web-приложению) и выполняла "полезную работу": сбор каких-то данных, рассылка уведомлений и т.д. Как и в большиснтве случаев, существует множество вариантов решения. Предложу пару, с которыми встречался на практике.
1) Фоновые потоки прямо в Web-приложении. В этом случае ваше приложени (MVC-сайт либо Web-служба) при старте запускает необходимые фоновые потоки, которые простаивают заданное количество времени, а по его истечении выполняют свою работу. После выполнения работы поток снова "засыпает" на заданный промежуток времени. Достоинства такого подхода:
- Относительно легкая реализация
- Не требуется создание отдельных приложений
Но есть и существенные недостатки:
- Дополнительная нагрузка на Web-приложение
- Повышение уязвимости Web-приложения (из-за необработанных исключений в потоках, например)
Если решите попробовать такой подход, обязательно ознакомтесь с этой статьей: The Dangers of Implementing Recurring Background Tasks In ASP.NET. В ней описаны возможные риски и пример реализации (англ. язык).
2) Отдельное консольное приложение, выполняющее нужную задачу и запускающееся планировщиком по заданному расписанию (похожий вариант - создание своего Windows-сервиса). Плюсы:
- Разгрузка Web-приложения от дополнительной работы
- Возможность запуска на другой машине
Минусы:
- Необходимо создание отдельного приложения и его конфигурирование