n° 219
Novembre 2017
Dicembre 12, 2017, 09:29:22 *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  


* Messaggi recenti
Messaggi recenti
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: SVILUPPO SW multiprogetto  (Letto 2980 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
evil86
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 2


Mostra profilo E-mail
« inserita:: Settembre 06, 2014, 09:57:36 »

Buongiorno a tutti!

dovrei sviluppare un sw in c# (windows form) per gestire alcune aree aziendali, tipo la gestione del personale, una gestione ordini etc.
Ho pensato di strutturare l'applicativo in N progetti divisi così da manutenerli, testarli e un domani da renderli autonomi.
Per non farla troppo lunga ho questo problema:
Ogni progetto ha delle form ed in queste form ci sono alcuni controlli (tipo la combo delle nazioni) in comune con altre form di altri progetti. Per caricare questi controlli avevo pensato di chiamare una query ed effettuare il binding con il datatable.
Per l'interazione con il db utilizzo una classe ad hoc referenziata in tutti i progetti.
a questa classe dovrei passare la query da eseguire sul db per avere come ritorno un dataset o un datatable.
Il mio problema è gestire il codice SQL. Non so come e dove posizionarlo/salvarlo.

Avevo pensato di aggiungere ad ogni progetto un file di configurazione/testo/classe etc dove all'interno c'è il codice in SQL.
es. query_nazioni = "SELECT id,nazione FROM nazioni where stato = 0"
quindi in ogni progetto devo salvare le query parametrizzate o non per poi usarle.

visto e considerato che molte di queste query possono essere comuni come posso gestire il codice SQL di tutti i progetti?
Spero di essere stato abbastanza chiaro

Grazie
Registrato
evil86
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 2


Mostra profilo E-mail
« Risposta #1 inserita:: Settembre 07, 2014, 04:16:56 »

grazie dell'esaustiva risposta.
Terrei la struttura HW da parte per adesso.
Ti spiego solo come ho pensato di procedere facendo un esempio
Il software ha 3 progetti
1)progetto main (menu e login)
2) progetto anagrafica
3) progetto gestione dipendenti

Ovviamente posso aggiungerne altri in un secondo momento.
A tutti i progetti è referenziata una dll per gestire l'interazione con il DB (creata da me) quindi il dialogo tra sw e DB è a carico suo. Da codice devo solo passare la query e decidere che valore mi attendo come risposta chiamando i metodi della classe db.

Il problema che ho sollevato è nato dall'esigenza di caricare le diverse combo delle form tramite binding.
Ogni form di ogni progetto ha una classe che funge da "control" (ovviamente la form è la "view")
Nel caricare la combo delle Nazioni, ho bisogno di recuperare la query e dove mettere questa query?
- in ogni progetto? (non penso sia una soluzione valida)
- creare un progetto che contenga tutte le query? (può essere una soluzione)
- creare un file di config presente nella cartella del sw (può essere una soluzione)

si accettano altre proposte derivanti da esperienze Ghigno
Registrato
DonZaucker74
Jr. Member
**

Karma: +4/-1
Scollegato Scollegato

Messaggi: 150


Mostra profilo
« Risposta #2 inserita:: Settembre 08, 2014, 10:28:37 »

Ciao,

faccio alcune considerazioni personali su quanto hai scritto. Prendile come tali, la decisione finale spetta sempre a te.

1) hai citato i termini "view" e "control", dunque immagino tu conosca il pattern MVC.
Questo pattern come ben saprai implica che ogni livello abbia il suo compito senza "invadere" il lavoro degli altri livelli. L'interfacciamento con il db, e dunque l'esecuzione delle query, si inseriscono al livello più basso (model), mentre gli altri livelli (view e control) non ne devono sapere nulla, si occupano solo di ricevere i dati o "inviarli" al livello piu in basso; non dovrebbero, in altre parole, conoscere nulla di sql.

2) hai deciso di utilizzare il binding, che però non si sposa perfettamente con MVC.
Il binding prevede che l'oggetto grafico sia direttamente collegato ad una tabella/query del database per semplificare la lettura/scrittura su di esso. Questo però è in contraddizione con MVC perchè implica che il livello view conosca le query (sql) da eseguire sul database, che sono compito del livello model. Per ovviare a questo esistono tante soluzioni, ti basti pensare che il datasource dell'oggetto grafico è di tipo "object".

3) hai deciso di utilizzare N progetti, io avrei pensato di utilizzare un progetto solo senza referenziare nulla e avrei organizzato il tutto con i namespace. Ma è una questione di gusti, ci sono pro e contro in tutte le soluzioni; è solo per mostrarti una possibile alternativa.

Tutto questo porta alla conclusione che se decidi di usare MVC allora devi "staccare" completamente i singoli livelli l'uno dall'altro. In altre parole devi definire bene quali sono i compiti del livello model (interfacciamento con il database), del livello view (interfaccia utente) e del livello control (controllore).
Strutturare bene il progetto (o i progetti) con MVC te lo rende scalabile e manutenibile.

Se hai qualche dubbio chiedi pure...

dZ

Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Copyright © 2017 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



powered by Simple Machines