Creiamo un servizio Windows in VB.NET

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

Uptime su Linux, Mac e altri sistemi Unix-like

Server Unix di altri tempi!

Foto di Rudolf Schuba.

Ieri avevo pubblicato l’articolo intitolato: “Come si visualizza l’uptime di un sistema Windows?”, al quale hanno fatto seguito diversi commenti. Tra ieri e oggi abbiamo pertanto ragionato insieme su come sia possibile conoscere il tempo di attività di un computer interrogando vari sistemi operativi. In effetti, molti preferiscono adoperare Linux, Mac OS X o altri sistemi operativi Unix-like piuttosto che usare software Microsoft. Mi pare quindi giusto dare a queste persone delle informazioni adatte alle loro esigenze.

Volendo andare al dunque, come possiamo sapere da questo tempo il nostro computer è acceso, se adoperiamo “Linux e affini”? Come accennavo nel paragrafo precedente, i commenti dei lettori sono stati molto significativi e rispondono in maniera esauriente a questa domanda. Qui di seguito ne riporto una sintesi:

Da terminale (Linux, Mac o anche OpenSolaris) si può digitare il comando uptime oppure uprecords se si vogliono fare classifiche di vario tipo.
Su Linux, FreeBSD e OpenSolaris si può usare anche il comando w, che unisce gli output di uptime e who.

Ringrazio Myself, Maurizio Lombardi e Luca per aver dato un apporto prezioso attraverso la loro conoscenza e aver così permesso la stesura di questo articolo. Continuate così!

Come si visualizza l’uptime di un sistema Windows?

Vi è mai capitato di voler sapere l’orario esatto in cui il vostro computer con sistema operativo Windows è stato acceso? Avete mai desiderato conoscere il suo cosiddetto uptime? Oggi stesso ne ho avuto bisogno, ho trovato la risposta e mi accingo a condividerla con voi.

Ecco cosa bisogna fare:

  1. Aprire il menu Avvio e cliccare su Esegui.
  2. Digitare “cmd” e premere invio.
  3. Digitare nel prompt che è apparso “net statistics server” e premere invio.
  4. Verranno mostrate diverse informazioni e le prime sono la data e l’ora di accensione della macchina.
  5. Per calcolare l’uptime, non vi resta che calcolare la differenza tra la data e l’ora attuali e quelle ottenute al punto 4.

Bastano 3 minuti per fare ciò ed è alla portata di tutti. Prossimamente pubblicherò altri consigli utili relativi al mondo Windows.

Revisione del design - fine agosto 2008

Ho il piacere d’annunciare a tutti i cari lettori di Inforum che finalmente il blog viene mostrato in una veste completamente rinnovata e ancora più professionale. In effetti non c’è bisogno di usare molte parole: guardate voi stessi!

Mi interessa molto conoscere il vostro parere intorno a quest’aggiornamento: vi piace questo stile? Riscontrate degli errori di visualizzazione? Avete dei suggerimenti? Sono tutt’orecchi, come si suol dire, per far sì che tutto possa funzionare nel migliore dei modi.

Informazione o insegnamento?

In questi ultimi 2-3 giorni mi è capitato di riflettere un po’ sui vari tipi di articoli che vengono pubblicati sui blog dell’ambito informatico. Ho visto che circa il 75% dei contenuti sono news: stiamo parlando di notizie delle ultime release dei sistemi operativi, di certi programmi e videogiochi, sull’hardware appena uscito sul mercato, ecc… Solitamente vengono ricavate da qualche aggregatore di feed RSS, o perlomeno da qualche sito di riferimento. Ogni notizia viene enunciata in circa 3-4 paragrafi piuttosto brevi. Come potrete facilmente immaginare da ciò che avete appena letto, si tratta di materiale meramente informativo e non originale.

Qualche attento lettore di Inforum a questo punto potrebbe esclamare: “Ma anche qui ci sono degli articoli relativi alle ultime distro Linux o sulle ultime versioni di Firefox, per esempio!” È proprio vero. Uno dei prossimi obiettivi che mi sono prefisso, come blogger, è di riportare meno news, magari, ma commentarle di più e valutarle da un’angolazione particolare, conferendo loro una certa unicità e personalità. Meglio ancora, pubblicherò più lezioni sulla programmazione e sulla computer grafica, non trascurando al tempo stesso gli utilizzatori del computer che sono meno esperti.

Tornando all’argomento principale, la domanda è: un blog dev’essere portato avanti con l’obiettivo di informare o di insegnare qualcosa? Entrambe le cose sono utili alla gente, ma immagino che la cosa migliore sia insegnare, trasmettere qualcosa di valore pratico. Per capire quanto ciò possa essere vero, provate a pensare anche solo per un attimo alla “longevità”, diciamo così, di ciò che si scrive: una news è interessante finché è attuale, mentre un articolo che spiega come fare qualcosa può essere valido per anni.

Ora lascio la parola a voi, cari lettori: qual è il vostro punto di vista su quest’argomento? Siete d’accordo con quanto esposto sopra oppure no? Perché? Sarà bello leggere i vostri commenti. :-)