Architettura di programmazione delle applicazioni di servizio

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.

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

OnStart

Indicare quali operazioni devono essere eseguite quando il servizio viene avviato. Per un'esecuzione utile del servizio, occorre scrivere il codice in questa routine.

OnPause

Indicare quali operazioni devono essere eseguite quando il servizio viene sospeso.

OnStop

Indicare quali operazioni devono essere eseguite quando il servizio viene arrestato.

OnContinue

Indicare quali operazioni devono essere eseguite quando il servizio riprende il normale funzionamento dopo la sospensione.

OnShutdown

Indicare quali operazioni devono essere eseguite prima della chiusura del sistema, nel caso in cui il servizio sia in esecuzione in quel momento.

OnCustomCommand

Indicare quali operazioni devono essere eseguite quando il servizio riceve un comando personalizzato. Per ulteriori informazioni sui comandi personalizzati, visitare MSDN Online.

OnPowerEvent

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);
    

    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.

Vedere anche

Attività

Procedura: creare servizi Windows

Concetti

Introduzione alle applicazioni di servizio Windows