Che cos’è un servizio Windows? Sui sistemi operativi Microsoft, un servizio Windows è un eseguibile che compie determinate funzioni e che è progettato per non richiedere intervento da parte dell’utente. Possono essere configurati per essere avviati in fase di boot e per essere eseguiti in background. In alternativa, si possono far partire manualmente, se lo si desidera. Da un punto di vista concettuale, sono analoghi ai demoni Unix.
Fatta questa premessa, rispondiamo ora alla domanda principale: come possiamo creare un nuovo Windows service in ambiente .NET? Per cominciare, creiamo in Visual Studio un nuovo progetto di tipo “Windows Service”, poi modifichiamo le proprietà del servizio dalla finestra delle proprietà: i tre booleani CanPauseAndContinue, CanShutDown, e CanStop determineranno il comportamento del servizio che stiamo sviluppando. Ovviamente la proprietà ServiceName serve ad indicare e impostare il nome. Notate inoltre che esiste anche il campo CanHandlePowerEvent, che serve a stabilire se potremo gestire i cambiamenti di stato dell’alimentazione.
il passo successivo consiste nell’aggiungere il codice di startup: tipicamente dobbiamo inserirlo nella funzione di gestione dell’evento OnStart event. Ecco un esempio elementare:
Protected Overrides Sub OnStart(ByVal args() As String)
EventLog.WriteEntry( "Scrivi quello che vuoi.")
End Sub
Possiamo implementare il comportamento del nostro applicativo anche in relazione ad altri eventi, quali: OnContinue, OnCustomCommand, OnPause, OnShutdown, OnPowerEvent, e OnStop. Se e come farlo dipende in grandissima parte dagli obiettivi che ci siamo prefissi con la creazione del nostro progetto, ma è piuttosto evidente che di solito è necessario gestire almeno l’avvio, la pausa, la continuazione e la terminazione del servizio.
Può essere davvero importante tenere traccia delle attività della nostra applicazione tramite un log, ma per semplificare le cose ricordiamoci di impostare la proprietà AutoLog (della classe Service) a true, in modo che gli eventi basilari vengano loggati automaticamente. Se faremo ciò dovremo preoccuparci di loggare solo le operazioni o gli avvenimenti di carattere specifico.
Quando avremo finito il nostro sviluppo, dovremo anche preparare un installer (che sarà di tipo ServiceInstaller) che prenda il Windows service di nostra invenzione e lo installi nel sistema. Come si fa? Dobbiamo selezionare il progetto nel box del Solution Explorer e visualizzarne le proprietà: vedremo il link “Add Installer”, che fa al caso nostro. Seguiamo la procedura guidata, in modo da aggiungere l’oggetto installer che dovremo personalizzare.
Nel prossimo articolo di questa serie vedremo dettagliatamente come creare un service installer. 