Pregunta

He estado leyendo el libro Pro ASP NET MVC Framework y estoy realmente confundido con muchas cosas. Intenté investigar un poco, pero descubrí que con tantos enfoques y conceptos diferentes que se me lanzan, solo empeora las cosas.
Entonces tengo algunas preguntas:

  1. Sé que se supone que MVC divide la funcionalidad en tres cosas principales: Modelo - > Controlador - > Ver. ¿Es el MVC un enfoque diferente al 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 de 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í establece que LINQ to SQL no será compatible en el futuro y que Microsoft lo dejará 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

¿Fue útil?

Solución

  1. MVC es principalmente un patrón para la capa de presentación, y se enfoca en la interacción entre la vista y el controlador. Se puede considerar que el modelo es el componentes de la aplicación que son responsables de mantener el estado , incluida la persistencia.

    En una aplicación simple, el modelo podría ser simplemente un modelo LINQ-to-SQL. En una aplicación empresarial de gran tamaño, 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 cómo se debe implementar la M.

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

    Eche un vistazo a Paso 3 del tutorial NerdDinner donde crean un sencillo repositorio utilizando Linq to SQL.

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

    El EF se puede usar 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 admitirá más o menos la persistencia de sus propios objetos POCO en un diseño más orientado al dominio.

Otros consejos

Sí, creo que MVC es un enfoque diferente de " el " Arquitectura de 3 niveles que creo que quiso decir aquí (la arquitectura donde crea principalmente 3 proyectos DAL, BL y UI). 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 manejar las solicitudes de los usuarios y, en la mayoría de los casos, se asocia con el "Modelo". componente 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 los repositorios?
Martin Fowler menciona la definición de un repositorio como " Media entre el dominio y los datos las capas de mapeo que utilizan una interfaz similar a una 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 que debe colocarse en su carpeta / proyecto Modelo.

¿Se dejará de utilizar Linq to SQL?
NO y el mismo libro dice que sí, también Damien Guard (desarrollador del equipo ADO.NET) mencionó en una de sus publicaciones de blog que Linq to SQL se incluirá en .NET 4.0.

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

Supongo que estás un poco confundido sobre estas cosas, y son confusas, así que repasemos lentamente.

  1. N-Tiered Architecture 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 totalmente los BLL de la interfaz de usuario; MVC aborda eso, de tal manera que haya un Controlador correspondiente hablando con su BLL y con su Vista, en lugar de que su Vista hable directamente con su BLL.

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

  3. El libro solo usa LINQ to SQL para demostrar ASP.NET MVC de la manera más rápida posible, pero NO es la única forma. Deje de pensar en LINQ to SQL por un minuto; ASP.NET MVC se puede usar 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 IU.

En cuanto a Entity Framework, Brad Abrams escribió una buena guía sobre cómo usar Entity Framework con ASP.NET MVC , eso debería cubrir su última pregunta.

HTH

  1. Sí, aún necesita crear el acceso a datos y las capas de lógica de negocios. Algunos pueden argumentar que la capa de Controlador ES la lógica de negocios, pero personalmente prefiero la separación entre la lógica de negocios real (por ejemplo, el cálculo de precios) de la lógica de negocios en pantalla (por ejemplo, el controlador de eventos para el botón "Aceptar"). Luego los llamará desde su clase Controlador. La clase de controlador controla la lógica de su pantalla y gestiona la traducción de su capa de datos / lógica empresarial al valor de la pantalla.

  2. el marco ASP.NET MVC no restringe el " Modelo " capa, lo que significa que puede usar lo que quiera, incluido NHibernate, LINQ to SQL o el marco de la entidad. Yo uso LINQ to SQL porque es simple.

  3. No estoy seguro, nunca leas 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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top