2010-09-09 15 views
14

Mentre sto imparando e lavorando su Asp.Net MVC application, voglio sapere che qual è il posto migliore per scrivere Business Logic e Data Access logic in MVC.Dove scrivere Database e Business logic in MVC?

Dove devo scrivere DataAccess e Business Logic tra tre livelli (Model, View and Controller) ??

Qualcuno potrebbe dirmi il modo corretto di scrivere il codice per questo.

Scenario: voglio retrieve all the employees where employee name like 'Mi%' (ho SQL procedure to execute and retrieve the data.)

PS: voglio sapere che dove dovrei creare un'istanza della classe Business Logic e dove dovrei creare un'istanza di accesso ai dati di classe strati?

Grazie in anticipo.

+3

essere sicuro e verificare la [esercitazione NerdDinner.] (Http://nerddinnerbook.s3.amazonaws.com/Intro.htm) –

+1

check-out CIO modello per la creazione di BL e oggetti DAO, Steven Sanderson nel suo libro Pro ASP.NET MVC Framework copre abbastanza bene questo argomento o prova googling "asp.net mvc ioc" – kilonet

risposta

7

La logica aziendale deve essere nel modello.

L'accesso ai dati può essere successivo alla chiamata del controllore o automatizzato in un ORM che il controller invierà tramite i repository.

Un passante che copre questo può essere trovato in Nerd Dinner, cercare il free download section.

+0

Grazie Blu, voglio solo sapere dove dovrei creare l'istanza della classe Business Logic e dove Dovrei creare un'istanza della classe dei layer Accesso ai dati? – nunu

+1

Le classi DAL verranno create nel controller. Se le tue classi BLL sono un livello in cima al tuo DAL, il Controller creerà quelle invece, e il BLL creerà i componenti DAL di cui ha bisogno. – blu

+2

@nunu: Non pensare alla logica di business come a una "classe di business logic", ma invece come logica inserita nei tuoi modelli. La terza parte del tutorial di Nerd Dinner ha alcuni esempi di base: http://nerddinnerbook.s3.amazonaws.com/Part3.htm – David

0

La vista è dove si inserisce il proprio codice di interfaccia.

Il controller è il luogo che collega la vista al modello.

Il modello memorizza la business logic e possibilmente l'accesso al database. (È possibile utilizzare anche un livello ORM)

10

La logica aziendale (BL) e l'accesso ai dati (DAO) devono essere in livelli separati. I modelli dovrebbero conservare solo i dati e non contenere alcuna logica. Il controller deve solo ricevere i dati dalla vista e inviarli al livello BL (o inviare da BL per visualizzare).
Non è una regola rigida, ma l'approccio utilizzato più di recente

+2

Esattamente! MVC! = 3 livelli di sviluppo. MVC è solo il livello dell'interfaccia utente. La logica aziendale e l'accesso al db dovrebbero andare da qualche altra parte. – Ryan

+0

@Ryan Ho un momento così difficile da dire a questo ... – RSinohara

0

Si può saltare completamente il pensiero a tre livelli e cercare un altro modo di pensare;

Atti dell'utente; che invia comandi o eventi al servizio in background. Servizio in background che puoi eseguire in corso, per i principianti. Il servizio in background pubblica nuovamente gli eventi in memoria. Si creano più viste che sottoscrivono l'evento dal servizio in background. Ogni vista ha un evento "visto l'ultima volta"; è un numero intero Ogni avvio legge tutti gli eventi successivi dal "registro globale".

Le viste sono a gettare, perché si dispone di un registro globale di eventi/comandi dalla GUI e dal servizio in background e leggeranno tutti gli eventi mancati all'avvio, in ogni caso.

Questo è l'equivalente di "fare qualcosa e mi aspetto di vedere che 'cambia' in quest'altra vista". Hai anche:

Un'interazione è quando si dispone di uno o più eventi dalla GUI o dal servizio in background e si consente a qualche attore, molto probabilmente uno Saga, di eseguire un'azione, possibilmente con compensazioni basate su altri eventi, nel caso in cui azione fallita.

Inoltre, posso consigliare navigando this presentation

Problemi correlati