Press "Enter" to skip to content

Category: Intermediate

7 – MiniSqlAgent – Un servizio per eseguire Script T-SQL su qualsiasi SqlServer

Introduciamo in questo post quello che vogliamo realizzare con il servizio Windows che abbiamo fino a qui sviluppato per spiegare alcuni concetti fondamentali nella generazione di una applicazione .NET non banale. Il nostro Servizio Windows in questo momento è stato costruito in modo che il suo lavoro è fornire dei messaggi ad intervalli regolari, ora vogliamo trasformarlo in un Agent in grado di eseguire script Transact SQL su uno o più server SQL a cui può collegarsi.

Per costruire un sistema di questo genere, per prima cosa dobbiamo costruire gli oggetti che possono ospitare gli script SQL, una volta costruiti questi oggetti, dobbiamo creare il codice che li eseguirà all’interno del nostro servizio.

Comments closed

6 – MiniSqlAgent – Aggiungere il supporto ai Messaggi HTTP tra un servizio di Windows e la sua Console

In questo post aggiungeremo la funzionalità di invio messaggi tramite HTTP al servizio MiniSqlAgent che abbiamo sviluppato nei post precedenti e la funzionalità di ricezione dei messaggi alla sua console di supporto. Per farlo aggiorneremo l’ HTTP sender, aggiorneremo il sistema di Log del servizio, aggiungeremo alcuni parametri di configurazione al servizio, aggiungeremo inoltre una Window che fornirà un real time monitor del servizio all’amministratore.

Comments closed

2 – Un sistema di messaggistica per molteplici usi – HTTP Sender e HTTP Listener – Il progetto di test

Nel post precedente abbiamo creato una libreria generica contenente le classi che implementano un HTTP listener ed un HTTP sender, in questo realizziamo una applicazione di test WPF che ci permette di verificare il corretto funzionamento delle due classi, in seguito proveremo ad inserire questi due oggetti in una applicazione reale, o meglio in due applicazioni, il servizio windows che abbiamo sviluppato e la sua console.

Comments closed

1 – Un sistema di messaggistica per molteplici usi – HTTP Sender e HTTP Listener – le librerie di base

Introduzione

Un servizio windows, per definizione non è dotato di interfaccia utente, è un po’ come una scatola nera con dei plug che riceve input e produce output ma senza alcuna interazione con l’utente.

Un servizio semplice, potrebbe avere bisogno esclusivamente di una console, come quella da noi costruita nei post precedenti, per configurarlo e per verificare che parte e si ferma. Potremmo anche aggiungere alla console creata un sistema veloce per consultare i log del servizio e fermarci qui.

Se il servizio è più complesso di quello che scrive dati su un file di testo che fin qui abbiamo sviluppato, l’amministratore potrebbe aver bisogno anche di valutarne il carico di lavoro, la funzionalità e quindi profilarne il funzionamento per potere ad esempio rispondere alla domanda: “Ma perché è così lento.” facendo un fine tuning della parametrizzazione del servizio.

Per fare questo abbiamo bisogno che il servizio sia in grado di essere monitorato in tempo reale, usando il log verboso che abbiamo introdotto nel primo sviluppo del servizio potremmo usare un file system watcher e monitorare il file di log, ma è un approccio un po’ troglodita, soprattutto se il log è massiccio.

A questo punto entrano in gioco gli oggetti che abbiamo inserito nel titolo di questo post. Un servizio può essere dotato di una interfaccia per comunicare con il mondo (in questo caso con il PC che lo ospita) utilizzando il protocollo HTTP, l’interfaccia può essere bidirezionale, quindi il servizio potrebbe ricevere dei comandi da un programma esterno e potrebbe trasmettere dati e richieste ad un programma esterno.

Ecco perché abbiamo deciso di sviluppare le classi necessarie a creare questo tipo di comunicazione.

Comments closed

5 – MiniSqlAgent – Avviare e fermare un servizio da una console WPF – Uso dei DispatcherTimer, dei RoutedCommands e dei Converters

In questo post illustriamo come costruire il codice necessario ad avviare e fermare un servizio da una applicazione WPF e nell’effettuare questa dimostrazione spieghiamo come costruire alcuni converter, come modificare lo stile di un controllo in base alla variazione di un dato sul View Model del contesto, e spiega come utilizzare i Command di WPF per pilotare i menu, sia agganciando i Command di sistema forniti dalle librerie, sia creando dei command specifici per le esigenze delle nostre applicazioni.

Comments closed

4 – MiniSqlAgent – Una Console per la gestione di un servizio in WPF – Parte 2 La Console il manager e la User Interface

In questa seconda parte dell’articolo dedicato allo sviluppo della user interface per la gestione dei parametri di configurazione del nostro servizio vedremo come creare il Manager per i parametri derivato dalla classe abstract creata nel post precedente e creeremo uno User Control in grado di gestire le due collezioni dei parametri e la Window che specificamente gestirà i parametri per il nostro servizio.

Comments closed

3 – MiniSqlAgent – Una Console per la gestione di un servizio in WPF – Parte 1 Gestione Parametri applicativi

Dopo i due post dedicati alla modifica strutturale alla funzionalità dei parametri di configurazione applicativi ed al controllo DropDownList per i nostri parametri, iniziamo lo sviluppo di una console per Gestire il servizio che abbiamo costruito nei post precedenti, questa console, sviluppata in WPF . Di che cosa parleremo in questo post?

  • Di applicazioni a singola istanza tramite l’uso di un mutex.
  • Di come implementare un oggetto che ci impedisca di aprire la stessa finestra all’interno di una applicazione più di una volta.
  • Di come implementare l’interfaccia utente per la gestione dei parametri di configurazione applicativi.
Comments closed

Un Editor di tipo ComboBox Generato dinamicamente a Runtime

Vediamo come abbiamo modificato lo User Control che abbiamo implementato nel post Generazione di componenti da codice WPF per permettere di generare un Editor di tipo ComboBox implementando la possibilità di modificare dei parametri di configurazione di tipo enumerato.

Nel post precedente abbiamo già introdotto una modifica sostanziale a questo User Control determinata dalla verifica di possibili futuri problemi per implementare la logica applicativa. Abbiamo tolto a questo controllo le funzionalità di caricamento e salvataggio dei dati che saranno invece delegate al manager che lo utilizzerà nella user interface.

Comments closed

Librerie comuni – Un cambiamento strutturale ad una libreria di uso comune Note d’uso

Un articolo che illustra quello che spesso accade mentre sviluppiamo una applicazione, rileviamo un problema costruttivo e dobbiamo smontare qualcosa per ricostruire in un modo diverso. Credo che in edilizia si chiamino Varianti in corso d’opera, nello sviluppo di applicazioni sono esattamente la stessa cosa.

Dopo il  precedente post, che mostrava come creare un manager per i parametri di configurazione applicativi di un servizio, la prosecuzione logica dello sviluppo era quella di creare un progetto con un interfaccia utente per gestire questi parametri. Nei post precedenti abbiamo creato la struttura di base per trattare questo tipo di oggetti ed una interfaccia utente WPF che è in grado di gestirne una collezione creando dei controlli in modo dinamico in base al tipo di oggetto.

Comments closed

2 – MiniSqlAgent – Aggiungere alcuni parametri di configurazione ad un Servizio Windows

In questo post, che aggiunge un mattoncino al servizio che abbiamo iniziato a costruire nel post  Minisqlagent un Servizio Windows installabile con InnoSetup vediamo come inserire in una applicazione di servizio i parametri di configurazione dello stesso modificando il suo Business Context per permettere all’amministratore di sistema di parametrizzare il servizio in base alle sue esigenze.

Comments closed