2009-04-24 17 views
7

Qualcuno ha una raccomandazione per creare un'applicazione ASP.Net MVC in modo modulare? Voglio dire alcuni post di blog/tutorial ecc. Ho appena letto Hammet's MEF and ASP.NET MVC sample blogpost, ma non trovo MEF abbastanza maturo da poterlo usare ancora in produzione. Non sono stato in grado di pubblicare su Google nessun altro post pertinente su questo argomento ...asp.net mvc application howto/raccomandazioni

So che potrei ottenere la modularità implementando ControllerProvider personalizzato e alcuni meccanismi di controllo dei plug-in, ma mi piacerebbe studiare altri approcci/best practice prima di iniziare a reimplementare la ruota :)


la modularità voglio dire con questo argomento dovrebbe riguardare solo il punto di applicazione web di vista - niente altro come modello APP/servizi modulari ecc mi piacerebbe trovare il miglior metodo possibile per separare un'app Web in più assiemi che conterrà controller aggiuntivi, viste, risorse, file JS + CSS, immagini ecc. Quindi, dovrebbe esserci qualche progetto principale di app web che sembrerebbe per gli assembly di app web plug-in disponibili, caricarli, pubblicare i relativi controller, rendere disponibili le loro visualizzazioni e altre risorse e probabilmente preparare alcuni menu con la voce per ciascun modulo di app Web.

Non voglio discutere di architettura pluggable qualsiasi modello + servizi qui - solo la parte ASP.Net M VC.

+0

Sto cercando di fare qualcosa di molto simile nel prossimo futuro, finora non ho trovato nulla che faccia questo 'out of the box'. Dovrebbe tuttavia essere relativamente semplice farlo manualmente, basta iterare gli assembly nel bin e cercare gli ereditari di una determinata interfaccia. Penso che ... – roryf

risposta

3

La modularità è un concetto abbastanza ampio e penso che la risposta alla tua domanda debba essere soggettiva. Quello che stai chiedendo è una decisione architettonica, e non c'è un buon modo per farlo. A seconda del progetto, potresti avere priorità e importanza diverse delle diverse parti del sistema. Penso che il pattern MVC fornisca una separazione sufficiente delle preoccupazioni, che è in realtà lo scopo di ogni architettura modulare.

Se si desidera essere in grado di collegare facilmente nuovi moduli nell'applicazione esistente, come si definisce un modulo? Penso che dovresti limitare un po 'la domanda per ottenere risposte non vaghe e significative.

+0

hai ragione - Ho provato a modificare il post per restringere l'argomento. – Buthrakaur

0

Gli argomenti di base per modularità sono sempre le stesse ...

  • Testability
  • Maintainability
  • Semplicità di implementazione
1

Il supporto per parziale richieste di rendering controllori 3a parte è completamente supportato in MVC, dai un'occhiata a questo post: http://blog.codeville.net/2008/10/14/partial-requests-in-aspnet-mvc/

Ovviamente, un modulo in un MVC conterrà almeno un controller e una o più viste. Ma forse quello che volevi è solo il numero limitato, e quindi è molto più semplice riscrivere il controller, se si trattasse dell'architettura tradizionale di WebForm.

O forse si desidera sostituire l'origine dati, basta sovrascrivere i metodi nell'entità Modello e si è attivi e in esecuzione. È l'intero nucleo principale di MVC, che si separano i diversi livelli di logica e che si è FORZATI a farlo, a differenza di WebForms che consente comunque di eseguire SQL direttamente nella vista se si collega.

(Che supporta anche MVC non per progettazione, ma per ereditarietà.)

0

Come punto di partenza, si potrebbe prendere alcune idee da questo articolo:

Spark View Engine - Modularity

E il codice di esempio:

spark/src/Samples/Modules

Il codice è nel Spark View Engine tree (che è un progetto molto bello e potente) ma non ha molto a che fare con esso. Usa Castle per creare dipendenze e tutto il resto.

A proposito, ho fatto scherzi con MEF ma non vedo davvero i vantaggi in questo momento e le cose che dovevo fare si possono fare con Castle e alcuni strumenti (aiutanti per interrogare assiemi e cose del genere).

1

ho trovato un articolo che affronta alcuni dei requisiti fondamentali di cui parli. Sfortunatamente l'articolo era circa un anno non aggiornato, utilizzando ASP.NET MVC 3, quindi l'ho riscritto e testato la metodologia per farlo funzionare con ASP.NET MVC 4. È possibile read it here.

0

Capisco che questa domanda abbia già ricevuto risposta. Ma, ho cercato in giro per più risposte attuali su questo argomento. Ho esaminato le aree, come suggerisce la risposta originale, ma ho anche trovato i seguenti link (Part 1 e Part 2) di Liviu Ignat, che ha risposto a questa domanda da una prospettiva modulare del modulo.