Architettura di programmazione delle applicazioni di servizio
Aggiornamento: novembre 2007
Le applicazioni di servizio Windows sono basate su una classe che eredita dalla classe System.ServiceProcess.ServiceBase. Per determinare il comportamento del servizio si esegue l'override dei metodi di questa classe e se ne definiscono le funzionalità.
Di seguito vengono riportate le classi principali legate alla creazione del servizio.
System.ServiceProcess.ServiceBase - L'override dei metodi dalla classe ServiceBase viene eseguito quando si crea un servizio e si definisce il codice per stabilire il funzionamento del servizio in tale classe ereditata.
System.ServiceProcess.ServiceProcessInstaller e System.ServiceProcess.ServiceInstaller - Consentono di installare e di disinstallare il servizio.
Per modificare il servizio, è inoltre possibile utilizzare una classe denominata ServiceController. Questa classe non è legata alla creazione di un servizio, ma può essere utilizzata per avviare, interrompere e passare i comandi al servizio, nonché per restituire una serie di enumerazioni.
Definizione del comportamento del servizio
Nella classe di servizio, si esegue l'override delle funzioni della classe base che stabiliscono ciò che accade quando lo stato del servizio viene modificato in Gestione controllo servizi. La classe ServiceBase espone i metodi riportati di seguito. Per aggiungere un comportamento personalizzato, è possibile eseguire l'override di tali metodi.
Metodo |
Eseguirne l'override per |
---|---|
Indicare quali operazioni devono essere eseguite quando il servizio viene avviato. Per un'esecuzione utile del servizio, occorre scrivere il codice in questa routine. |
|
Indicare quali operazioni devono essere eseguite quando il servizio viene sospeso. |
|
Indicare quali operazioni devono essere eseguite quando il servizio viene arrestato. |
|
Indicare quali operazioni devono essere eseguite quando il servizio riprende il normale funzionamento dopo la sospensione. |
|
Indicare quali operazioni devono essere eseguite prima della chiusura del sistema, nel caso in cui il servizio sia in esecuzione in quel momento. |
|
Indicare quali operazioni devono essere eseguite quando il servizio riceve un comando personalizzato. Per ulteriori informazioni sui comandi personalizzati, visitare MSDN Online. |
|
Indicare quali operazioni devono essere eseguite quando il servizio riceve un evento di risparmio energia, come quelli che indicano lo stato di batteria scarica o sospensione. |
Nota: |
---|
Tali metodi rappresentano gli stati che il servizio assume nel corso della propria durata, passando da uno stato al successivo. Il servizio, ad esempio, non risponde a un comando OnContinue prima che venga chiamato il metodo OnStart. |
Esistono diverse altre proprietà e metodi interessanti, tra cui:
Il metodo Run della classe ServiceBase. Si tratta del punto di ingresso principale del servizio. Quando si crea un servizio utilizzando il modello Servizio Windows, il codice viene inserito nel metodo Main dell'applicazione per eseguire il servizio. Il codice è simile al seguente:
Dim ServicesToRun() As System.ServiceProcess.ServiceBase ServicesToRun = New System.ServiceProcess.ServiceBase() _ {New Service1()} System.ServiceProcess.ServiceBase.Run(ServicesToRun)
System.ServiceProcess.ServiceBase[] ServicesToRun; ServicesToRun = new System.ServiceProcess.ServiceBase[] { new Service1() }; System.ServiceProcess.ServiceBase.Run(ServicesToRun);
System.ServiceProcess.ServiceBase ServicesToRun[]; ServicesToRun = new System.ServiceProcess.ServiceBase[] { new Service1() }; System.ServiceProcess.ServiceBase.Run(ServicesToRun);
Nota: In questi esempi viene utilizzata una matrice di tipo ServiceBase, in cui è possibile aggiungere ciascun servizio contenuto nell'applicazione. Di conseguenza, è possibile eseguire tutti i servizi contemporaneamente. Se si crea un unico servizio, tuttavia, è possibile non utilizzare la matrice, dichiarare un nuovo oggetto che eredita dalla classe ServiceBase e successivamente eseguirlo. Per un esempio, vedere Procedura: scrivere servizi a livello di codice.
Una serie di proprietà della classe ServiceBase, che definiscono i metodi da chiamare nel servizio. Quando la proprietà CanStop, ad esempio, è impostata su true, è possibile chiamare il metodo OnStop. Quando la proprietà CanPauseAndContinue è impostata su true,è possibile chiamare i metodi OnPause e OnContinue. Quando una di queste proprietà viene impostata su true, è pertanto necessario eseguire l'override dei metodi associati e definirne l'elaborazione.
Nota: Per un funzionamento corretto, è necessario che il servizio esegua l'override almeno dei metodi OnStart e OnStop.
Per comunicare con un servizio esistente e controllarne il comportamento, è inoltre possibile utilizzare un componente denominato ServiceController. Per informazioni sull'utilizzo di ServiceController, vedere Monitoraggio di servizi Windows.
Vedere anche
Attività
Procedura: creare servizi Windows
Concetti
Introduzione alle applicazioni di servizio Windows