In quanto sviluppato fino ad ora per creare un servizio in grado di eseguire script SQL su un Sql Server in modo schedulato, abbiamo predisposto tutto quanto per una esecuzione molto semplice, lasciando al client ADO e alla configurazione del Server SQL il compito di decidere come eseguire gli script. In questo post, aggiungeremo un parametro di controllo fondamentale per i Jobs, ovvero la possibilità di decidere dopo quanto tempo la connessione andrà in timeout se non riuscirà a completare un Job.
Comments closedMonth: June 2013
Alla distanza di 42 post dall’inizio della serie di quest’anno, arriviamo finalmente al post più importante per concludere lo sviluppo della versione 1.0 di MiniSqlAgent, un Servizio Windows in grado di eseguire in modo schedulato degli script SQL su qualsiasi SqlServer simulando in versione minimalista il Sql Server Agent. In questo post implementeremo quanto necessario ad effettuare le seguenti operazioni:
- Allo startup del servizio leggere tutti i Job memorizzati sulla cartella dati del servizio ed inserirli in una collection.
- Impostare un file system watcher che controlli se vengono aggiunti, cancellati, modificati dei Job sulla cartella dati riportando gli aggiornamenti sulla collection.
- Impostare il Loop di servizio in modo tale che controlli se vi sono Job da eseguire e li esegua.
In questo post andremo ad implementare il necessario a fare in modo che la finestra di base della MiniSqlAgentConsole non apra più di una volta l’interfaccia per la gestione dei Jobs. Per fare questo andremo ad implementare una classe entity Generic, una collection Generic, ed un metodo anonimo.
Comments closedIn questo post, vedremo come WPF ci permetta di derivare le proprie classi per permetterci di aggiungere funzionalità anche quando non vogliamo modificare l’aspetto visuale della classe WPF. In questo caso, avendo introdotto nel post precedente un sistema di memorizzazione di parametri di stato per la User Interface delle nostre applicazioni, vogliamo estendere la Window WPF e creare una nuova Window che sappia automaticamente come salvare la propria dimensione. Fatto questo, useremo questa nuova window come classe base per la MainWindow di MiniSqlAgentConsole.
Comments closedLa dimensione delle finestre è ovviamente un esempio di ciò che si può fare con questo tipo di funzionalità, un’altra potrebbe essere quella di riaprire le finestre che erano aperte nell’ultima sessione di lavoro, ripopolare i parametri di filtro su una finestra dati, ed altre cose che rendono la vita dell’utente più semplice.
Non stiamo parlando di preferenze, ma di “stato” dell’applicazione.
Comments closedIn questo post spieghiamo come fare in modo che uno User Control che si trova vari strati all’interno della user interface possa comunicare con la MainWindow dell’applicazione senza passare per l’ufficio complicazione affari semplici. Per farlo utilizzeremo i delegate e le Action.
Il problema
Nell’interfaccia della console del servizio MiniSqlAgent abbiamo iniziato ad implementare una User Interface complessa, che simula le Child Window di una MDI utilizzando il TabControl e gli user control. Gli User Control che gestiscono gli oggetti Job, possono trovarsi vari “strati” lontani dalla Window che li contiene, e non sapere nulla di tale window per il proprio funzionamento, ma sulla MainWindow abbiamo implementato una StatusBar, che ci mostra se il Servizio è attivo oppure no, e visto che abbiamo dello spazio, ci piacerebbe utilizzarla per dare dei messaggi di status all’utente. Come facciamo a fare arrivare alla MDI dei messaggi che arrivano dagli User Control senza complicarci troppo la vita?
Comments closedIn questo secondo post dedicato all’implementazione della User Interface per la gestione dei Job del nostro MiniSqlAgent, andremo a creare la porzione dell’interfaccia utente contenuta all’interno della finestra principale della console del servizio, per poi concludere con lo sviluppo della classe manager dei Job, in cui utilizzeremo lo User Control che abbiamo sviluppato nei post precedenti che potete leggere agli indirizzi qui sotto riportati.
- Uno User control per generare un Job per MiniSqlAgent
- User Control Fine Tuning – DateTimePicker, DateTimeUpDown, Combobox
In questa breve serie di Post, utilizzeremo quanto finora sviluppato per iniziare a costruire un’interfaccia avanzata per la console del nostro servizio Windows, in modo da poter costruire i Job che gli faremo eseguire. In Questa prima parte porteremo in libreria il CloseableTabItem che abbiamo costruito nel precedente post e faremo un paio di modifiche interessanti, nel post successivo andremo a creare la User Interface per gestire i Job all’interno della console del servizio.
Comments closedUn post che riporta ed estende un tutorial di csharpcorner e dimostra come modificare un controllo standard microsoft (il TabItem del TabControl) in modo da creare un interfaccia simile all’editor di visual studio, da utilizzare come bozza applicativa per le nostre interfacce WPF.
Comments closedFacciamo il fine tuning dello User Control disegnato nel post precedente a questo e disponibile QUI in questo articolo modificheremo le semplici textbox inserite per il primo test e aggiungeremo un DateTimePicker per la data della prossima esecuzione del Job, un DateTimeUpDown per l’ora della prossima esecuzione del job, in IntegerUpDown per la gestione dell’intervallo di esecuzione ed una combobox per selezionare le connessioni disponibili sul sistema per l’esecuzione dei job. Per fornire la lista alla combobox aggiungiamo ai parametri di configurazione del servizio e della sua console un file che conterrà tutte le stringhe di connessione valide a SQL Server che vogliamo memorizzare.
Comments closed