Я думаю, что служба Windows - это путь, безусловно.
Что касается связи между службой и вашим веб-сайтом, наилучший ответ зависит от размера и масштаба вашего решения. Если вы создаете что-то, что должно быть надежным, я бы посоветовал вам создать какую-то очередь между вашим сайтом ASP.NET и службой Windows. У вас также есть много вариантов, в зависимости от бюджета и возможностей: очереди BizTalk, MSMQ и SQL Server (SSIS). В качестве альтернативы, если вы ищете что-то меньшего масштаба, я бы порекомендовал вам просто вставить это куда-нибудь в таблицу базы данных.
Я бы не использовал файлы в файловой системе, потому что у вас возникнут проблемы с блокировками файлов и многопоточностью. Я бы также избегал прямого общения со службой, потому что вы рискуете потерять очередь в памяти, если служба по какой-либо причине дает сбой.
Отредактировано, чтобы добавить:
Если надежность здесь не имеет значения, вы можете использовать службу именованных каналов WPF для связи между вашим веб-сайтом и службой Windows. Это позволяет избежать значительных накладных расходов, обычно связанных с классическими веб-службами, и на удивление быстро. Единственным недостатком является то, что самостоятельное размещение службы WPF сложно и может быть сложно поддерживать службу.