Press "Enter" to skip to content

17 – Lavorare con i dati – Classi di uso comune, un aggiornamento generale con cambio framework

Prima di utilizzare i Setting applicativi ed utente nell’applicazione UsersDb, devo aggiornare, verificare (e lucidare) le librerie di uso comune Dotnetwork, che ho iniziato a sviluppare nei primi post di questo blog e proseguito negli anni fino ad oggi.

DotNetwork, le librerie di uso comune:

Le librerie di uso comune di DotNetwork, sono una serie di Dll che ho sviluppato nel corso degli anni per contenere una serie di classi che sicuramente ricicleremo in buona parte delle nostre applicazioni. Contengono molti Helper, alcune estensioni, delle classi che servono sempre, degli user control, degli stili, dei converter ed altre cose.

Le librerie sono composte da più progetti, ciascuno di essi da origine a una .dll. Il loro contenuto è tematico e modulare, ovvero ogni libreria contiene delle classi che saranno utilizzate insieme o una serie di classi che forniscono un determinato servizio. A volte la libreria contiene poche classi, specializzate, in questo caso sono in un singolo progetto perché non sono usate da tutti i progetti, ma potrebbero essere utili in molti  dei nostri progetti. Ad esempio la libreria DnwCrypto che permette la crittografia, o la libreria DnwBaseDataHttp, che contiene le classi e gli helper che permettono di creare un HTTP listener e un HTTP sender per far comunicare due applicazioni (le classi sono state spiegate nei post dell’applicazione MiniSqlAgent e usate per far dialogare un Servizio Windows con la sua Console di controllo in modo che la console possa sapere cosa il servizio sta facendo). Ci sono invece altre librerie contenenti molte più classi, come ad esempio DnwBase che contiene classi, helper, Extension che sono utili in tutte le applicazioni genericamente quindi non ha senso siano suddivise in dll diverse.

Vediamo di dare una descrizione precisa dei progetti e dei loro contenuti, per poi linkare lo zip della solution che ho aggiornato al framework .net 4.5.2.

DnwLibraries.sln

la solution contiene i seguenti progetti:

  • DnwBase – genera Dnw.Base.dll
  • DnwBaseDataHttp – genera Dnw.Base.Data.Http.dll
  • DnwBaseDataSqlServer – genera Dnw.Base.Data.SqlServer.dll
  • DnwBaseServices – genera Dnw.Base.Services.dll
  • DnwBaseWpf – genera Dnw.Base.Wpf.dll
  • DnwCrypto – genera Dnw.Crypto.dll
  • DnwUISettings – genera Dnw.UI.Settings.dll
  • Dnw.UI.SqlServer – genera Dnw.UI.Sqlserver.dll

 

Dnw.Base.dll

E’ una libreria che contiene (come dice il suo nome) tutte le classi e gli oggetti di base usati in un programma, in questa libreria sono memorizzate una serie di classi Entity base che servono, ad esempio, per memorizzare i parametri applicativi, i parametri utente e i parametri di configurazione automatici di una applicazione.

Contiene una serie di Extension della classe String per fare una serie di controlli e di operazioni di uso comune sulle stringhe.

Contiene la classe Result, che abbiamo spiegato in uno dei post precedenti relativi alla gestione dei dati e che trasferiremo in questa libreria perché è una classe generica che possiamo riutilizzare in ogni applicazione. Ci sono una serie di Helper per convertire i dati letti dal database e per Serializzare e Deserializzare classi usando JSON o XML.

Cosa fanno queste classi è spiegato in modo sparso, cronologicamente a partire dai post del 2007 fino ad oggi.

Dnw.Base.Data.Http.dll

Questa libreria contiene le classi per generare un Sender e un Listener HTTP e permettere loro di scambiarsi dati attraverso un host e una porta.

Dnw.Base.Data.SqlServer.dll

Contiene una serie di helper per lavorare con SqlServer.

Dnw.Base.Services.dll

Contiene una serie di helper e classi per controllare un servizio windows, e avviarlo o fermarlo quando necessario.

Dnw.Base.Wpf.dll

Contiene una serie di User Control, Windows, Components, Converters, Stili, ed alcune Entities e Collection utilizzabili in tutte le applicazioni WPF.

Dnw.Crypto.dll

Contiene una serie di helper per la crittografia e de-crittografia dei dati.

Dnw.UI.Settings.dll

Contiene gli user control e le Windows, oltre a tutte le classi accessorie, per permetterci di generare un interfaccia per raccogliere i parametri applicativi e i parametri utente per la configurazione della nostra applicazione.

Dnw.UI.Sqlserver.dll

Contiene una serie di user control, e windows per permettere di generare e memorizzare in modo sicuro, i dati di connessione a SQL Server.

Il progetto NugetLibs

Alcune delle librerie, utilizzano la serializzazione JSON, per cui la libreria standard .Net è quella del progetto JSON.net (Newtonsoft.json.dll) altre utilizzano alcuni dei controlli del WPF Toolkit di XCeed (il vecchio WPF Toolkit Extended) nella versione gratuita di community, per questo, per standardizzarne l’uso, abbiamo fatto le seguenti cose:

  1. Abbiamo aggiunto JSON.Net alle librerie di terze parti utilizzabili, nel progetto NugetLibs (che si trova spiegato per esteso in questo post).
  2. Abbiamo referenziato la libreria Newtonsoft.json.dll dalla cartella C:\Dotnetwork dove viene copiata dopo la compilazione in automatico.
  3. Abbiamo referenziato anche le librerie dei controlli Xceed.Wpf.Toolkit.dll dalla stessa cartella dove il progetto NugetLibs la copia.

Per riutilizzare le librerie di questa soluzione in tutti i nostri progetti senza dover per forza includere i progetti nella solution, ognuno dei progetti ha un PostBuild Event, in cui viene eseguita la copia (possiamo chiamarla anche pubblicazione) della Dll prodotta sulla cartella  C:\Dotnetwork; in questo modo, possiamo referenziare le .dll dalla cartella comune e utilizzarle in modo molto semplice, e con semplicità tenere aggiornati i nostri progetti quando correggiamo errori o implementiamo nuove funzionalità nelle nostre dll di uso comune perché dopo aver compilato le librerie, basterà ricompilare i progetti e saranno aggiornate alla versione più recente.

Il progetto al link seguente contiene le librerie compilate per il framework 4.5.2.

Il progetto al link seguente contiene la nostra libreria NugetLibs, una libreria “Falsa” che serve solo per referenziare e compilare le librerie di terze parti e copiarle sulla cartella C:\Dotnetwork alcune di queste librerie sono usate dai progetti della libreria di uso comune.

Se ci sono domande, difficoltà, problemi di compilazione e installazione, usate il link alla form di contatto e vi risponderò.