Estimados, le toca el turno a MVC, partamos por la definición:
Modelo Vista Controlador (MVC) es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos. El patrón MVC se ve frecuentemente en aplicaciones Web, donde la vista es la página HTML y el código que provee de datos dinámicos a la página. El modelo es el Sistema de Gestión de Base de Datos y la Lógica de negocio, y el controlador es el responsable de recibir los eventos de entrada desde la vista.
Ya suena bonito ¿Pero y?…
Vamos a explicarlo ahora de una manera mas didáctica:
Partamos por la raíz etimología MODELO, VISTA, CONTROLADOR:
- Modelo: Esta es la representación específica de la información con la cual el sistema opera. La lógica de datos asegura la integridad de estos y permite derivar nuevos datos; por ejemplo, no permitiendo comparar un número de unidades negativo, calculando si hoy es el cumpleaños del usuario o los totales, impuestos o los ítems del carrito de compra. Esto quiere decir que aquí se operan los datos y las reglas de negocio asociadas al sistema, los datos deben entrar de manera correcta y salir de manera perfecta para que la aplicación haga todas las maravillas que programaras.
- Vista: Este presenta el modelo en un formato adecuado para interactuar, usualmente la interfaz de usuario.
- Controlador: Este responde a eventos, usualmente acciones del usuario e invoca cambios en el modelo y probablemente en la vista.
A Continuación un pequeño diagrama.

Las desventajas:
- Tener que ceñirse a una estructura predefinida, lo que a veces puede incrementar la complejidad del sistema. Hay problemas que son más difíciles de resolver respetando el patrón MVC.
- La curva de aprendizaje para los nuevos desarrolladores se estima mayor que la de modelos más simples como Webforms.
- La distribución de componentes obliga a crear y mantener un mayor número de ficheros.
Las ventajas
- Clara separación entre interfaz, lógica de negocio y de presentación, que además provoca parte de las ventajas siguientes.
- Sencillez para crear distintas representaciones de los mismos datos.
- Facilidad para la realización de pruebas unitarias de los componentes, así como de aplicar desarrollo guiado por pruebas (TDD).
- Reutilización de los componentes.
- Simplicidad en el mantenimiento de los sistemas.
- Facilidad para desarrollar prototipos rápidos.
- Los desarrollos suelen ser más escalables.
Como pueden ver entre pro y contras termina siendo una opción bastante buena para el desarrollo de nuestras aplicaciones.
Además Microsoft con su ASP.net MVC nos facilita un montón la vida, permitiéndonos tener una aplicación con el patrón MVC implementado en pocos minutos, amigos les invito a analizar la pagina que menciono a continuación e interiorizarse en este mundo, que como saben es “Un Mundo Interesante”.

Sigueme en Twitter