Estructura básica de una aplicación web en ASP.NET Core

Resumen: en este artículo aprenderás los aspectos básicos de la estructura de una aplicación web en ASP.NET Core 7, incluyendo los requisitos previos necesarios para comenzar, la creación de un nuevo proyecto, la estructura de archivos y carpetas, los archivos de configuración, los controladores, las vistas, los modelos, el middleware y el enrutamiento.
Introducción
¡Hola! En este artículo vamos a explorar la estructura básica de una aplicación web en ASP.NET Core, un framework moderno y potente para el desarrollo de aplicaciones web. Veremos cómo está organizada una aplicación básica, las carpetas y archivos que la componen y cuál es su función. Si eres nuevo en ASP.NET Core, este artículo te proporcionará una buena introducción y te ayudará a entender cómo funciona una aplicación web en ASP.NET Core. ¡Empecemos!
Requisitos previos
Los requisitos previos para trabajar con ASP.NET Core incluyen:
- Un sistema operativo compatible:
ASP.NET Core
se puede ejecutar en Windows, macOS y Linux. - El SDK de .NET Core: El SDK de .NET Core es un conjunto de herramientas que se utilizan para desarrollar aplicaciones
.NET Core
. Puede descargarse de forma gratuita desde el sitio web deMicrosoft
. - Un editor de código: Para escribir y editar el código de su aplicación, necesita un editor de código. Existen varios editores de código gratuitos disponibles, como Visual Studio Code, Sublime Text y Atom.
- Conocimientos básicos de programación: Para trabajar con ASP.NET Core, es importante tener conocimientos básicos de programación, como el manejo de variables, estructuras de control de flujo y funciones.
Es recomendable tener conocimientos previos de C# y el patrón de arquitectura MVC
, ya que ASP.NET Core se basa en ambos.
Creación de un nuevo proyecto en ASP.NET Core
Para crear una nueva aplicación web en ASP.NET Core, es necesario crear un nuevo proyecto en Visual Studio o en la línea de comandos. Existen diferentes plantillas de proyecto para elegir, cada una con su propia configuración predeterminada. La elección de una plantilla dependerá del tipo de aplicación que deseas crear. Después de seleccionar la plantilla adecuada, deberás proporcionar un nombre y una ubicación para tu proyecto. Una vez que hayas configurado la plantilla, puedes personalizar aún más la aplicación agregando o eliminando componentes y paquetes específicos para satisfacer las necesidades de tu proyecto.
Estructura de archivos y carpetas
La estructura de archivos y carpetas en ASP.NET Core sigue el patrón de diseño MVC (Modelo-Vista-Controlador). La idea detrás de este patrón es separar el modelo de datos, la lógica de negocio y la presentación del usuario en componentes independientes. El siguiente es un resumen de la estructura de archivos y carpetas que se crean en un nuevo proyecto de ASP.NET Core:
appsettings.json
: Este archivo contiene la configuración de la aplicación. Puede usarse para establecer variables de entorno, configuraciones de la base de datos, entre otros.Program.cs
: Este archivo contiene el punto de entrada de la aplicación. Aquí se inicializa y configura la aplicación web, además se pueden configurar los servicios de la aplicación y los middlewares. En este archivo se puede definir la ruta de acceso a la página de inicio, la autenticación y la autorización, entre otras configuraciones importantes o se puede crear un archivo adicional llamado Startup.cs para esas configuraciones.wwwroot
: Esta carpeta contiene los archivos estáticos de la aplicación, como imágenes, hojas de estilo y archivos de scripts.Controllers
: Esta carpeta contiene los controladores de la aplicación. Los controladores son responsables de manejar las solicitudes del usuario y devolver una respuesta.Models
: Esta carpeta contiene las clases de modelo. Los modelos son responsables de definir la estructura de los datos que se utilizan en la aplicación.Views
: Esta carpeta contiene las vistas de la aplicación. Las vistas son responsables de definir la interfaz de usuario que se muestra al usuario.
En resumen, la estructura de archivos y carpetas en ASP.NET Core está diseñada para separar las diferentes responsabilidades de la aplicación en componentes independientes y fáciles de mantener. Al entender esta estructura, podrás escribir aplicaciones web escalables y fáciles de mantener en ASP.NET Core.
Archivos de configuración
En ASP.NET Core 7, la configuración de la aplicación se maneja a través de archivos de configuración. Estos archivos se utilizan para almacenar información sobre la configuración de la aplicación, como las cadenas de conexión de la base de datos, la configuración del enrutamiento y otros aspectos relacionados con la aplicación.
La configuración se divide en varios archivos, dependiendo de la configuración de la aplicación. El archivo appsettings.json es el archivo de configuración principal y contiene la configuración general de la aplicación. También es posible tener archivos de configuración adicionales para entornos específicos, como development, production, staging, etc.
La configuración se carga en el archivo Progrm.cs, se debe crear una instancia de WebApplication.CreateBuilder(args), donde se configuran los servicios y se establece la configuración de la aplicación.
Un ejemplo básico de un archivo de configuración en ASP.NET Core puede ser el siguiente:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=MiBaseDeDatos;User Id=usuario;Password=contraseña;"
}
}
En este ejemplo, se establece la configuración de registro (logging
) de la aplicación, indicando que los mensajes de nivel Warning
o superior de los espacios de nombres Microsoft
y Microsoft.Hosting.Lifetime
serán registrados en el archivo de registro. El nivel predeterminado para el resto de los mensajes es Information
. Además, se cuenta con una cadena de conexión llamada DefaultConnection
para conectarse a una base de datos SQL Server que se encuentra en el mismo servidor donde se ejecuta la aplicación web. La base de datos se llama MiBaseDeDatos
y se utiliza el usuario usuario con la contraseña contraseña.
Es importante tener en cuenta que la cadena de conexión puede variar dependiendo del tipo de base de datos y el proveedor que se esté utilizando. En este ejemplo, se utiliza el proveedor de SQL Server de .NET Core.
Este archivo de configuración es en formato JSON y se guarda en un archivo llamado appsettings.json en la raíz del proyecto.
Controladores
Los controladores son una parte fundamental de cualquier aplicación web en ASP.NET Core, ya que son los encargados de recibir las solicitudes HTTP y proporcionar las respuestas adecuadas, estos se encuentrane en la carpeta Controllers
.
En términos simples, los controladores actúan como un intermediario entre la interfaz de usuario y el modelo de datos. En ASP.NET Core, los controladores se definen como clases que derivan de la clase ControllerBase. Estas clases contienen una serie de métodos que se corresponden con las solicitudes HTTP, como GET, POST, PUT y DELETE.
Los métodos de acción se decoran con atributos que especifican la ruta de acceso y el tipo de solicitud HTTP
que se acepta. Dentro de los métodos, se puede realizar cualquier tipo de lógica de negocio, como consultar la base de datos, procesar datos o devolver vistas.
En resumen, los controladores son una parte fundamental de la estructura de una aplicación web en ASP.NET Core, y proporcionan una forma fácil y estructurada de manejar solicitudes HTTP y responder a ellas de manera adecuada.
Vistas
En ASP.NET Core, existe una carpeta Views
que almacena las vistas que se utilizarán en la aplicación. Las vistas son archivos HTML que contienen marcadores de posición especiales para mostrar datos dinámicos. Las vistas se usan para presentar información al usuario de una manera clara y organizada.
La estructura básica de una vista incluye una declaración de modelo, que especifica el tipo de objeto que se usará para mostrar datos, y etiquetas de marcador de posición que se usan para representar los datos en la vista.
En ASP.NET Core, las vistas se almacenan en la carpeta Views de la aplicación. Cada controlador puede tener su propia carpeta Views
, y las vistas se nombran de acuerdo con el nombre del método del controlador que se usará para mostrar la vista.
Por ejemplo, si tienes un método Index()
en un controlador llamado HomeController
, la vista correspondiente se llamará Index.cshtml
y se almacenará en la carpeta Views/Home
.
Además, ASP.NET Core admite la creación de vistas parciales, que son vistas que se pueden incluir en otras vistas. Las vistas parciales son útiles para la reutilización de código y la creación de componentes de interfaz de usuario que se pueden utilizar en varias partes de la aplicación.
Para crear una vista parcial en ASP.NET Core, simplemente crea un archivo de vista y agregua un guión bajo al inicio del nombre del archivo. Por ejemplo, si deseas crear una vista parcial llamada _PartialView.cshtml
, simplemente crea un archivo con ese nombre y guárdalo en la carpeta Views de la aplicación.
Luego, puedes incluir la vista parcial en otras vistas utilizando la etiqueta Partial
en la vista principal. Por ejemplo, si tienes una vista principal llamada Index.cshtml
y deseas incluir la vista parcial _PartialView.cshtml
, puedes hacerlo agregando la siguiente línea de código a Index.cshtml
:
@Html.Partial("_PartialView")
Modelos
Los modelos en ASP.NET Core son clases que representan los datos y la lógica de negocio de una aplicación y se almacenan en la carpeta Models
. Estos modelos se utilizan para almacenar y recuperar información de la base de datos y para comunicarse con la vista y el controlador.
Para crear un modelo en ASP.NET Core, se debe definir una clase con las propiedades que se desean almacenar. Por ejemplo, si se quiere almacenar información de usuarios en una base de datos, se podría crear una clase User
con propiedades como Name, Email y Password.
Luego, se debe configurar el modelo para que funcione con la base de datos. Esto se puede hacer mediante la implementación de la interfaz DbContext
y la creación de un DbSet
para el modelo. La interfaz DbContext
permite que la aplicación se comunique con la base de datos y el DbSet
permite que se realicen operaciones CRUD (create, read, update y delete) en el modelo.
Una vez que se ha creado el modelo y se ha configurado para trabajar con la base de datos, se puede utilizar en el controlador y la vista para mostrar y modificar la información en la aplicación web.
Middleware
En ASP.NET Core, el Middleware es una secuencia de componentes que procesan una solicitud HTTP
y generan una respuesta HTTP
. El Middleware se coloca entre el servidor web y la aplicación, y es responsable de realizar una tarea específica. Cada Middleware recibe una solicitud, la procesa y la envía al siguiente Middleware en la secuencia. Cuando se alcanza el final de la secuencia, el Middleware genera una respuesta HTTP.
Hay muchos Middleware disponibles en ASP.NET Core, desde la autenticación y autorización del usuario hasta la compresión de contenido y la generación de registros. También puedes crear tus propios Middleware para realizar tareas personalizadas.
Para agregar Middleware a tu aplicación, puedes utilizar el método Use. Por ejemplo, para agregar el Middleware de autenticación de usuario, puedes usar el siguiente código:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.UseAuthentication();
Este código agrega el Middleware de autenticación de usuario a la secuencia de Middleware de la aplicación. El Middleware de autenticación de usuario se encarga de autenticar al usuario antes de que se procese cualquier solicitud HTTP.
En resumen, el Middleware es una parte fundamental de cualquier aplicación web en ASP.NET Core. Es responsable de procesar las solicitudes HTTP y generar las respuestas HTTP, y hay muchos Middleware disponibles para realizar una variedad de tareas.
Enrutamiento
El enrutamiento es el proceso por el cual se determina qué código se ejecuta en respuesta a una solicitud HTTP. El enrutamiento en ASP.NET Core utiliza una combinación de la ruta URL y la clase controladora para determinar qué código se debe ejecutar.
La configuración del enrutamiento se realiza en el archivo Program.cs
. El enrutamiento se configura mediante el UseRouting middleware y UseEndpoints
. Para usar controladores llama MapControllers
para asignar controladores enrutados de atributo. La siguiente es una muestra de cómo se puede configurar el enrutamiento:
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
La línea app.MapControllerRoute()
es la que define el enrutamiento en sí. En este ejemplo, se utiliza el método MapControllerRoute()
para configurar una ruta predeterminada que apunta a la acción Index del controlador HomeController
. La ruta también incluye un parámetro opcional llamado id
.
Con esta configuración, cuando un usuario navega a la ruta /, se ejecutará el método Index()
del controlador HomeController
. Si la ruta contiene un valor para id, este valor se pasará al método Index()
como parámetro.
Conclusión
En resumen, ASP.NET Core proporciona una estructura de archivos y carpetas coherente y fácil de usar para la creación de aplicaciones web. Con los archivos de configuración, los controladores, las vistas, los modelos, los middlewares y el enrutamiento, es posible construir aplicaciones web flexibles y escalables. Además, el uso de ASP.NET Core es bastante intuitivo y se adapta a diferentes necesidades de los desarrolladores. Esperamos que este artículo haya sido útil para entender la estructura básica de una aplicación web en ASP.NET Core y haya proporcionado los conocimientos necesarios para empezar a construir su propia aplicación web.