2009-04-03 24 views
5

Estoy empezando con ASP.NET MVC tratando primero de comprender la filosofía. Creo que soy bastante claro sobre los roles que desempeña el controlador y la vista, pero estoy un poco confundido con la parte del modelo. Algunas fuentes dicen que es el modelo de dominio, algunos dicen que es el modelo de datos, algunos dicen que son los objetos que están vinculados a la vista.El modelo en MVC

En mi humilde opinión, estas son cosas muy diferentes. Entonces, ¿alguien puede aclarar esto de una vez?

Respuesta

9

Me gusta agregar una capa adicional para aclarar las cosas. Básicamente, el "Modelo" es lo que es específico del dominio, y sabe cómo persistir (asumiendo que la persistencia es parte del dominio).

IMO, la otra capa a la que me refería, llamo ViewModel ... a veces, el "modelo" que se pasa a la vista realmente no tiene nada que ver con el dominio ... tendrá cosas como información de validación, información de visualización del usuario, valores de la lista de búsqueda para mostrar en la vista.

Creo que es la falta de conexión que está teniendo :-)

11

El modelo es "la representación específica del dominio de la información en la que opera la aplicación". No es solo el modelo de datos, ya que es un nivel más bajo de lo que piensa el patrón MVC, pero (por ejemplo) son las clases que encapsulan los datos y le permiten realizar el procesamiento en ellos.

Scott Guthrie desde MS utiliza esta definición en his announcement:

"modelos" en una aplicación basada en MVC son los componentes de la aplicación que son responsables de mantener estado. A menudo, este estado persiste en dentro de una base de datos (por ejemplo: we puede tener una clase de Producto que es utilizada para representar datos de pedidos de la tabla Productos dentro de SQL).

Más información:

+0

me gano en Wikipedia. –

+0

Quién/Qué manipula y opera en el estado si el modelo existe solo para mantener el estado. Espero que no digas controlador o de lo contrario estaré confundido acerca de ellos también: | –

+0

"Controlador: procesa y responde a eventos (normalmente acciones de usuario) y puede invocar indirectamente cambios en el modelo." El usuario invoca una acción y eso cambiará el modelo, causando una actualización de la vista. – crb

2

Usted debe echar un vistazo a this un tutorial paso a paso.

Desde uno de los capítulos: página 26

En un marco modelo-vista-controlador el término “modelo” se refiere a los objetos que representan los datos de la aplicación, así como la lógica de dominio correspondiente que integra reglas de validación y comerciales con él. El modelo es en muchos sentidos el "corazón" de una aplicación basada en MVC, y como veremos más adelante, fundamentalmente impulsa el comportamiento de la misma.

Espero que sea útil.

0

Por ejemplo, si usted está construyendo un sitio web para, por ejemplo, gestionar las operaciones de una planta nuclear, que el modelo es el modelo de la planta, completa con propiedades para los parámetros de operación actuales (temperatura, etc.), métodos para iniciar/detener la generación de energía, etc. Mmmm ... en este caso, el modelo es realmente una proyección de una planta real frente a un modo aislado, pero usted tengo la idea.

4

Sus fuentes de consejos son correctas cuando dicen que es el modelo de dominio. En muchos casos, alineará bastante estrechamente su modelo de datos también.

Donde el dominio y los modelos de datos difieren es que el modelo de datos es relativamente estático en forma (no contenido) mientras que su modelo de dominio agrega las restricciones y reglas específicas de su dominio. Por ejemplo, en mi modelo de datos (base de datos) represento la presión arterial como smallints (sistólica y diastólica). En mi modelo de dominio , tengo un objeto "lectura de presión sanguínea" que contiene valores para cada una de las dos lecturas y que también impone restricciones adicionales en el rango de valores aceptables (por ejemplo, el rango para sistólica es mucho más pequeño que para smallints) También agrega juicios cualitativos sobre estos valores (un PA de 150/90 es "alto").

La adición de estos aspectos del dominio del problema es lo que hace que el modelo de dominio sea más que solo el modelo de datos. En algunos dominios (por ejemplo, aquellos que se representarían mejor con un modelo de datos totalmente orientado a objetos y que se correlacionan pobremente en el modelo relacional), descubrirá que los dos divergen bastante significativamente. Sin embargo, todos los sistemas que he creado presentan un alto grado de superposición. De hecho, a menudo introduzco un número considerable de restricciones de dominio en el modelo de datos mismo a través de procedimientos almacenados, tipos definidos por el usuario, etc.

Cuestiones relacionadas