Console di Windows App vs servizio

3

La mia situazione

Lavoro per un'azienda che crea software per molte altre aziende. Quando ho appreso che gli installer non erano integrati con VS2012, ero curioso di sapere come installare. Finora, ho appena fatto cadere .exes sui nostri server client usando gli script di PowerShell. Ora ho bisogno di un servizio Windows completo.

Ho visto molti esempi di come eseguire servizi tramite un'applicazione console: link

Potrei facilmente usare sc.exe per creare un servizio basato su un'applicazione di console come questa. Non ho idea di come Windows possa gestire Start / Stop / Restart, però.

La domanda

Questo mi ha incuriosito su quale sia la relazione tra le applicazioni ei servizi della console nel mondo di Windows. I servizi sono solo applicazioni console con ganci per consentire al sistema operativo di chiamare start e stop? O i servizi sono completamente diversi?

Molto tempo fa, pensavo che WinForms e le applicazioni della console fossero completamente differenti. Dopo aver fatto scherzi in Win32, mi sono reso conto che erano la stessa cosa.

Le mie speranze

Spero che i servizi siano solo app per console, come WinForms, e che posso sfruttare direttamente le funzionalità Start / Stop in .NET. I progetti di installazione incorporati erano piuttosto orribili, quindi non mi sento troppo male per copiare .exes sul server.

    
posta Travis Parks 20.11.2013 - 03:33
fonte

1 risposta

6

Non direi che un'applicazione console è completamente diversa da un servizio Windows. Sono entrambi gli host per eseguire il codice. Detto questo, ci sono alcune differenze chiave:

  • Un servizio può essere eseguito anche se un utente non è collegato al PC.
  • Un servizio può essere facilmente configurato per essere eseguito nel contesto di account con autorizzazioni elevate come Network Service o Sistema locale.
  • Un servizio viene integrato con ganci per l'avvio, l'arresto, il riavvio e la sospensione durante l'esecuzione.
  • Un servizio non ha una console collegata, non può stampare nulla su stdout ma deve invece usare la registrazione di sistema (credito a Martin)
risposta data 20.11.2013 - 04:02
fonte

Leggi altre domande sui tag