Exportar (0) Imprimir
Expandir todo
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original.
Traducción
Original

Marco de MVC y estructura de aplicación

En un sitio web de ASP.NET, las direcciones URL se asignan normalmente a archivos que están almacenados en disco (normalmente archivos .aspx). Estos archivos .aspx incluyen marcado y código que se procesan para responder a la solicitud.

El marco de MVC de ASP.NET asigna las direcciones URL al código del servidor de manera diferente que una página de formularios Web Forms de ASP.NET. En lugar de asignar las direcciones URL a páginas o controladores de ASP.NET, el marco asigna las direcciones URL a las clases de controlador. Las clases de controlador controlan las solicitudes entrantes, como los datos e interacciones del usuario, y ejecuta la aplicación y la lógica de datos correspondientes en función de los datos proporcionados por el usuario. Normalmente, una clase de controlador llama a un componente de vista independiente que genera una salida HTML como respuesta.

El marco de MVC de ASP.NET separa los componentes del modelo, vista y controlador. El modelo representa la lógica de negocio o dominio de la aplicación, normalmente con los datos proporcionados por una base de datos. El controlador selecciona la vista, que representa la interfaz de usuario adecuada. De forma predeterminada, el marco de MVC de ASP.NET usa los tipos existentes de página de ASP.NET (.aspx), página maestra (.master) y control de usuario (.ascx) para la representación en el explorador. El controlador busca el método de acción adecuado en el controlador, obtiene los valores que se usarán como argumentos del método de acción y administra los errores que se pudieran producir cuando se ejecuta el método de acción. A continuación, representa la vista solicitada. De forma predeterminada, cada conjunto de componentes está en una carpeta independiente de un proyecto de aplicación web de MVC.

El marco de MVC de ASP.NET usa el motor de enrutamiento de ASP.NET, que proporciona la flexibilidad de asignar direcciones URL a las clases de controlador. Puede definir las reglas de enrutamiento que el marco de MVC de ASP.NET usará para evaluar direcciones URL entrantes y seleccionar el controlador adecuado. También puede hacer que el motor del enrutamiento analice automáticamente las variables definidas en la dirección URL, y hacer que el marco de MVC de ASP.NET pase los valores al controlador como argumentos de parámetro. Para obtener más información, vea ASP.NET Routing.

El marco de MVC de ASP.NET no usa el modelo de postback de los formularios Web Forms de ASP.NET para las interacciones con el servidor. En su lugar, todas las interacciones del usuario final se enrutan a una clase de controlador. De este modo se mantiene la separación entre la lógica de la interfaz de usuario y la lógica empresarial, y aumenta la facilidad de pruebas. Por consiguiente, el estado de vista de ASP.NET y los eventos de ciclo de vida de las páginas de formularios Web Forms de ASP.NET no se integran con las vistas basadas en MVC.

El marco de MVC de ASP.NET incluye una plantilla de proyecto de Visual Studio que ayuda a crear aplicaciones web estructuradas para admitir el modelo de MVC. Esta plantilla crea una nueva aplicación web de MVC que se configura para tener las carpetas, plantillas de elementos y entradas de archivo de configuración necesarias.

NotaNota:

Las plantillas de proyecto de MVC de aplicación web ASP.NET están basadas en la plantilla de proyecto de aplicación web ASP.NET. Para seleccionar un proyecto de MVC de ASP.NET nuevo, seleccione Nuevo proyecto en el menú Archivo en lugar de seleccionar Nuevo sitio web.

Al crear una nueva aplicación web de MVC, Visual Studio ofrece la opción de crear dos proyectos al mismo tiempo. El primer proyecto es un proyecto web donde se implementa su aplicación. El segundo proyecto es un proyecto de prueba unitaria donde puede escribir las pruebas unitarias para los componentes de MVC del primer proyecto.

NotaNota:

Microsoft Visual Studio Standard Edition y Microsoft Visual Web Developer Express Edition no permiten crear los proyectos de prueba unitaria. Por consiguiente, no ofrecen la opción de crear un proyecto de prueba al crear una aplicación de MVC.

Puede usar cualquier marco de pruebas unitarias que sea compatible con .NET Framework para probar las aplicaciones ASP.NET de MVC. Visual Studio Professional Edition incluye compatibilidad de pruebas de proyectos para MSTest. Para obtener más información sobre MSTest, vea Opciones de la línea de comandos para MSTest.exe.

Cuando se crea un proyecto de MVC de aplicación web ASP.NET, los componentes de MVC se separan en función de las carpetas de proyecto que se muestran en la ilustración siguiente:

mvc_FolderStructure

De forma predeterminada, los proyectos de MVC incluyen las carpetas siguientes:

  • App_Data, que es el almacén físico de los datos. Esta carpeta tiene el mismo rol que en los sitios web ASP.NET que usan páginas de formularios Web Forms.

  • Content, que es la ubicación recomendada para agregar los archivos de contenido, como los archivos de hoja de estilos en cascada, imágenes, etc. En general, la carpeta Content es para archivos estáticos.

  • Controllers, que es la ubicación recomendada para los controladores. El marco de MVC requiere que los nombres de todos los controladores terminen con "Controller", como HomeController, LoginController o ProductController.

  • Models, disponible para las clases que representan el modelo de aplicaciones de su aplicación web de MVC. Normalmente, esta carpeta incluye código que define los objetos y la lógica para la interacción con el almacén de datos. Normalmente, los objetos del modelo real estarán en bibliotecas de clases independientes. Sin embargo, al crear una nueva aplicación, podría colocar las clases aquí y, a continuación, moverlas a bibliotecas de clases independientes en un momento posterior del ciclo de desarrollo.

  • Scripts, que es la ubicación recomendada para los archivos de script que respaldan la aplicación. De forma predeterminada, esta carpeta contiene archivos de base AJAX de ASP.NET y la biblioteca de jQuery.

  • Views, que es la ubicación recomendada para las vistas. Las vistas usan archivos ViewPage (.aspx), ViewUserControl (.ascx) y ViewMasterPage (.master), además de otros archivos relacionados con la representación de vistas. La carpeta Views contiene una carpeta para cada controlador; el nombre de la carpeta es el prefijo del nombre del controlador. Por ejemplo, si tiene un controlador denominado HomeController, la carpeta Views contiene una carpeta denominada Home. De forma predeterminada, cuando el marco de MVC de ASP.NET carga una vista, busca un archivo ViewPage (.aspx) con el nombre de la vista solicitada en la carpeta Views\nombreControlador. De forma predeterminada, existe también una carpeta denominada Shared en la carpeta Views, que no corresponde a ningún controlador. La carpeta Shared se usa para las vistas que se comparten entre varios controladores. Por ejemplo, puede colocar la página maestra de la aplicación web en la carpeta Shared.

Además de las carpetas enumeradas anteriormente, una aplicación web de MVC usa el código del archivo Global.asax para establecer los valores predeterminados de enrutamiento global de direcciones URL, y usa el archivo Web.config para configurar la aplicación.

Las rutas se inicializan en el método Application_Start del archivo Global.asax. En el ejemplo siguiente se muestra un archivo Global.asax típico que incluye la lógica del enrutamiento predeterminado.


public class MvcApplication : System.Web.HttpApplication
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );

    }

    protected void Application_Start()
    {
        RegisterRoutes(RouteTable.Routes);
    }
}


Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft