A DotNet Raider

My adventures in the .NET world!
posts - 49, comments - 12, trackbacks - 0

My Links

News

Website View Martino Bordin's profile on LinkedIn

Archives

Post Categories

martedì 20 ottobre 2015

Creare servizi Windows con Topshelf

Da un pò di tempo, quando devo creare un Windows Service, utilizzo la libreria Topshelf, che permette di sviluppare una normale applicazione console e, una volta impostate le opportune configurazioni mediante sintassi fluent, installarla facilmente come windows service, senza tool esterni quali installutil.

Un’applicazione console, oltre ad essere più facile da debuggare, è anche eseguibile direttamente (a differenza di un windows service).

Vediamo quindi come creare un servizio.

1) Apriamo Visual Studio e selezionamo il progetto di tipo “Applicazione console”

 

2) Creiamo una nuova classe che esponga 2 metodi che verranno chiamati allo start e allo stop del servizio

internal class MyConsoleService 
    { 
        public void Start() 
        { 
            System.IO.File.AppendAllText("MyConsoleService.text", string.Format("MyConsoleService start {0}{1}", DateTime.Now, Environment.NewLine)); 
        }

        public void Stop() 
        { 
            System.IO.File.AppendAllText("MyConsoleService.text", string.Format("MyConsoleService start {0}{1}", DateTime.Now, Environment.NewLine)); 
        } 
    }

 

3) Nel metodo Main della classe Program, andiamo a definire i parametri di configurazione del nostro servizio (vi rimando alla documentazione per la spiegazione dettagliata)

class Program 
    { 
        static void Main(string[] args) 
        { 
            HostFactory.Run(hostConfigurator => 
            { 
                hostConfigurator.Service<MyConsoleService>(serviceConfigurator => 
                { 
                    serviceConfigurator.ConstructUsing(() => new MyConsoleService()); 
                    serviceConfigurator.WhenStarted(service => service.Start()); 
                    serviceConfigurator.WhenStopped(service => service.Stop()); 
                });

                hostConfigurator.RunAsNetworkService(); 

                hostConfigurator.StartAutomatically(); // Autostart del Servizio

                hostConfigurator.SetDisplayName("MyConsoleApp Service"); // Nome visualizzato nell'elenco servizi di services.msc 
                hostConfigurator.SetDescription("Servizio creato utilizzando Topshelf"); //  Descrizione visualizzata nell'elenco servizi di services.msc 
                hostConfigurator.SetServiceName("MyConsoleAppService"); // Nome del servizio 
            }); 
        } 
    }

4) Per installare il servizio lanciamo l’exe con il parametro install (digitare il parametro help per vedere l’elenco completo dei comandi)

 

5) Apriamo la console dei servizi di WIndows e verifichiamo la corretta installazione del servizio

6) Avviamo il servizio e controlliamo la creazione del file

 

Come potete vedere Topshelf è molto versatile quanto poco invasivo (solo il passo 3 è relativo alla configurazione dell’infastruttura).

Dategli un’occhiata e dimenticherete presto come si crea un windows service, il relativo installer e il tool installutil.

posted @ lunedì 1 gennaio 0001 00:00 | Feedback (1) | Filed Under [ VISUAL STUDIO MISC ]

Powered by:
Powered By Subtext Powered By ASP.NET