2010-09-09 30 views
14

Como estoy aprendiendo y trabajando en la aplicación Asp.Net MVC, quiero saber cuál es el mejor lugar para escribir Business Logic y Data Access logic en MVC.¿Dónde escribir la lógica de base de datos y negocios en MVC?

¿Dónde debo escribir DataAccess y Business Logic entre tres capas (Model, View and Controller)?

¿Alguien podría decirme la forma correcta de escribir el código para esto?

Escenario: Quiero retrieve all the employees where employee name like 'Mi%' (tengo SQL procedure to execute and retrieve the data.)

PS: quieren saber que donde debería crear una instancia de la clase de lógica de negocios y en el que debe crear una instancia de la clase de acceso a datos capas?

Gracias de antemano.

+3

No deje de consultar a cabo el [Tutorial NerdDinner.] (Http://nerddinnerbook.s3.amazonaws.com/Intro.htm) –

+1

la salida patrón COI para crear BL y objetos DAO, Steven Sanderson en su libro Pro ASP.NET MVC Framework cubre este tema bastante bien o prueba google "asp.net mvc ioc" – kilonet

Respuesta

7

La lógica empresarial debe estar en el Modelo.

El acceso a los datos puede ser propio después de su llamada a los controladores o automatizado en un ORM que su controlador llamará a través de los repositorios.

Encontrará un recorrido que lo cubre en Nerd Dinner, busque free download section.

+0

Gracias Blu, solo quiero saber dónde debo crear instancia de la clase Business Logic y dónde Debería crear una instancia de clase de capas de acceso a datos? – nunu

+1

Las clases DAL se crearán en el controlador. Si sus clases BLL son una capa en la parte superior de su DAL, entonces el controlador las creará, y la BLL creará los componentes DAL que necesita. – blu

+2

@nunu: No piense en la lógica de negocios como "una clase de lógica de negocios", sino en lógica en sus modelos. La parte 3 del tutorial Nerd Dinner tiene algunos ejemplos básicos: http://nerddinnerbook.s3.amazonaws.com/Part3.htm – David

0

La vista es donde pone su código de interfaz.

El controlador es el lugar que conecta la vista con el modelo.

El modelo almacena la lógica comercial y posiblemente el acceso a la base de datos. (Algunas capas de ORM se pueden usar también)

10

La lógica de negocios (BL) y el acceso a datos (DAO) deben estar en capas separadas. Los modelos solo deben conservar los datos y no contener ninguna lógica. El controlador solo debe recibir datos de la vista y enviarlos a la capa BL (o enviarlos desde BL para verlos).
No es una regla estricta, pero el enfoque utilizado más recientemente

+2

¡Exactamente! MVC! = Desarrollo de 3 niveles. MVC es el nivel de UI solamente. La lógica empresarial y el acceso a db deberían ir a otro lugar. – Ryan

+0

@Ryan Me cuesta tanto decirle a la gente esto ... – RSinohara

0

Puede omitir el pensamiento de tres niveles por completo y optar por otra forma de pensar;

Actas del usuario; que envía Comando o Evento al Servicio en segundo plano. Servicio en segundo plano que puede ejecutar en proceso, para empezar. Servicio en segundo plano publica eventos, nuevamente, en la memoria. Crea varias vistas que suscriben el evento desde el servicio en segundo plano. Cada Vista tiene un Evento 'visto por última vez'; es un número entero. Cada Start lee todos los eventos posteriores del "registro global".

Las vistas son desechables, porque tiene un registro global de Evento/Comando desde la GUI y desde el Servicio en segundo plano, y de todos modos, leerán todos los eventos perdidos cuando inicie.

Esto es el equivalente a "hacer algo y espero ver ese 'cambio' en esta otra vista". También tiene:

Una interacción es cuando tiene un evento único o múltiple de la GUI o del servicio en segundo plano y permite que algún actor, muy probablemente un Saga, realice alguna acción, posiblemente con compensaciones basadas en otros eventos, si el acción fallida

Además, puedo recomendar accedido al this presentation

Cuestiones relacionadas