Información general sobre ASP.NET MVC

de Microsoft

Obtenga información sobre las diferencias entre la aplicación MVC de ASP.NET y las aplicaciones de ASP.NET Web Forms. Aprenda a decidir cuándo compilar una aplicación de MVC de ASP.NET.

El patrón arquitectónico de Modelo-Vista-Controlador (MVC) separa una aplicación en tres componentes principales: el modelo, la vista y el controlador. El marco de MVC de ASP.NET proporciona una alternativa al patrón de ASP.NET Web Forms para crear aplicaciones web basadas en MVC. El marco de ASP.NET MVC es un marco de presentación ligero y muy fácil de probar que (como las aplicaciones basadas en Web Forms) se integra con las características de ASP.NET existentes, tales como páginas maestras y la autenticación basada en pertenencia. El marco de MVC se define en el espacio de nombres de System.Web.Mvc y es una parte admitida fundamental del espacio de nombres de System.Web.

MVC es un modelo de diseño estándar muchos desarrolladores conocen. Algunos tipos de aplicaciones web saldrán beneficiadas del marco de MVC. Otros seguirán usando el patrón de aplicaciones tradicional de ASP.NET, que se basa en Web Forms y postbacks. Otros tipos de aplicaciones web combinarán los dos enfoques; ya que uno no excluye al otro.

El marco de MVC incluye los siguientes componentes:

Invoking a controller action that expects a parameter value

Figura 01: Invocar una acción de controlador que espera un valor de parámetro (haga clic para ver la imagen a tamaño completo)

  • Modelos. Los objetos modelo son las partes de la aplicación que implementan la lógica del dominio de datos de la aplicación. A menudo, los objetos modelo recuperan y almacenan el estado del modelo en una base de datos. Por ejemplo, un objeto Producto podría recuperar información de una base de datos, operar en ella y, después, escribir la información actualizada en una tabla Productos en SQL Server.

En las aplicaciones pequeñas, el modelo es a menudo una separación conceptual, en lugar de física. Por ejemplo, si la aplicación solo lee un conjunto de datos y lo envía a la vista, la aplicación no tiene una capa de modelo física ni las clases asociadas. En ese caso, el conjunto de datos asume el rol de un objeto modelo.

  • Vistas. Las vistas son los componentes que muestra la interfaz de usuario (IU) de la aplicación. Normalmente, esta interfaz de usuario se crea a partir de los datos del modelo. Un ejemplo sería una vista de edición de una tabla Productos que muestra cuadros de texto, listas desplegables y casillas basándose en el estado actual de un objeto Productos.

  • Controladores. Los controladores son los componentes que controlan la interacción del usuario, trabajan con el modelo y, en último término, seleccionan una vista para representar la interfaz de usuario. En una aplicación de MVC, la vista solo muestra información; el controlador controla y responde a la interacción y los datos que introducen los usuarios. Por ejemplo, el controlador administra los valores de la cadena de consulta y pasa estos valores al modelo, que a su vez los usa para consultar la base de datos.

El patrón de MVC le ayuda a crear aplicaciones que separan los diferentes aspectos de la aplicación (lógica de entrada, lógica empresarial y lógica de la interfaz de usuario), a la vez que proporciona un acoplamiento vago entre estos elementos. El patrón especifica en qué lugar de la aplicación se debería encontrar cada tipo de lógica. La lógica de la interfaz de usuario pertenece a la vista. La lógica de entrada pertenece al controlador. La lógica de negocios pertenece al modelo. Esta separación le ayuda a administrar la complejidad cuando se compila una aplicación, ya que le permite centrarse en un único aspecto de la implementación en cada momento. Por ejemplo, se puede centrar en la vista sin estar condicionado por la lógica empresarial.

Además de administrar la complejidad, el patrón de MVC hace que sea más fácil probar las aplicaciones que probar una aplicación web ASP.NET basada en Web Forms. Por ejemplo, en una aplicación web ASP.NET basada en Web Forms, se usa una clase única tanto para mostrar la salida como para responder a la entrada del usuario. La escritura de pruebas automatizadas para aplicaciones ASP.NET basadas en Web Forms puede ser una operación compleja, ya que para probar una página individual se deben crear instancias de la clase de página, todos sus controles secundarios y las clases dependientes adicionales de la aplicación. Dado que se crean instancias de tantas clases para ejecutar la página, puede ser difícil escribir pruebas que se centren exclusivamente en partes individuales de la aplicación. Por consiguiente, las pruebas para las aplicaciones ASP.NET basadas en Web Forms pueden ser más difíciles de implementar que las pruebas de una aplicación MVC. Es más, las pruebas en una aplicación ASP.NET basada en Web Forms requieren un servidor web. El marco de MVC desacopla los componentes y hace un uso intensivo de las interfaces, lo que permite probar los componentes individuales aislados del resto del marco.

El acoplamiento flexible entre los tres componentes principales de una aplicación MVC también favorece el desarrollo paralelo. Por ejemplo, un desarrollador de software puede trabajar en la vista, un segundo puede ocuparse de la lógica del controlador y un tercero se puede centrar en la lógica empresarial del modelo.

Decidir cuándo se crea una aplicación de MVC

Debe considerar cuidadosamente si desea implementar una aplicación web mediante el marco de MVC de ASP.NET o el modelo de Web Forms de ASP.NET. El marco de MVC no reemplaza el modelo de Web Forms; puede usar cualquiera de los dos marcos para las aplicaciones web (si ya tiene aplicaciones basadas en Web Forms, estas seguirán funcionando exactamente igual que siempre).

Antes de decidir usar el marco de MVC o el modelo Web Forms para un sitio web concreto, sopese las ventajas de cada método.

Ventajas de una aplicación web basada en MVC

El marco ASP.NET MVC ofrece las ventajas siguientes:

  • Facilita la administración de la complejidad, al dividir una aplicación en el modelo, la vista y el controlador.
  • No usa el estado de vista ni formularios basados en servidor. Esto hace que el marco de MVC sea ideal para los desarrolladores que deseen un control completo sobre el comportamiento de una aplicación.
  • Usa un modelo de controlador frontal que procesa las solicitudes de la aplicación web mediante un controlador único. Esto permite diseñar una aplicación que admite una infraestructura de enrutamiento avanzada. Para más información, consulte Controlador frontal.
  • Proporciona una mayor compatibilidad con el desarrollo controlado por pruebas (TDD).
  • Funciona bien para las aplicaciones web en las que trabajan equipos grandes de desarrolladores y para diseñadores web que necesiten un alto grado de control sobre el comportamiento de la aplicación.

Ventajas de una aplicación web basada en Web Forms

El marco basado en formularios Web Forms ofrece las ventajas siguientes:

  • Admite un modelo de eventos que conserva el estado sobre HTTP, lo que favorece el desarrollo de la aplicación web de línea de negocio. La aplicación basada en formularios Web Forms proporciona docenas de eventos que se admiten en centenares de controles de servidor.
  • Utiliza un modelo de controlador de página que agrega funcionalidad a las páginas individuales. Para más información, consulte Controlador de página.
  • Usa el estado de vista de los formularios basados en servidor, lo que puede facilitar la administración de la información de estado.
  • Funciona bien para equipos pequeños de desarrolladores web y diseñadores que deseen aprovechar el gran número de componentes disponible para el desarrollo rápido de aplicaciones.
  • En general, es menos complejo para el desarrollo de aplicaciones, ya que los componentes (la clase Page, controles, etc.) se integran estrechamente y suelen requerir menos código que el modelo de MVC.

Características del marco de MVC de ASP.NET

El marco de MVC de ASP.NET ofrece las siguientes características:

  • Separación de tareas de aplicación (lógica de entrada, lógica empresarial y lógica de la interfaz de usuario), facilidad para pruebas y desarrollo basado en pruebas (TDD) de forma predeterminada. Todos los contratos principales del marco de MVC se basan en interfaz y se pueden probar mediante objetos ficticios, que son objetos simulados que imitan el comportamiento de los objetos reales en la aplicación. Puede hacer una prueba unitaria de la aplicación sin tener que ejecutar los controladores en un proceso de ASP.NET, lo que hace que las pruebas unitarias sean rápidas y flexibles. Puede usar cualquier marco de pruebas unitarias compatible con .NET Framework.
  • Un marco extensible y conectable. Los componentes del marco de MVC de ASP.NET están diseñados para que se puedan reemplazar o personalizar con facilidad. Puede conectar su propio motor de vista, directiva de enrutamiento de direcciones URL, serialización de parámetros de método y acción, y otros componentes. El marco de MVC de ASP.NET también admite el uso de los modelos de contenedor Inyección de dependencia (DI) e Inversión de control (IOC). DI permite insertar objetos en una clase, en lugar de depender de que la clase cree el propio objeto. IOC especifica que si un objeto requiere otro objeto, el primer objeto debe obtener el segundo objeto de un origen externo como un archivo de configuración. Esto facilita la realización de pruebas.
  • Un eficaz componente de asignación de direcciones URL que permite compilar aplicaciones que tienen direcciones URL comprensibles y en las que se pueden buscar. Las direcciones URL no tienen que incluir las extensiones de los nombres de archivo y están diseñadas para admitir patrones de nombres de direcciones URL que funcionan bien para la optimización del motor de búsqueda (SEO) y el direccionamiento de transferencia de estado representacional (REST, Representational State Transfer).
  • Soporte técnico para usar el marcado en archivos de marcado de páginas de ASP.NET existentes (archivos .aspx), de controles de usuario (archivos .ascx) y de páginas maestras (archivos .master) como plantillas de vista. Puede usar las características de ASP.NET existentes con el marco de ASP.NET MVC, tales como páginas maestras anidadas, expresiones en línea (<%= %>), controles de servidor declarativos, plantillas, enlace de datos, localización, etc.
  • Compatibilidad con las características de ASP.NET existentes. MVC de ASP.NET permite usar características, tales como la autenticación mediante formularios y la autenticación de Windows, la autorización para direcciones URL, la pertenencia y los roles, el almacenamiento en caché de resultados y datos, la administración de estados de sesión y perfil, el seguimiento de estado, el sistema de configuración y la arquitectura de proveedor.