2011-08-19 17 views
7

Sto ereditando un gruppo di programmi sul lavoro in cui l'autore originale utilizzava i componenti di dati di Microsoft Visual Studio (in cui un set di dati, un adattatore dati, ecc.) Creano all'interno l'ambiente di progettazione (dalla toolbox o usando le procedure guidate). Ciò produce alcune classi semi-su misura (specializzate per i dati) e inserisce il codice SQL nelle classi generate dal designer.Quali sono i pro e i contro dell'utilizzo dei componenti di progettazione di Visual Studio per i dati

Questo non è il modo in cui sono abituato a fare le cose (ho sempre preferito o non ambiguamente avere un set di dati, o creare la mia classe specializzata per contenere i dati e nascondere la complessità del livello dati sottostante).

Qualcuno ha qualche buona intuizione o collegamenti che discutono i pro ei contro dell'utilizzo di componenti di dati di Visual Studio?

(Una nota a margine, l'autore originale anche non ha commentato molto accuratamente e ha scritto, per i miei gusti, un codice un po 'troppo "intelligente" che non è facilmente interpretabile, quindi non sono propenso a pensare che lui sappia meglio di me.)

Suppongo che un altro modo di chiedere è questo: l'utilizzo dei componenti di progettazione dati genera un codice che "segue le migliori pratiche" ed è gestibile, ecc.? Non mi sembra così, ma sto cercando input da parte di esperti.

[EDIT: Aggiunto un po 'di contesto per un chiarimento di intenti]

Se ho ragione (e sembra che io sono) sull'utilizzo di componenti di design veramente di essere più adatto per prototipi, ecc, quindi sono andando a dover fare alcune conversazioni difficili con gli sviluppatori originali e il mio manager. Quindi vorrei aggiungere più enfasi a "collegamenti che discutono di pro e contro" parte della mia domanda ... Sto cercando qualcosa di sostanziale che posso usare per supportare le mie affermazioni sul fatto che questo stile di sviluppo/codice non sia il più appropriato per l'uso di produzione ... Grazie.

risposta

3

In componenti visuali generale sono per le applicazioni usa e getta, POC e applicazioni picco, vale a dire la prototipazione. Questo è per un paio di motivi; sono molto veloci per stare insieme ma un completo incubo da mantenere. Non sono sicuro delle dimensioni della tua applicazione, ma se fossi in me starei sostenendo che nella sua forma attuale il costo di proprietà aumenterà con il tempo e quindi guarderebbe a più di uno stile di sviluppo DDD. Scollegare il livello dati e sostituirlo con un solido ORM solido; NHibernate (preferito) o Entity Framework 4 (più facile da ottenere). Rilascia il "codice intelligente" e inizia a utilizzare lo Kiss, Yagni, dry mantra.Potrebbe essere difficile convincerli a vedere la luce, ma una volta che inizia costa meno che ti amerò per esso;)

Se si vuole ancora un po 'di lettura in questo sguardo zona al seguente:

  1. Skill Matter sono una struttura di formazione che esegue sessioni aperte e carichi di podcast che è possibile guardare
  2. Un buon libro sia per i Dev che per i manager da leggere è Ship IT, guarda alle buone pratiche del progetto. Come fa qualsiasi cosa sullo scaffale pragmatica
  3. Martin Fowlers' blog per tutte cosa DDD
  4. Ayende's blog è il luogo ideale per tutte le cose NHibernate
  5. stackoverflow.com, questo posto è formidabile
+0

grazie, è un buon consiglio e cose in cui ho già creduto. Per caso ho qualche riferimento che posso usare per aiutarmi quando lo faccio agli sviluppatori e dire "guarda ragazzi, questo deve cambiare ..." – Aerik

+0

le componenti del DB visivo non devono essere utilizzate in un'applicazione "reale". Tuttavia, la sostituzione di questi con un ORM sarebbe molto più complicata rispetto alla sostituzione dei componenti del DB visivo con una classe di dati che utilizza ancora DataSet/DataTable ADO.NET. La differenza qui è potenzialmente settimane di lavoro rispetto a un paio d'ore. – MusiGenesis

+0

Non è ancora così autorevole (in termini di pro e contro dell'uso di componenti di progettazione - molte buone informazioni altrimenti, grazie) come speravo, ma apprezzo tutti i feedback e i collegamenti. In realtà, le risposte stesse, provenienti da questa comunità e abbastanza coerenti, sono piuttosto avvincenti, anche senza citazioni autorevoli ... Comunque, penso che questa sia la * migliore * risposta, quindi qui premo la taglia. Grazie a tutti per il vostro contributo su questo argomento.E mi auguro buona fortuna. – Aerik

1

Lo scopo dei componenti di dati VS è lo sviluppo rapido delle applicazioni. Da questo punto di vista puoi vedere i suoi pro e contro:

pro: sviluppo veloce, non richiedono molta codifica e conoscenza. Buono per le piccole applicazioni che non verranno modificate in futuro.

cons: interruzioni logica di progettazione dell'applicazione di livello (aggiungere qui tutti i professionisti di tale progettazione) combinando tutto in un unico file. Come risultato quasi impossibile sostituire l'origine dati in modo dinamico. Rende più complicato il supporto per le applicazioni di grandi dimensioni. DI, TDD: è qualcosa di misterioso che lo usa.

In realtà è una domanda molto ampia. Mi consiglia di leggere di più su sviluppo di applicazioni N-tier e Test Driven Development

Spero che questo aiuto

+0

Grazie - Mi piace il semplice pro e contro risposta. – Aerik

0

Personalmente ritengo vi sono sicuramente sul giusta traccia, MA imho dipende davvero da cosa hai già e quali sono i piani per il futuro del prodotto.

Ho visto codice di produzione che utilizza proprio come stai parlando e funziona bene, ed è in qualche modo facilmente mantenibile. Ci sono anche alcuni grandi drop in moduli di aziende molto grandi come Telerik che rientrano nella stessa categoria di sviluppo di cui si sta parlando.

Penso che sia davvero un fattore importante per il tuo datore di lavoro: cosa puoi utilizzare per portare a termine il lavoro nel modo più efficiente. In generale, tuttavia, gli strumenti "trascina e rilascia" non sono adatti per le applicazioni a livello aziendale a lungo termine.

Ecco un articolo di Charles Petzold che potrebbe fornire maggiori informazioni sulle credenziali "esperte".

http://www.charlespetzold.com/etc/DoesVisualStudioRotTheMind.html

0

non vorrei andare anche fino al punto di dire che i componenti di design DB sono buone per POC o prototipazione. Questi componenti sono in Visual Studio principalmente come un passo di vendita per il framework, in modo che Microsoft possa dire "wow, guarda quanto è facile creare un'applicazione basata sui dati con .NET!" Dovrebbero essere stati rimossi anni fa, IMHO.

Tuttavia, non confondere i componenti del designer con ADO.NET (ovvero DataTable, DataSet, DataReaders, DataAdapters ecc.). Poiché l'app che hai ereditato è stata costruita attorno ai componenti del designer, significa che è stata anche costruita fondamentalmente attorno ai componenti ADO.NET. Puoi (e dovresti) eliminare i componenti del designer, ma non devi necessariamente eliminare ADO.NET.

Problemi correlati