2010-03-31 16 views
6

Quando si creano progetti ASP.NET, è necessario un certo numero di piastre, o idraulici, che spesso sono identici tra i progetti. Questo è particolarmente il caso degli approcci MVC e ALT.NET. [Sto pensando a cose come: CIO, ORM, struttura in soluzione (progetti), Session Management, Gestione utenti, I18n ecc]Visual Studio: quale approccio usi per "plumare" il modello per progetti simili?

Mi piacerebbe sapere quale approccio a trovare migliore per 'riutilizzo' questo impianto idraulico attraverso i progetti?

  • Avere un 'soluzione di master', che si duplica e rinomina in qualche modo? (In questo momento sto utilizzando questo livello, ma è piuttosto disordinato. Sarebbe interessato a come le persone lo fanno?)
  • Principalmente si basano su progetti di libreria condivisa? (Trovo appropriato per alcune cose, ma troppo restrittivo per le cose che devono essere personalizzate)
  • Strumenti di generazione del codice, come T4? (simile all'approccio utilizzato da SharpArchitecture - non l'ho provato io stesso)
  • Qualcos'altro?

Grazie per aver condiviso le tue esperienze!

risposta

1

Creo un nuovo progetto utilizzando la nuova procedura guidata di progetto in modo da ottenere GUID di progetto univoci assegnati. Quindi userei "Aggiungi elemento esistente" per copiare elementi da progetti simili se avesse senso farlo.

A volte uso uno strumento di file diff per copiare i riferimenti da un progetto a un altro, altrimenti aggiungo semplicemente i riferimenti a mano. Un file diff può anche essere usato per includere file sorgente simili, ma i file sottostanti devono essere comunque copiati, quindi preferisco "Aggiungi elemento esistente".

Ho usato T4 per generare file di soluzione e di progetto, ma quello sicuramente sembra un caso limite e non qualcosa che sarebbe normalmente necessario. In tal caso, probabilmente avrei avvolto il T4 in uno script simile a PowerShell per creare e popolare il resto della struttura di directory.

Io uso "librerie condivise" in modo abbastanza aggressivo in generale, ma non specificamente a causa di questo scenario.

In generale, non mi ritrovo a riutilizzare molto l'impianto idraulico tra i progetti. Probabilmente è più spesso che mi attacco in un progetto "prototipo", poi lo abbandono e ricostruisco il progetto da zero seguendo l'approccio sopra riportato e porto solo il codice "non-hacky".

3

Sicuramente (principalmente!) Andare per T4 templates in combinazione con una versione modificata di SubSonic 3. Uso il database per modellare il mio dominio e quindi utilizzare i modelli T4 per generare il modello e i relativi controller e viste. Ci vuole circa il 50-60% dello sforzo e mantiene una coerenza in atto.

Poi lavoro sulle sostituzioni (parziali) delle classi insieme ai filtri e ai metodi di estensione per "rendere l'app". Ora che ho familiarità con l'ambiente e quello che sto facendo, posso avere un modello di base con un buon impianto idraulico in atto in un brevissimo lasso di tempo. Ancora più importante, perché creo un set di file di classi parziali, posso rigenerare tutto ciò che voglio senza perdere la mia codifica 'personalizzata'.

funziona per me comunque :)

1

Sto creando un modello di applicazione MVC2 al numero http://erictopia.com. Conterrà tutti gli elementi di base che penso dovrebbero essere in un progetto MVC. Questi includono specifiche BDD, un ORM (NHibernate e possibilmente Lightspeed), modelli T4, fornitori personalizzati, supporto ELMAH, minifier CSS/Javascript, ecc.

+0

Grazie, seguirò i tuoi post - Buona fortuna! – UpTheCreek

2

Si potrebbe fare lo stile barbuto, con la maglietta a T, agile e creare un bel modello e metterlo in sourcecontrol. Quindi, quando hai bisogno di un nuovo progetto, fai il checkout del modello?

+0

Suona bene, ma per quanto riguarda il nome del progetto, gli spazi dei nomi ecc.? – UpTheCreek

+0

Hmm ... Mi ha dato: D Global rinomina? –

+0

Sì, sì, ma mi sembra così disordinato! Mi sembra che ci debba essere un modo "giusto" di fare ciò che non conosco. – UpTheCreek

2

Per la configurazione follemente veloce sito MVC, io uso modificato modelli T4 (creati con T4 Editor) e con un sacco di aiuto da parte Oleg Sych's blogs per la generazione della pagina (per le pagine tipiche aggiungere/modificare/index) combinato con un impressionante implementazione di un sistema automatico create-update-delete chiamato MVCCrud (se LINQ-to-SQL è il metodo di accesso ai dati preferito)

Utilizzando modelli T4 modificati e MVCCrud è possibile creare entità completamente funzionali (Crea/Modifica/Elenco/Elimina) con gestione degli errori e messaggi di errore intuitivi in ​​circa 4 minuti per ciascuno.

+0

Devo dire che i tuoi siti appariranno sorprendenti (e funzionali) con il nuovo supporto di jqGrid di MVCCrud :) bonus ... – Jimbo

+0

MVCCrud sembra interessante - ma è veramente solo Linq-2-SQL? Sarebbe uno spettacolo per me. – UpTheCreek

+0

@Sosh non è solo Linq-2-SQL, ma al momento c'è solo un repository linq-2-sql, puoi creare il tuo repository che implementa IMvcCrudRepository o mappare manualmente i tuoi delegati nel tuo controller (non ho mai provato tutto tranne Linq-2-SQL con esso ma è progettato per essere utilizzato anche da altre cose) –

Problemi correlati