Controller di gestire il flusso di applicazione, in modo da dove viene la mia logica di business vanno?

StackOverflow https://stackoverflow.com/questions/371758

Domanda

Inizierò questa domanda ammettendo Sono molto nuovo a MVC. Il modello di progettazione ha senso per me ad un livello alto, ma ora che sto esplorando ASP.NET MVC, alcuni dei pezzi architettonici stanno sfidando le mie nozioni preconcette. L'apprendimento è una buona cosa.

Ho lavorato con Oxite ultimamente come strumento di apprendimento scritte da persone al società che ha creato ASP.NET MVC e, quindi, un'applicazione di riferimento apparente per ASP.NET MVC.

Ma oggi ho visto un post su Oxite da Rob Conery che dice:

  

Una delle cose che il team Oxite   ha deciso di fare è stato quello di separare la   Controller e viste in un altro   Progetto per quello che posso solo supporre è   la separazione della logica di business dalla   vista logica. Questo può portare a qualche   confusione in quanto controllori sono destinati   per gestire il flusso di applicazione - non   necessariamente la logica di business.

Questo mi ha gettato per un ciclo. È questo un principio di separazione di MVC e quindi un errore da parte degli sviluppatori Oxite, o è l'opinione di Rob? Se la logica di business appartiene nel modello, perché il team di Oxite metterlo nel controllore? Come faccio a eseguire un'azione che è logica di business, se non nel controllore?

Oltre a ciò, sto facendo un errore utilizzando Oxite come punto di riferimento di apprendimento considerando commenti come Rob?

È stato utile?

Soluzione

la logica di business va nel vostro livello di business. I controllori usano lo strato di business per creare un modello per le vostre opinioni al rendering. Un buon esempio è l'applicazione MVC Storefront che Rob Conery ha prodotto. Oxite sta attualmente ricevendo un sacco di cattiva stampa in quanto apparentemente non fa buon uso del framework MVC.

La ragione per cui si desidera un livello di business che è separato dal vostro controller è si consiglia di riutilizzare lo strato di business attraverso più controller, o anche le applicazioni multiple. Un esempio di questo sarebbe normali funzioni utente per la visualizzazione dei dati, e funzione amministrativa per l'aggiornamento e l'aggiunta di dati. Si può fare uso degli stessi componenti BL in entrambi i casi, ma hanno diversi controllori e punti di vista per rendere ai dati. oggetti del modello sarebbe la stessa.

Altri suggerimenti

Si potrebbe implementare il livello di business (vale a dire il modello) con le entità, aggregati, depositi e servizi. I servizi di call repository, che tirano i dati dal vostro DAL sotto forma di entità.

Questo può essere impostato in un unico progetto, separato che non è altro che una DLL.

Quindi, avere il vostro MVC App, che è in realtà la parte di presentazione, e lo hanno utilizzare il vostro progetto livello di business. i controllori lavoreranno con i tuoi servizi, e la pompa dei dati questi servizi generano in Viewdata che viene poi pompata in vostro punto di vista.

I regolatori dovrebbero trattare solo con le preoccupazioni di routing, come ad esempio quali viste da visualizzare, basate su input dell'utente dalle forme, querystrings, biscotti, sessioni, ecc.

c'è stato un putiferio da parte della comunità "puristi MVC" circa la validità di Oxite essere utilizzato un buon esempio MVC. La linea di fondo è, la logica di business non deve essere contenuta in controllori, che sono sicuro si vedrà come Oxite viene riscritta nel corso dei prossimi mesi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top