Лично я использую сервисную шину для подобных сценариев. Я знаю, это звучит как излишнее, но я думаю, что сервисные шины .net настолько хороши, что требуют наименьшего количества написанного вами кода, потому что нелегко создать хороший планировщик для фоновых процессов без нарушения потоков пула приложений веб-приложение работает. NServicebus и MassTransit являются достаточно хорошо документированными сервисными шинами для вашего сценария. С сервисной шиной у вас есть инфраструктура, которая пишет в msmq и слушает msmq в нескольких приложениях, связанных очереди сообщений. Благодаря этой шине вам легко создать отдельное приложение, которое работает в качестве фоновой службы и связано с вашим веб-приложением с помощью очереди сообщений. Когда вы используете topself (входит в nservicebus и masstransit), служебная шина автоматически генерирует установщик / деинсталлятор для отдельных приложений.
Вопрос: Почему вам не нравится идея иметь отдельный exe?