Riprendiamo, influenza permettendo, i nostri post tecnici parlando dei Windows Services. Inizieremo oggi con una loro panoramica per poi approfondire man mano nei prossimi giorni.
Cosa e dove sono
Tra le varie cose che l'utente non vede o vede molto poco ci sono i Windows Services. Ovviamente, tutti voi ben sapete che per visualizzare i servizi presenti sul nostro pc basta, scegliere nel Pannello di Controllo l'icona degli Strumenti di Amministrazione e poi Servizi.
A cosa potrebbero servire? Ad esempio per amministrare un network di connesioni, per monitorare le risorse e la loro l'utilizzazione, per analizzare l'uso del sistema etc.
L'architettura di un Windows Service è composta da:
- Service application: un applicazione consiste di uno o più service che provvedono alle funzionalità desiderate
- Service controller application: un'applicazione che permette il controllo del servizio
- Service Control Manager: utility che permette il controllo dei services istallat sul computer
Dopo aver creato un Windows Services, si può utilizzare un dei linguaggi supportati dal .NET ad esempio C#, occorre istallarlo registrando l'applicazione nel registro, in pratica esso diventa un executable object. Possiamo utilizzare le classi ServiceInstaller e ServiceProcessInstaller.
Per "amministrare" i Windows Services utilizziamo la SCM (Service Control Manager, utilizzando la Command Prompt di Visual Studio. NET e vedere cosa appare digitanto scm.
Differenze tra le Service Applications e le altre VS.NET Applications:
- Installing: occorre prima istallarle e registrarle aggiungendo prima i componenti d'istallazione;
- Debugging: non è possibile utilizzare i tasti funzione F5 ed F11, procediamo istallandola poi la "starttiamo" dunque "attacchiamo" facendo il debugger di un processo del service;
- Eseguire un Windows Service: con il metodo Run possiamo caricare un Windows Service nella SCM;le sue dialog box non sono visibili all'utente ed i messaggi d'errore sono riportate nell'event log.
Come lo creiamo
Le classi utilizzate per creareli sono quelle del namespace System.ServiceProcess, per effettuare il loro monitoraggio ed il debug del servizio mentre viene eseguito le classi utilizzate sono quelle del namespace System.Diagnositc. Vediamo alcune classi:
- ServiceBase: con l'override del metodo possiamo creare una service application;
- ServiceProcessInstaller e ServiceInstaller: per il suo l'installing e l'unistalling
- ServiceController: per amministare la service application, ad esempio per effettuare lo start e lo stop del servizio.
- EventLog:effettua il report degli errori nell'event log
- PerformanceCounter: per il monitorig dell'uso delle risorse
- Trace e Debug:per il debug del codice e d'aiuto per il trace
Vediamo qualche medoto della classe ServiceBase:
- OnStart: per specificare cosa deve fare il service al suo start
- OnPause: cosa deve accadere mentre esso è in pausa, come ad esempio chiudere la connessione con un database
- OnStop: cosa avviene quando il service è in stop
- OnContinue: ...
- OnShutDown: per specificare cosa fa il service quando il computer sta eseguendo lo spegnimento
- OnCustomCommand:quando vogliamo che il nostro service ammetta comandi custom
- OnPowerEvent: cosa deve fare quando riceve un segnale di alimentazione, es. quando la batteria è in via d'esaurimento
La classe ServiceController permette di programmare i controlli del service, i suoi metodi son
- Close:disconnette l'istanza della classe ServiceController dal servie e rilascia tutte le risorse allocate per l'applicazione
- Continue: riprende un service dopo che è stato messo in pausa
- ExecuteCommand: permette di creare un custom command su un service
- Pause: pone in pausa il servizio
- Refresh:refresh il valore di tutte le proprietà
- Stop: stoppa il service e tutte i service da esso dipendenti
Domani vedremo tra le altre cose come si crea un Windows Service.
powered by IMHO 1.3