Серверное приложение надо делать сервисом(службой) по следующим причинам
Сервис(служба) - это стандартно
отсюда вытекает следующие виды плюсов:
для сервиса уже многое есть готовое, причем это готовое уже все знают, и под это готовое уже написана куча утилит, программ и т.д.
1. сервис не требует пользовательской сессии (а бесплатных сессий всего 3, а остальные за деньги)
2. запуск сервиса можно настроить при старте машины (это актуально - т.к. перезапуск windows-а может быть настроен в автоматическом режиме при пропадании питания, получения нового обновления, ухода в bsod и т.д.), и в этом случае рядом не будет человека, который сможет запустить gui-ишную прогу.
3. сервис можно штатными средствами запустить, остановить, перезапустить.
4. штатными средствами можно настроить, что происходит в случае отказа сервиса (через какое время делается перезапуск, какое кол-во попыток и т.д.)
5. системые события по сервису такие как (запуск, останов, сдыхание и т.д.) пишутся в системный журнал
6. сервис более безопасен, т.к. его проще запускакть под подпользователем с ограниченными правами.
7. сервисом можно управлять удаленно (не логинясь на машину) через mmc
8. сервис имеет готовый gui по мониторингу и управлению: mmc
9. сервис имеет готовый api по управлению и мониторингу, как из командной строки net start/stop, так и из script-овых языков, так и из полных языков.
10. есть куча утилит (как маленьких, так и больших) - которые собирают инфу о "здоровье" корпоративной IT-среды, соответственно модуль по мониторингу сервисов у них уже есть готовый.
ps
в литературе по безопасности советуют исключать gui-ишную часть из сервера, т.к. gui-ишную часть проще атаковать.