Pues como ya saben el concepto de MVC es muy conocido (o al menos todos hemos escuchado de él en algún momento), para una definición mas formal los invito a leer su descripción en la wikipedia haciendo click
aquí, a continuación procedo a explicarlo (o intentar explicarlo) con mis propias palabras.
MVC: Es un patrón de diseño (principalmente web) en el que se divide la parte de Vista, Modelo y Controlador (obviamente todos lo saben). Esta "división" permite mayor flexibilidad de desarrollo, los diseñadores pueden crear las paginas, mientras los programadores desarrollan los controladores sin esperar uno del otro, independencia de componentes, puedes modificar componentes de una capa sin afectar a otras.
- Modelo: Define la parte "lógica" del sistema, contiene las clases necesarias (entidades, lógica de negocio, acceso a base de datos) para que éste funcione.
- Controlador: Es el intermediario entre el modelo la vista, se encarga de responder a las peticiones desde la vista hacia el modelo y viceversa.
- Vista: Maneja todo el aspecto visual y es con la que interactúa el usuario, en él se ingresan y se muestran la información del sistema (con ayuda del modelo).
Tomemos el ejemplo de un inicio de Sesión o Login:
Cuando el usuario ingresa a la ventana de login se muestra un formulario donde se deben ingresar el usuario y el password (Vista), al hacer clic en el botón de login se envían los datos ingresados hacia el servidor (Controlador), este validad si los datos ingresados pertenece al modelo de Login, el controlador valida que el usuario y password sean correctos accesando a Base de Datos (Modelo).
Una vez reciba una respuesta el controlador decide si enviar un mensaje de "usuario o password incorrecto" hacia la ventana de login o redireccionar hacia una ventana de bienvenida.
Existe un concepto adicional (que yo particularmente uso mucho, sobretodo en sistemas bastante complejos) llamado ViewModel, los viewmodel representan una funcionalidad específica de una entidad.
Utilizando otro ejemplo, si necesitamos un mantenimiento de usuarios, para poder representar el registro, muy probablemente sea suficiente el mismo modelo, pero que pasa si deseamos utilizar una búsqueda de usuarios en la que el filtro de búsqueda sea el rango de fecha de registro (fecha inicio y fecha fin).
Lo mas simple seria agregar 2 nuevos atributos al modelo, pero se perdería un poco el concepto de la entidad, pues los atributos de fecha de inicio y fecha fin no son realmente atributos de un usuario.
Por ello es que se utilizan los viewmodels, en este caso podemos crear un viewmodel con los atributos fecha inicio, fecha fin y una lista (array) de usuarios a mostrar en nuestra grilla de resultados, asimismo podemos agregar los atributos paginado, total de registros para cuestiones de paginado.
Espero que hayan entendido mejor los conceptos básicos de MVC, nos vemos pronto.
Seguir leyendo →