jueves, 20 de marzo de 2014

Estructura de una aplicación ASP.NET MVC

Analizaremos la estructura de carpetas de una aplicación ASP.NET MVC.


Creamos un nuevo Proyecto: ASP.NET MVC 4 Web Application, y lo colocamos un nombre al mismo, por ejemplo: MvcAppWeb.


En el Cuadro de Diálogo seleccionamos la plantilla "Internet Application", y el Motor de Vistas "Razor". También se da la posibilidad de crear un test de prueba unitario, pero por ahora lo dejamos deshabilitado.

De esta manera se habrá creado una aplicación web, la cual ya posee un contenido predefinido, el cual se irá editando para armar la solución deseada. De todas maneras, lo importante en este punto es analizar la estructura de la aplicación ASP.NET MVC.


La estructura de carpetas es igual en toda aplicación MVC (aunque puede ser que de acuerdo a la versión del framework MVC haya carpetas que no estén en una aplicación web), esta convención de nombres y carpetas hace más fácil al desarrollador entender los proyectos MVC.

La aplicación se compone de:

  • Carpetas de Información sobre la aplicación:
    • Properties
    • References
  • Carpetas propias de la aplicación:
    • App_Data: En esta carpeta se almacenan los datos de la aplicación, generalmente bases de datos de Microsoft SQL. Por defecto, al crear la aplicación esta carpeta esta vacía.
    • App_Start: Esta carpeta contiene los archivos de código que se ejecuta, para realizar todas las configuraciones necesarias, al iniciarse la aplicación.
    • Content: Carpeta usada para contenido estático, tal como hojas de estilos CSS, iconos, imágenes, temas.
    • Controllers: Los archivos de clases de controladores se alojan en esta carpeta. MVC requiere que todos los archivos de controladores finalicen con el texto "Controller". Los Controladores son aquellas clases que reciben las peticiones HTTP desde la Aplicación y realizan las gestiones correspondientes.
    • Filters: Carpeta en la cual se ubican los archivos de filtros. Los filtros son clases que permiten incluir comportamiento antes y después de las acciones de los controladores. De esta manera se puede añadir cierta funcionalidad a los controladores evitando reescribir la misma lógica una y otra vez.
    • Images: Esta carpeta contiene imágenes usadas por la aplicación. Debe tenerse en cuenta de que imágenes se alojarán en esta ubicación, ya que si las mismas son imágenes que hacen al aspecto visual de la aplicación deben ir en la carpeta Content, ya que se trata de contenido estático. Supongamos que tenemos una aplicación que muestra la foto de los empleados, dichas fotos se almacenarían en este directorio, ya que se trata de contenido dinámico que depende de los datos de la aplicación.
    • Models: Directorio, que contiene las clases que representan el modelo de la aplicación. Los Modelos son los encargador de manipular los datos de la aplicación.
    • Scripts: En esta carpeta se almacenan todos los archivos javascript (*.js). Es decir todo el código que se ejecuta en la parte del cliente.
    • Views: Aquí se encuentran alojados los archivos de Vistas, es decir todos los archivos relacionados con la "Interface de Usuario" de la aplicación. En la carpeta de Vistas, existe una carpeta por cada controlador existente en la aplicación. También dentro de esta se encuentra la carpeta Shared, la cual posee Vistas que serán reutilizadas en otras vistas, entre ellas _Layout.cshtml la cual posee un comportamiento similar a las MasterPages de los WebForms.
  • Archivos de Configuración:
    • Global.asax: Este archivo es la clase de entrada a nuestra aplicación, a partir del método Application_Start().
    • packages.config
    • web.config: es un archivo XML que posee toda la configuración de la aplicación.