Category Archive for microsoft

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

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.

Usiamo le scintillanti icone nascoste di Visual Studio .NET 2008

Visual Studio è un ottimo IDE di sviluppo, ma solitamente non siamo indotti a pensare che possa anche includere icone da usare nelle nostre applicazioni. Non è proprio così: la versione 2008 contiene un archivio che può soddisfare gran parte delle nostre esigenze estetiche.

Dove si trova tale “miniera d’oro”? Dovete scompattare l’archivio zip che si trova nella cartella dove è stato installato il software. Tipicamente il percorso è:

C:\Program Files\Microsoft Visual Studio 9.0\Common7\VS2008ImageLibrary\1033\VS2008ImageLibrary.zip.

Troverete icone in “stile Vista”, diciamo, e anche alcune immagini png che contengono elementi multipli, da estrapolare secondo la nostra propria necessità.

Facciamo nostri i tipi Nullable

Bagni con cartello recante la scritta

Foto di naus3a01.

Tutti gli sviluppatori devono considerare molto spesso, nelle loro implementazioni, il fatto che un certo oggetto possa non essere stato valorizzato. Per esempio, una colonna di un database potrebbe essere a NULL e noi potremmo aver bisogno di adeguare il nostro codice a tale realtà. Quando si tratta di istanze di tipi di riferimento, può essere sufficiente verificare che siano a Nothing (o a null, in C#): se lo sono, significa che non hanno nessun valore. Se invece usiamo tipi di valore, come ad esempio gli interi, il controllo appena citato non avrebbe senso: non possono essere nullable poiché dispongono di capacità sufficiente a esprimere solo i valori appropriati per tali tipi. La domanda perciò è: come si possono gestire i valori nulli su oggetti che normalmente non lo permetterebbero?

Per rappresentare elementi presenti o meno a seconda della circostanza, dobbiamo usare il tipo Nullable, introdotto nel Framework .NET 2.0. La sua peculiarità è che supporta un tipo di valore a cui può essere assegnato un riferimento nullo come tipo di riferimento. Di conseguenza, un tipo nullable può esprimere un valore oppure esprimere che non è presente alcun valore. Tutto ciò si basa sui Generics e permette perciò di definire un nullable che incapsuli una variabile di un tipo specifico. In pratica, scriveremo dichiarazioni come queste:

Dim foo as Nullable(Of Int32)
Dim dummy as Nullable(Of Double)

È più facile sviluppare seguendo tale metodo, perché si continua a garantire la cosiddetta “type safety”. Grazie alla classe Nullable è inoltre possibile ottenere il tipo sottostante, nonché eseguire operazioni di confronto e uguaglianza su coppie di nullable il cui valore sottostante non le supporta nativamente.

Boxing e unboxing

Quando si esegue il boxing di un tipo nullable, il CLR esegue automaticamente il boxing del valore sottostante, non dell’oggetto Nullable stesso. Se pertanto la proprietà HasValue è impostata su true, il contenuto della proprietà Value viene sottoposto a boxing. Se invece è a false verrà sottoposto a boxing il valore nullo (ossia Nothing in VB.NET, appunto).

Quanto fervore per la manovra Microsoft - Yahoo!

Taxi di Yahoo!

Foto di Yodel Anecdotal.

Da almeno tre anni si parla della possibilità che Microsoft possa mettere le mani su Yahoo e competere con Google nell’ambito dei servizi di ricerca e advertising on line. Lo sappiamo e non voglio annoiarvi ripetendo informazioni già note. Ma avete riflettuto su quanto fervore sta destando tutto questo?

Ben 5 articoli apparsi su CNET News nelle ultime 48 ore parlano in modo capillare di come si sta sviluppando la vicenda. L’ultimo pubblicato parla del fatto che Microsoft sta dando un ultimatum di 3 settimane a Yahoo, per concludere l’affare. È lodevole la dedizione manifestata dai suoi giornalisti nel documentare tutto tempestivamente, sia chiaro, tuttavia mi fa specie vedere i mezzi d’informazione così concentrati su questa cosa: non è eccessivo?

Forse bisognerebbe scrivere intorno ad altre notizie, come ad esempio il rilascio di Freenet 0.7 rc1 (Per chi non lo sapesse, si tratta della nuova versione di un software per la condivisione dei dati in modo anonimo). Si tratta sempre di una news informatica, ma un po più orientata alla vera innovazione e ricerca. Voi che cosa ne pensate? Scrivete un vostro commento.