Serviços são programas que, como você diz, devem ser executados em segundo plano sem interação com o usuário.
Aqui estão algumas razões pelas quais um desenvolvedor pode desenvolver ou usar um serviço, em vez de (ou muitas vezes com) um programa padrão do Windows:
-
Os serviços não são desligados quando um usuário faz logon ou logoff. Coisas que precisam ser executadas em segundo plano em todos os momentos, independentemente de quem esteja conectado ou quando, geralmente usarão um ou mais serviços.
-
Os serviços podem ser executados como uma conta com privilégios altos ou administrativos, mas aceitam entrada ou direção de um aplicativo cliente que não tenha privilégios administrativos. De tal forma, um usuário que não está executando como administrador pode fazer coisas que exigem privilégios administrativos.
-
Um benefício colateral do acima é que, se você projetar o serviço corretamente, ele poderia aceitar comandos não apenas de um aplicativo cliente (via TCP / IP, RPC, pipes, etc.) sendo executado na mesma máquina. , mas um aplicativo cliente em execução em qualquer outra máquina. Portanto, um aplicativo que precisa ser controlado remotamente geralmente emprega um ou mais serviços.
-
Se você está projetando um aplicativo que precisa ser acessado por vários usuários ao mesmo tempo, você pode estruturar as coisas em que cada usuário está executando um cliente que fala com um serviço centralizado (local ou remoto). O serviço pode, então, arbitrar entre as solicitações e garantir que as solicitações simultâneas não pise nos dedos uns dos outros e reportar ao respectivo cliente (um exemplo de um aplicativo que, na minha opinião, seria o Backup Exec da Symantec).