C#, Dataset e stile di programmazione

martedì 11 marzo 2008 - 18.03

cbiacca Profilo | Newbie

ciao a tutti,
mi sono da poco avvicinato al mondo di .net ed ho un dubbio colossale ...

sto cercando di stare nel "seminato" microsoft, nel senso che sto cercando di sfruttare al massimo gli strumenti che MS mette a disposizione. In tal senso, ho creato una serie di dataset tramite visual studio, funziona tutto correttamente per cui la mia sarà, più che altro, una domanda legata allo stile di programmazione in ambiente .NET.

Ho notato che visual studio definisce tutti i dataset ed i TableAdapter all'interno del file MioForm.Designer.cs ... ora io sono invece abituato a separare nettamente tutta la logica di produzione dei dati, dalla logica di visualizzazione .. per cui mi chiedevo:

a) perchè questa scelta da parte di microsoft di fare in modo che io debba scrivere tutta la logica della mia applicazione all'interno del file MioForm.cs?
b) se estraggo da MioForm.Designer.cs tutta la logica di esecuzione dei metodi Fill dei vari dataset, vado incontro a problemi giganteschi?

grazie a chiunque mi risponderà

ysdemarc Profilo | Expert

Non è vero..puoi scrivere il codice dove vuoi..puoi farti progetti di classi esterni..ecc... e nel tuo web form richiamare solo i metodi appropriati...
anzi..io è questo il modo che preferisco in modo da riciclare e riutilizzare anche da altre parti lo stesso codice
Vincenzo
Programmatore sbilenco

freeteo Profilo | Guru

>Ho notato che visual studio definisce tutti i dataset ed i TableAdapter
>all'interno del file MioForm.Designer.cs ... ora io sono invece
>abituato a separare nettamente tutta la logica di produzione
>dei dati, dalla logica di visualizzazione ..
certo fai benissimo e continua su questa strada


>a) perchè questa scelta da parte di microsoft di fare in modo
>che io debba scrivere tutta la logica della mia applicazione
>all'interno del file MioForm.cs?
ahhhh
Il fatto di usare DataSet, è una delle cose che odio di MS, nel senso che da molta comodita' di implementazione dello strato dati sicuramente, ma spesso puo' far dimenticare la vera cosa importante, ovvero che stai risolvendo un problema, maneggiando dei dati, e applicandoci delle logiche, in 2 parole "programmazione ad oggetti" (3 parole in realta').
Percui quello che ti consiglio io, e che consiglio a tutti anche per progetti piccolini, è farsi il solito 3-layer, o anche 2 se non hai particolari pretese, cmq sia sicuramente ragionare in termini di oggetti , quindi partendo dalla definizione delle entita', ovvero cosa stai genstendo in quella particolare applicazione.


>b) se estraggo da MioForm.Designer.cs tutta la logica di esecuzione
>dei metodi Fill dei vari dataset, vado incontro a problemi giganteschi?
Subito no, ma cmq a mio avviso non usarli!
Ragiona sulla logica dell'applicazione prima sulla carta, aiutati ovviamente con qualche pezzetto di codice giusto per capire se non ci siano impedenze tecniche, ma pensa all'applicazione che stai facendo solo una rappresentazione della logica che devi implementare:
- Se sviluppi per il web avrai dei comportamenti differenti imposti dal protocollo HTML, quindi avrai delle cose da fare in piu' sui css, sulla gestione della sicurezza, dello stato etc...
- Se Sviluppi in Win32 hai sicuramente piu' vantaggi di interattivita' utente, ma l'aggiornamento, la possibilita' di centralizzare lato server alcune operazioni, saranno piu' impegnative.

Le differenze ci sono ovviamente, ma sono cmq delle rappresentazioni di una logica che hai implementato, che serve a risolvere un problema che ti sei posto, quindi il "cuore" di tutto, è come architetti l'applicazione indipendentemente da che piattaforma stai usando (se vogliamo spingerci all'estremo diciamo che anche il linguaggio dovrebbe essere una scelta secondaria...per quanto riguarda .net magari si, ma se salti di piattaforma allora proprio cosi' "secondaria" non è).

In base a queste osservazioni (mie ovviamente perche' chiunque è libero di implementarsi le app come vuole) aiutandoti con l'esperienza, sbagliando e correggendo sempre di piu' l'approccio alla programmazione, vedrai che partirai sempre con il piede giusto...chiaro che poi si puo' incampare sempre...quello è spesso inevitabile...

Queste logiche le puoi implementare bene anche in ASp.net, con ObejctDataSource dove chiami le tue classi e ti fai tornare degli oggetti, non andare dritto sul db, ti troverai meglio ad avere uno straterello tuo dove puoi tenere tutto sotto controllo.
Win32 è duale.

Poi ovvio tu sai quanto tempo puoi spenderci, quanta complessita' dare, ma questo approccio ti aiuta molto, visto che difficilmente un programma parte e resta uguale alle prime release...


>grazie a chiunque mi risponderà
di nulla, ti ho dato solo un mio parere spero ti possa essere utile.




ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5