2009-06-22 21 views
11

He estado leyendo el libro Pro ASP NET MVC Framework y me estoy confundiendo con muchas cosas. He estado tratando de investigar un poco, pero estoy descubriendo que con tantos enfoques y conceptos diferentes que se me arrojan, solo empeorar las cosas.
así que tengo un par de preguntas:Necesito alguna aclaración sobre la arquitectura MVC y la arquitectura de tres niveles

  1. Sé MVC supone dividir la funcionalidad en tres cosas principales: Modelo -> Controlador -> Ver. ¿Es el MVC un enfoque diferente de la arquitectura de tres niveles? ¿O se supone que todavía estoy pensando en crear una capa de acceso a datos y una capa lógica de negocios en mi proyecto?

  2. ¿Qué son exactamente los repositorios? Es lo que actúa como mi capa de acceso a datos? ¿Dónde/Cómo encajan los repositorios en el MVC?

  3. El libro habla sobre el uso de LINQ to SQL para interactuar con la base de datos, pero aún así indica que LINQ to SQL no será compatible en el futuro y que Microsoft lo descarta para Entity Framework. ¿Dónde encaja el Entity Framework en el MVC y cómo interactúo con él?

Gracias de antemano por su ayuda!
Matt

+6

LINQ to SQL es ~ ~ NO se cayó y se establece tanto en su libro sobre Pg. 49. – mmcdole

+0

Además, en términos de diferencia entre MVC y Three-Tier, sugiero que vuelva a leer la página. 41 específicamente el último párrafo en la parte superior. – mmcdole

+0

Vi que se iba a incluir en ASP.NET 4.0, pero supuse que se estaba descartando. De acuerdo, sí, leí ese párrafo. Como dije, con todos los términos y conceptos que me han llegado a la vez me estoy confundiendo y olvidando algunas de las cosas que he leído. Gracias. – Matt

Respuesta

7
  1. MVC es principalmente un patrón para la capa de presentación, y se centra en la interacción entre la vista y el controlador. Se puede considerar que el modelo es the components of the application that are responsible for maintaining state, incluida la persistencia.

    En una aplicación simple, el modelo podría ser simplemente un modelo LINQ-To-SQL. En una aplicación empresarial grande, el modelo puede contener una capa de acceso a datos, una capa empresarial y una capa de dominio. ASP.NET MVC no lo restringe a la forma en que debería implementarse la M.

  2. El patrón Repository es una forma de implementar la parte de persistencia de M. El ActiveRecord es otro. Qué patrón elegir depende de la complejidad de la aplicación y sus preferencias.

    Eche un vistazo a Step 3 del tutorial NerdDinner donde crean un repositorio simple usando Linq a SQL.

  3. Linq to SQL no estará muerto. Microsoft aún mejorará el núcleo y agregará las solicitudes de los clientes donde tenga sentido, pero Entity Framework sería el enfoque principal. Eche un vistazo a esta publicación para LINQ to SQL changes in .NET 4.0.

    El EF se puede utilizar de forma similar a LINQ to SQL, pero también es más flexible, por lo que se puede usar de otras maneras. Por ejemplo, EF4 apoyará más o menos la persistencia de sus propios objetos POCO en un Diseño más Controlado por el Dominio.

+0

respuesta muy informativa.¡Debería poder votar esta respuesta 3 veces! – Martin

-1
  1. Si usted todavía necesita para crear acceso a los datos y las capas de lógica de negocio por sí mismo. Algunos pueden argumentar que la capa de Controlador ES la lógica comercial, pero yo personalmente prefiero la separación entre la lógica comercial real (por ejemplo, cálculo de precios) y la lógica comercial de la pantalla (por ejemplo, controlador de eventos para el botón "Aceptar"). Luego los llamará desde su clase de Controlador. La clase de controlador controla la lógica de su pantalla y gestiona la traducción desde la capa de lógica de datos/negocio hasta el valor de la pantalla.

  2. La estructura de ASP.NET MVC no impone ninguna restricción en la capa "Modelo", lo que significa que puede usar lo que desee, incluyendo NHibernate, LINQ to SQL o entidad de marco. Yo uso LINQ to SQL porque es simple.

  3. No estoy seguro, nunca leí ese libro. Acabo de descargar el proyecto Nerddinner de Scott Hanselman de codeplex y lo uso como guía para escribir sitios web ASP.NET MVC.

+0

Es todo sobre la capa de persistencia en su segundo punto, no en la capa de Modelo, podría decirse que sí. –

+0

Primero que todo lo llamo la capa "Modelo" porque esta pregunta es sobre MVC. En segundo lugar, como dije en mi punto 1, manejé "lógicas de negocios" en la capa "Modelo" también, así que NO es solo cuestión de persistencia. – oscarkuo

+0

Es muy confuso. Quiero decir, nunca escuché de esta separación "lógica de negocios de pantalla" y "lógica de negocios real". ¿Por qué simplemente decir lógica de negocios y lógica de presentación, y luego se convertiría en modelo y vista? También manejo la lógica de negocios en Model, pero ¿cómo puede incluir persistencia ?, fue mi punto. Va como una capa separada, si no una mala práctica. –

6

Sí, creo MVC es un enfoque diferente al de "la" arquitectura de 3 capas que creo que quiere decir aquí (la arquitectura donde se crea principalmente 3 proyectos DAL, BL, y la interfaz de usuario). La idea principal detrás de MVC es la separación de preocupaciones entre cada uno de sus componentes (Modelo, Vista y Controlador). El controlador es el componente responsable de gestionar las solicitudes de los usuarios y, en la mayoría de los casos, se asocia con el componente "Modelo" para mostrar la vista deseada como respuesta a la solicitud del usuario. La diferencia entre esto y la arquitectura tradicional de 3 niveles es que el DAL y el BL se agrupan ahora y se denominan Modelo y ; sí, aún necesita crear estos componentes.
¿Qué son repositorios?
Martin Fowler menciona la definición de un repositorio como "Media entre el dominio y las capas de mapeo de datos usando una interfaz tipo colección para acceder a los objetos de dominio" Los repositorios son parte de su capa de acceso a datos, no acceden a los datos por sí mismos, median entre el dominio y las entidades de mapeo de datos, y por supuesto deben colocarse en su carpeta/proyecto Modelo.

Will Linq to SQL estará en desuso?
NO y el mismo libro lo dice, también Damien Guard (un desarrollador del equipo ADO.NET) mencionó en uno de sus blogs que Linq to SQL se incluirá en .NET 4.0.

¿Cómo interactuar con EF?
Como lo haría con Linq a SQL. Al igual que Linq to SQL, Entity Framework será sus entidades de mapeo, y también residirá en el proyecto del Modelo.
Espero que esto ayude!

1

supongo que eres un poco confundido sobre estas cosas, y ellos son confuso, así que vamos a ir más despacio.

  1. N-gradas de Arquitectura y MVC son diferentes, pero entrelazados. N-Tier generalmente habla de separar el acceso a datos, la lógica de negocios y la interfaz de usuario. Sin embargo, algunas personas pueden argumentar que es imposible separar por completo los BLL de la IU; MVC se ocupa de eso, de tal manera que hay un Controlador correspondiente hablando con su BLL, y con su Vista, en lugar de tener su Vista hablar directamente con su BLL.

  2. Sí, tener repositorios es un enfoque para tener un DAL. Hay muchas maneras de hacerlo, y no debe limitarse a lo que se discute en el libro.

  3. El libro solo utiliza LINQ to SQL para demostrar ASP.NET MVC de la manera más rápida posible, pero NO es la única manera. Deja de pensar en LINQ to SQL por un minuto; ASP.NET MVC se puede usar tanto si usa un ORM como NHibernate o si usa ADO.NET + DAL Factory o lo que sea, lo que no podrá usar son esos ASP.NET ObjectDataSources que arrastra y suelta con su UI.

En cuanto a Entity Framework, Brad Abrams escribió una buena guía sobre how to use Entity Framework with ASP.NET MVC, que debe cubrir su última pregunta.

HTH

Cuestiones relacionadas