2009-05-27 12 views
5

Svilupperemo un'applicazione web di grandi dimensioni per il mercato verticale e ci stiamo orientando verso l'approccio MVC.Come strutturare, partizionare e creare applicazioni MVC di grandi dimensioni per l'implementazione in piccoli pezzi incrementali?

Avrà 1 pagina master comune a tutte le viste nell'applicazione. Il master fornirà un framework di navigazione/ricerca per l'intera applicazione che consentirà agli utenti di cercare e selezionare entità e quindi accedere a una funzione da eseguire.

Il modello di database avrà da 700 a 1000 tabelle. L'applicazione avrà centinaia di controller.

I controllori e le loro viste possono essere raggruppati in uno dei molti (20-50) sottosistemi dell'applicazione. (Stiamo esaminando un approccio alle aree per l'assistente nell'organizzazione).

Vogliamo essere in grado di fornire miglioramenti/aggiornamenti in piccoli pezzi funzionali. Queste potrebbero essere una nuova funzione, un bug fix, una funzionalità dipendente dal cliente o moduli opzionali acquistati separatamente dall'utente finale.

Abbiamo trascorso troppi anni nello sviluppo, nel supporto e nella consegna di un grande Windows vb app exe. Vorremmo fare un altro approccio.

La gestione non desidera fornire un'applicazione di grandi dimensioni. Vogliono essere in grado di consegnare piccoli pezzi incrementali quando necessario.

Potremmo voler creare un deliverable che contenga un controller e solo un paio di viste e una parte del modello.

Per recapitarlo, vogliamo copiare una DLL in una cartella bin e creare una cartella Visualizza e copiare nelle nuove viste. Il più semplice possibile!

Ho passato molti giorni a fare ricerche su questo e non ho trovato un percorso chiaro per procedere. (Tutti i tutorial e gli articoli che ho trovato presupponevano un singolo progetto.)

Come si struttura l'applicazione per realizzare questo?

Come suddividere l'applicazione in progetti/assembly separati per fare ciò?

È possibile creare un progetto di base contenente la pagina master, l'autenticazione e il routing globale, e fare quindi riferimento a ciascuno dei potenziali centinaia di altri progetti per ciascuno dei moduli?

In fase di sviluppo, fa ogni sotto-progetto deve contenere l'intero progetto base, o semplicemente la cartella condivisa di vista, il routing globale, e web.config ed un riferimento al dll progetto base?

Eventuali documenti di dettaglio che spiegano questo approccio?

Eventuali problemi di sviluppo/test?

Grazie per tutti gli input, dobbiamo farlo presto.

Aggiornamento:

seguito l'esempio qui link text

E 'un ottimo punto di partenza!

+0

Ora andrò a fare i compiti. Se qualcuno ha documenti specifici, esempi, tutorial, non esitare. Nelle ultime due settimane ho consumato M, V e C sulla mia tastiera. –

+0

SY: cosa hai fatto? –

+0

LuckyLindy - Stiamo usando le aree. Al momento funziona molto bene con MVC 2 Beta. Abbiamo un progetto Parent e ogni applicazione è un progetto figlio. La dll di ogni app secondaria viene distribuita nel contenitore principale e le viste secondarie vengono copiate manualmente nella struttura delle cartelle delle aree nel genitore. –

risposta

0

Google per MVC con MEF. C'è un esempio di uno dei team MEF che soddisferà esattamente le tue esigenze.

+0

Interessante ... dovrò verificarlo. L'URL è - http://blogs.msdn.com/hammett/archive/2009/04/23/mef-and-asp-net-mvc-sample.aspx – GuyIncognito

+0

Questo è quello. Ero sull'iPhone o lo avrei cercato su google per te. – Burt

+0

Sembra troppo bello per essere vero. Sicuramente lo guarderò. Questo significa veramente gestire fino a 500 plug-in? Grazie! –

1

Penso che questo sia esattamente il caso in cui la DLR potrebbe aiutare. I tuoi controller e visualizzazioni possono essere archiviati come script nel database. Sarà molto facile consegnare la tua applicazione come un insieme di "piccoli pezzi funzionali". Si può iniziare dalla lettura Haacked - Scripting ASP.NET MVC Views Stored In The Database

+0

Grazie. Questo può essere qualcosa da guardare, ma inizialmente sto guardando come rompere il progetto in dll. –

1

Assolutamente, suddividere il progetto in sottoprogetti/moduli contenenti i controller. È possibile utilizzare un contenitore IoC come Unity, Spring.Net o Castle Windsor per individuare i controller appropriati nei progetti figlio.

Implementare il proprio IControllerFactory per eseguire le ricerche del controller nel contenitore IoC in base al nome del controller passato ad esso. Stai cercando di mettere in atto un metodo di IControllerFactory.CreateController che sembra qualcosa di simile:

public IController CreateController(RequestContext requestContext, string controllerName) 
{ 
    return (IController)IoCContainer.GetObjectByName(controllerName); 
} 

allora si dovrebbe essere in grado di modificare semplicemente il file di configurazione IoC per definire i nuovi controllori come sono distribuiti.

+0

Grande. (Pensavo di essere un po 'sopraffatto dall'intero concetto MVC, ora mentre approfondisco ...) Altri compiti da fare, ma grazie per l'input. –

+0

No .. questo non è qualcosa da cui essere travolti. Quasi tutto in MVC è sostituibile ed estensibile. Se stai cercando di costruire un ampio sito Web MVC, avrai bisogno di scavare negli angoli del framework per aggiungere i tuoi punti di estensibilità. –

+0

+1 Questa è ovviamente la strada da percorrere per la nostra applicazione generale. L'idea iniziale era un approccio dinamico all'aggiunta di controller come fa MEF. Valuteremo i contenitori IoC per l'applicazione principale e i molti altri vantaggi che offre oltre MEF. Grazie per l'input! –

Problemi correlati