Sugerir traducción
 
Otros han sugerido:

progress indicator
No hay más sugerencias.
Califique este contenido
Contraer todo/Expandir todo Contraer todo
Ver contenido:  en paraleloVer contenido: en paralelo
ASP.NET MVC Overview

The Model-View-Controller (MVC) architectural pattern separates an application into three main components: the model, the view, and the controller. The ASP.NET MVC framework provides an alternative to the ASP.NET Web Forms pattern for creating Web applications. The ASP.NET MVC framework is a lightweight, highly testable presentation framework that (as with Web Forms-based applications) is integrated with existing ASP.NET features, such as master pages and membership-based authentication. The MVC framework is defined in the System.Web.Mvc assembly.

MVC design pattern

Model View Controller design pattern

MVC is a standard design pattern that many developers are familiar with. Some types of Web applications will benefit from the MVC framework. Others will continue to use the traditional ASP.NET application pattern that is based on Web Forms and postbacks. Other types of Web applications will combine the two approaches; neither approach excludes the other.

The MVC framework includes the following components:

  • Models. Model objects are the parts of the application that implement the logic for the application's data domain. Often, model objects retrieve and store model state in a database. For example, a Product object might retrieve information from a database, operate on it, and then write updated information back to a Products table in a SQL Server database.

    In small applications, the model is often a conceptual separation instead of a physical one. For example, if the application only reads a dataset and sends it to the view, the application does not have a physical model layer and associated classes. In that case, the dataset takes on the role of a model object.

  • Views. Views are the components that display the application's user interface (UI). Typically, this UI is created from the model data. An example would be an edit view of a Products table that displays text boxes, drop-down lists, and check boxes based on the current state of a Product object.

  • Controllers. Controllers are the components that handle user interaction, work with the model, and ultimately select a view to render that displays UI. In an MVC application, the view only displays information; the controller handles and responds to user input and interaction. For example, the controller handles query-string values, and passes these values to the model, which in turn might use these values to query the database.

The MVC pattern helps you create applications that separate the different aspects of the application (input logic, business logic, and UI logic), while providing a loose coupling between these elements. The pattern specifies where each kind of logic should be located in the application. The UI logic belongs in the view. Input logic belongs in the controller. Business logic belongs in the model. This separation helps you manage complexity when you build an application, because it enables you to focus on one aspect of the implementation at a time. For example, you can focus on the view without depending on the business logic.

The loose coupling between the three main components of an MVC application also promotes parallel development. For example, one developer can work on the view, a second developer can work on the controller logic, and a third developer can focus on the business logic in the model.

In addition to managing complexity, the MVC pattern makes it easier to test applications than it is to test a Web Forms-based ASP.NET Web application. For example, in a Web Forms-based ASP.NET Web application, a single class is used both to display output and to respond to user input. Writing automated tests for Web Forms-based ASP.NET applications can be complex, because to test an individual page, you must instantiate the page class, all its child controls, and additional dependent classes in the application. Because so many classes are instantiated to run the page, it can be hard to write tests that focus exclusively on individual parts of the application. Tests for Web Forms-based ASP.NET applications can therefore be more difficult to implement than tests in an MVC application. Moreover, tests in a Web Forms-based ASP.NET application require a Web server. The MVC framework decouples the components and makes heavy use of interfaces, which makes it possible to test individual components in isolation from the rest of the framework.

You must consider carefully whether to implement a Web application by using either the ASP.NET MVC framework or the ASP.NET Web Forms model. The MVC framework does not replace the Web Forms model; you can use either framework for Web applications. (If you have existing Web Forms-based applications, these continue to work exactly as they always have.)

Before you decide to use the MVC framework or the Web Forms model for a specific Web site, weigh the advantages of each approach.

Advantages of an MVC-Based Web Application

The ASP.NET MVC framework offers the following advantages:

  • It makes it easier to manage complexity by dividing an application into the model, the view, and the controller.

  • It does not use view state or server-based forms. This makes the MVC framework ideal for developers who want full control over the behavior of an application.

  • It uses a Front Controller pattern that processes Web application requests through a single controller. This enables you to design an application that supports a rich routing infrastructure. For more information, see Front Controller.

  • It provides better support for test-driven development (TDD).

  • It works well for Web applications that are supported by large teams of developers and for Web designers who need a high degree of control over the application behavior.

Advantages of a Web Forms-Based Web Application

The Web Forms-based framework offers the following advantages:

  • It supports an event model that preserves state over HTTP, which benefits line-of-business Web application development. The Web Forms-based application provides dozens of events that are supported in hundreds of server controls.

  • It uses a Page Controller pattern that adds functionality to individual pages. For more information, see Page Controller.

  • It uses view state on server-based forms, which can make managing state information easier.

  • It works well for small teams of Web developers and designers who want to take advantage of the large number of components available for rapid application development.

  • In general, it is less complex for application development, because the components (the Page class, controls, and so on) are tightly integrated and usually require less code than the MVC model.

The ASP.NET MVC framework provides the following features:

  • Separation of application tasks (input logic, business logic, and UI logic), testability, and test-driven development (TDD). All core contracts in the MVC framework are interface-based and can be tested by using mock objects, which are simulated objects that imitate the behavior of actual objects in the application. You can unit-test the application without having to run the controllers in an ASP.NET process, which makes unit testing fast and flexible. You can use any unit-testing framework that is compatible with the .NET Framework.

  • An extensible and pluggable framework. The components of the ASP.NET MVC framework are designed so that they can be easily replaced or customized. You can plug in your own view engine, URL routing policy, action-method parameter serialization, and other components. The ASP.NET MVC framework also supports the use of Dependency Injection (DI) and Inversion of Control (IOC) container models. DI enables you to inject objects into a class, instead of relying on the class to create the object itself. IOC specifies that if an object requires another object, the first objects should get the second object from an outside source such as a configuration file. This makes testing easier.

  • Extensive support for ASP.NET routing, which is a powerful URL-mapping component that lets you build applications that have comprehensible and searchable URLs. URLs do not have to include file-name extensions, and are designed to support URL naming patterns that work well for search engine optimization (SEO) and representational state transfer (REST) addressing.

  • Support for using the markup in existing ASP.NET page (.aspx files), user control (.ascx files), and master page (.master files) markup files as view templates. You can use existing ASP.NET features with the ASP.NET MVC framework, such as nested master pages, in-line expressions (<%= %>), declarative server controls, templates, data-binding, localization, and so on.

  • Support for existing ASP.NET features. ASP.NET MVC lets you use features such as forms authentication and Windows authentication, URL authorization, membership and roles, output and data caching, session and profile state management, health monitoring, the configuration system, and the provider architecture.

Title

Description

MVC Framework and Application Structure

Explains the framework and organization of an MVC application.

Understanding the MVC Application Execution Process

Explains how an MVC application operates.

Walkthrough: Creating a Basic MVC Project with Unit Tests in Visual Studio

Demonstrates how to create a basic MVC application, add controllers, add views, and add unit tests.

Compatibility of ASP.NET Web Forms and ASP.NET MVC

Explains how ASP.NET MVC differs from ASP.NET Web Forms.

Información general sobre MVC en ASP.NET

El modelo de arquitectura Model-View-Controller (MVC) separa una aplicación en tres componentes principales: el modelo, la vista y el controlador. El marco de ASP.NET MVC proporciona una alternativa al modelo de formularios Web Forms de ASP.NET para crear aplicaciones web. El marco de ASP.NET MVC es un marco de presentación de poca complejidad y fácil de comprobar que (como las aplicaciones basadas en formularios Web Forms) se integra con las características de ASP.NET existentes, como páginas maestras y la autenticación basada en pertenencia. El marco de MVC se define en el ensamblado System.Web.Mvc.

Modelo de diseño de MVC

Modelo de diseño Model-View-Controller (MVC)

MVC es un modelo de diseño estándar con el que están familiarizados muchos desarrolladores. Algunos tipos de aplicaciones web salen beneficiadas con el marco de MVC. Otras seguirán utilizando el modelo de la aplicación ASP.NET tradicional que está basado en formularios Web Forms y postbacks. Otros tipos de aplicaciones web combinarán las dos estrategias; una no excluye a la otra.

El marco de MVC incluye los componentes siguientes:

  • Modelos. Los objetos de 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 de modelo recuperan y almacenan el estado del modelo en una base de datos. Por ejemplo, un objeto Product podría recuperar información de una base de datos, trabajar con ella y, a continuación, escribir la información actualizada en una tabla Productos de una base de datos de 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 un nivel de modelo físico y las clases asociadas. En ese caso, el conjunto de datos asume el rol de un objeto de modelo.

  • Vistas. Las vistas son los componentes que muestra la interfaz de usuario de la aplicación. Normalmente, esta interfaz de usuario se crea a partir de los datos de 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 Product.

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

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

El acoplamiento vago 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 desarrollador puede ocuparse de la lógica del controlador y un tercero se puede centrar en la lógica comercial del modelo.

Además de administrar la complejidad, el modelo de MVC hace que sea más fácil probar las aplicaciones que probar una aplicación web ASP.NET basada en formularios Web Forms. Por ejemplo, en una aplicación web ASP.NET basada en formularios Web Forms, se utiliza una clase única para mostrar la salida y para responder a los datos proporcionados por el usuario. Escribir pruebas automatizadas para las aplicaciones ASP.NET basadas en formularios Web Forms puede ser complejo, porque 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. Las pruebas para las aplicaciones ASP.NET basadas en formularios Web Forms pueden ser por consiguiente 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 formularios Web Forms requieren un servidor web. El marco de MVC desacopla los componentes y hace un uso intensivo de las interfaces, lo cual hace posible probar los componentes individuales aislados del resto del marco.

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

Antes de decidir utilizar el marco de MVC o el modelo de formularios Web Forms para un sitio web concreto, sopese las ventajas de cada enfoque.

Ventajas de una aplicación web basada en MVC

El marco de 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 utiliza el estado de vista ni formularios basados en servidor. Esto hace el marco de MVC sea ideal para los desarrolladores que deseen un control completo sobre el comportamiento de una aplicación.

  • Utiliza un modelo Controlador frontal que procesa las solicitudes de la aplicación web a través de un controlador único. Esto permite diseñar una aplicación que admite una infraestructura de enrutamiento avanzada. Para obtener más información, vea Front Controller.

  • Proporciona una mayor compatibilidad con el desarrollo basado en pruebas (TDD).

  • Funciona bien para las aplicaciones web en las que trabajan equipos grandes de desarrolladores y para los diseñadores web que necesitan un alto grado de control sobre el comportamiento de la aplicación.

Ventajas de una aplicación web basada en formularios 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 cual favorece al 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 Controlador de página que agrega funcionalidad a las páginas individuales. Para obtener más información, vea Page Controller.

  • Utiliza el estado de vista de los formularios basados en servidor, lo cual puede facilitar la administración de la información de estado.

  • Funciona bien para los equipos pequeños de desarrolladores web y los 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, puesto que los componentes (la clase Page, controles, etc.) se integran estrechamente y suelen requerir menos código que el modelo de MVC.

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

  • Separación de tareas de aplicación (lógica de entrada, lógica comercial y lógica de la interfaz de usuario), facilidad para pruebas y desarrollo basado en pruebas (TDD). Todos los contratos principales del marco de MVC están basados en interfaz y se pueden probar utilizando objetos ficticios, esto es, objetos ficticios que imitan el comportamiento de 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 cual hace que las pruebas unitarias sean rápidas y flexibles. Puede utilizar cualquier marco de pruebas unitarias que sea compatible con .NET Framework.

  • Un marco extensible y conectable. Los componentes del marco de ASP.NET MVC están diseñados para que se puedan reemplazar o personalizar con facilidad. Puede conectar su propio motor de vista, directiva de enrutamiento de URL, serialización de parámetros de método y acción y otros componentes. El marco de ASP.NET MVC 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 las pruebas.

  • Amplia compatibilidad para el enrutamiento de ASP.NET, un eficaz componente de asignación de direcciones URL que le permite compilar aplicaciones que tienen direcciones URL comprensibles y que admiten búsquedas. 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)..

  • Compatibilidad para utilizar 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 utilizar las características de ASP.NET existentes con el marco de ASP.NET MVC, 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. ASP.NET MVC le permite utilizar características como autenticación de formularios y autenticación de Windows, autorización para URL, pertenencia y roles, almacenamiento en caché de resultados y datos, administración de estados de sesión y perfil, seguimiento de estado, el sistema de configuración y la arquitectura de proveedor.

Título

Descripción

Marco de MVC y estructura de aplicación

Explica el marco y la organización de una aplicación MVC.

Entender el proceso de ejecución de aplicaciones MVC

Explica cómo funciona una aplicación MVC.

Tutorial: Crear un proyecto de MVC básico con pruebas unitarias en Visual Studio

Muestra cómo crear una aplicación MVC básica, agregar controladores, agregar vistas y agregar pruebas unitarias.

Compatibilidad de los formularios Web Forms de ASP.NET y ASP.NET MVC

Explica cómo ASP.NET MVC difiere de formularios Web Forms de ASP.NET.

Contenido de la comunidad   ¿Qué es Community Content?
Agregar contenido nuevo RSS  Anotaciones
Processing
© 2012 Microsoft. Reservados todos los derechos. Temas legales | Marcas Registradas | Declaración de privacidad
Page view tracker