Если у вас есть административный доступ к серверу, я бы запустил службу Windows или запланированное задание SQL в зависимости от того, чего вы пытаетесь достичь.
Приятно иметь возможность останавливать / запускать и регистрировать эти задания независимо от вашего веб-приложения. Кроме того, если у вас есть проблемы или ошибки в работе, это может отрицательно повлиять на ваш сайт.
Наконец, вы заставляете веб-приложение проходить код на каждый запрос, чтобы посмотреть, истек ли таймер, что является ненужными издержками.
Как я сказал для начала, реализация зависит от того, какая работа. Если бы просто обновить несколько записей базы данных, я бы использовал запланированное задание в SQL Server. Если вам нужен файловый ввод-вывод или доступ к внешним службам, тогда вам лучше подойдет служба Windows.
Стоит отметить, что вам нужно встроить свое собственное планирование и обеспечить безопасность потоков в Windows Services. Альтернативой является создание консольного приложения и использование такого приложения, как FireDaemon для планирования.