2009-08-01 10 views
5

Ho solo creato applicazioni Windows standard (principalmente C#). Cosa distingue un servizio Windows da una normale applicazione Windows? Cosa li rende diversi? Cosa può fare un servizio che un'applicazione non può? Quali sono le differenze viste dal punto di vista degli sviluppatori? Come si crea uno? È solo per creare un'applicazione regolare (forse l'applicazione Console, dato che non ci sono gui?) Ed eseguirla o installarla in un modo speciale, o è più che deve essere fatto?Qual è la differenza tra un servizio Windows e un'applicazione normale?

risposta

9

Ci sono un paio di cose che mi saltano immediatamente.

  • Corrono in una console completamente diverso a cominciare Vista
  • Come risultato di esecuzione in una console diversa, i servizi non può interagire con il desktop. Quindi in sostanza non esiste un supporto diretto dell'interfaccia utente. In genere è necessario codificare un'applicazione di interfaccia utente di pari livello che viene eseguita come un normale programma e utilizza un meccanismo (ad esempio named pipe) per comunicare con il servizio.
  • In genere, è possibile eseguire una sola istanza del servizio in qualsiasi momento.
  • I processi sono per utente, i servizi sono per postazione di lavoro e, quindi, spesso forniscono servizi per più utenti.
0

La differenza principale è che un servizio Windows è qualcosa che si desidera eseguire come servizio in background e non richiede un'interfaccia utente. Un esempio è un servizio che indicizza i file sul tuo disco per la ricerca. .

Un altro vantaggio è che si può avere servizi avviati automaticamente quando l'utente accede a

Ci sono anche metodi che è possibile ignorare che vengono chiamati quando viene avviato il servizio/arrestato (cioè dal Pannello di controllo. | Strumenti di amministrazione | Servizi).

In Visual Studio è disponibile un tipo di progetto speciale che è possibile utilizzare per crearlo. Vedere il sito sotto per un esempio: http://www.dotheweb.net/articles/dotnet/services.aspx

+0

Direi piuttosto che è possibile avere servizi in esecuzione senza sessioni interattive sulla macchina. È possibile avviare lotti o programmi quando l'utente accede in vari modi. L'utilizzo di un servizio non è davvero un vantaggio lì. – Joey

6

This MSDN page porta a più documentazione su come crearli di quanto non si potrebbe scuotere un bastone a. This page è forse una migliore introduzione a loro in generale.

La differenza fondamentale tra un processo in esecuzione come un'app rispetto a un servizio è che il servizio può funzionare completamente al di fuori della normale associazione con un utente e una sessione. Pertanto, i servizi possono essere eseguiti in modo tale da essere avviati prima che qualsiasi utente effettui l'accesso e possano continuare a essere in esecuzione dopo la disconnessione degli utenti. I servizi sono quindi utilizzati per attuare una grande quantità delle effettive funzionalità del sistema operativo.

Anche i servizi non sono associati all'esecuzione come mapping 1: 1 con un processo. Molti servizi possono esistere all'interno di un processo, normalmente attraverso l'uso di svchost (dare un'occhiata a questi con Process Explorer per un'indicazione di come spesso funziona). Ciò riduce lo sforzo all'avvio poiché non sono necessari più processi per servizi relativamente leggeri.

L'implementazione di un servizio in C# è piuttosto semplice, questo page indica come in termini molto semplici da seguire.

Si noti che in realtà un servizio in Windows è poco più che lo scaffolding nel registro in HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services che definisce quei 'percorsi immagine' (nella maggior parte dei casi semplicemente eseguibili e parametri da usare) che sono considerati servizi con cui l'utente esegue quindi come, da quali altri servizi dipendono e se iniziano all'avvio/dopo l'avvio o come richiesto.

2

Se hai familiarità con Unix, un servizio di Windows è come un daemon Unix. Non è associato ad alcun utente particolare ed è sempre in esecuzione in background.

Problemi correlati