2010-12-29 22 views
9

Sono uno sviluppatore ASP.NET MVC che inizia appena con il mio primo grande progetto su rotaie, ma sono confuso da dove mettere la tua logica aziendale? su ASP.NET creo una libreria che contiene servizi (Domain driven design) che gestiscono la logica di business, ho sentito dire che rail utilizza un concetto di fat skin skinny controller ma ho alcuni progetti in ASP.NET che aggiungono tutta la logica al controller creerebbe un gran casino, c'è un altro modo?Dove entra in gioco la logica di business?

+1

cosa intendi per "business logic"? – sethvargo

+0

puoi anche provare a creare moduli e inserirli nella tua directory lib – stephenmurdoch

risposta

12

Vai al concetto di FatModels e SkinnyControllers. I tuoi modelli dovrebbero sapere come si comportano e cosa dovrebbero fare.

Quando i tuoi modelli diventano troppo grassi, estraili in moduli riutilizzabili e includili nel modulo.

Si può facilmente verificare il comportamento di modelli che utilizzano RSpec (o test/unit o shoulda). Quindi puoi verificare che l'applicazione si comporti correttamente usando Cucumber.

+3

Ciao lettori futuri! Quanto sopra ha senso, ma piuttosto che continua ad ingrassare la tua modella, controlla http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/ –

+0

I trova https://github.com/orgsync/active_interaction molto promettente. –

1

È possibile inserire la business logic ovunque si desideri (anche nelle visualizzazioni! Anche se è una cattiva idea).

Direi se la logica è legata a un oggetto del mondo reale, quindi inserirla nel modello. Altrimenti, utilizzare il controller. Ma spetta a te decidere come farlo per la tua app. I modelli servono a modellare le cose e i controllori servono a controllare le cose.

5

"Business Logic" o qualcuno potrebbe chiamarlo "Dominio logico" non appartiene a nessuna parte vicino a Rails e/o al tuo progetto .NET MVC. Rails e MVC dovrebbero dipendere dal tuo dominio non viceversa. Consiglierei di leggere su Onion Architecture di Jeffery Palermo o di guardare "Architecture the Lost Years" di Robert Martin. (Penso che sia quel discorso comunque). Probabilmente ci sono più risorse di quelle, ma ti ringrazierai più tardi per aver trattato sia Rails che .NET MVC come i framework di terze parti che sono, e non la casa principale della tua applicazione.

+5

ho visto il discorso e ho sentito questa idea espressa molte volte, ma non ho mai visto un esempio concreto o una dimostrazione di come ottenere ciò. come novizio, ha senso in linea di principio, ma non posso davvero concettualizzare come portarlo in pratica. hai un esempio di app per rotaie che segue questa pratica che potrei guardare, o un articolo con un esempio più concreto? –

2

penso che questo articolo del blog offre una buona panoramica di una strategia di incorporare Domain Driven Design con nel quadro rotaie: http://www.smashingboxes.com/domain-logic-in-rails/

TL; DR

refactoring del modelli binari classici in depositi, e utilizzare un livello facciata nei controller per interagire con il modello di dominio.

Sto lottando con questo un po 'di me stesso, e quanto sembra prevalere il modello Fat Controller, qualsiasi cosa "grassa" nel software sembra essere un odore, violando una singola responsabilità.

Problemi correlati