Funcionamiento de ASP.NET Core
Una aplicación ASP.NET Core es básicamente una aplicación .NET con un archivo Program.cs que configura las características del componente de aplicación web que necesita y la ejecuta.
El archivo Program.cs de la aplicación ASP.NET Core más básica:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();
Con el código anterior:
- Se configura una aplicación web básica ASP.NET Core que escucha las solicitudes GET de HTTP en la dirección URL raíz ("/") y responde con "Hola mundo".
- La aplicación se inicializa, configura una única ruta e inicia el servidor web.
Blazor
Puede crear una interfaz de usuario web interactiva con ASP.NET Core mediante Blazor. Blazor es un marco de interfaz de usuario web basado en componentes integrado con ASP.NET Core, que se usa para crear interfaces de usuario web interactivas mediante HTML, CSS y C#.
Un componente Blazor reutilizable, como el siguiente Counter componente, se define en un archivo Counter.razor :
@page "/counter"
@rendermode InteractiveServer
<PageTitle>Counter</PageTitle>
<h1>Counter</h1>
<p role="status">Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
Con el código anterior:
- Se crea un componente que muestra un contador.
- El bloque @code contiene la lógica del componente mediante C#, incluido un método para incrementar el contador.
- El valor del contador se muestra y se actualiza cada vez que se hace clic en el botón.
- Un enfoque de componente permite reutilizar el código en diferentes partes de la aplicación y tiene la flexibilidad de ejecutarse en el explorador o en el servidor en una aplicación Blazor.
El componente Counter se puede agregar a cualquier página web de la aplicación agregando el elemento <Counter />.
@page "/"
<PageTitle>Home</PageTitle>
<h1>Hello, world!</h1>
<Counter />
API
ASP.NET Core proporciona marcos para compilar API, servicios gRPC y aplicaciones en tiempo real con SignalR para insertar instantáneamente actualizaciones de datos en los clientes.
API mínima básica:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/hello", () => "Hello, World!");
app.Run();
Con el código anterior:
- Se configura una API mínima que escucha las solicitudes GET de HTTP en la dirección URL /hello y responde con "Hola mundo".
- El
WebApplicationBuilderse usa para configurar la aplicación. - El método
MapGetdefine una ruta y un controlador para las solicitudes GET.
Middleware
ASP.NET Core usa una canalización de componentes de middleware para controlar las solicitudes y respuestas HTTP. Este enfoque modular proporciona flexibilidad, lo que le permite personalizar y ampliar la funcionalidad de la aplicación mediante la adición o eliminación de componentes de middleware según sea necesario.
La canalización de middleware procesa las solicitudes HTTP de forma secuencial, lo que garantiza que cada componente pueda realizar su tarea designada antes de pasar la solicitud al siguiente componente de la canalización.
Agregar middleware integrado en el archivo Program.cs :
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.UseHttpsRedirection();
app.UseRouting();
app.MapStaticAssets();
app.UseAuthentication();
app.UseAuthorization();
app.MapGet("/", () => "Hello World!");
app.Run();
En el código anterior, se agregaron varios componentes comunes de middleware:
UseHttpsRedirection: Redirige las solicitudes HTTP a HTTPS.UseRouting: Permite el enrutamiento para asignar solicitudes a los puntos de conexión.MapStaticAssets: Optimiza la entrega de archivos estáticos, como HTML, CSS, JavaScript, imágenes y otros recursos.UseAuthentication: Agrega funcionalidades de autenticación.UseAuthorization: Agrega funcionalidades de autorización.app.MapGet: Se trata de un punto de conexión sencillo para demostrar que la aplicación se está ejecutando.
Inserción de dependencias
ASP.NET Core incluye compatibilidad integrada con la inserción de dependencias para configurar los servicios que usa la aplicación y sus distintos componentes de marco.
Por ejemplo, es posible que quiera configurar de forma centralizada un servicio utilizando un marco como EntityFramework Core del que dependen otras partes de su aplicación para acceder a una base de datos. Puede configurar un contexto de base de datos desde EntityFramework Core como servicio mediante la inserción de dependencias de la siguiente manera:
public class MyDbContext : DbContext
{
public MyDbContext(DbContextOptions<MyDbContext> options) : base(options) { }
public DbSet<Product> Products { get; set; } = default!;
}
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
var app = builder.Build();
app.Run();
Con el código anterior:
- Un
DbContextse configura como un servicio mediante la inserción de dependencias. - El
WebApplicationBuilderse usa para configurar la aplicación. - El método
AddDbContextregistra elDbContextcon el contenedor de inserción de dependencias. - La cadena de conexión se recupera de la configuración y se usa para configurar el contexto de la base de datos.
Configuración
ASP.NET Core admite el acceso a datos de configuración desde diversos orígenes, como archivos JSON, variables de entorno y argumentos de línea de comandos.
Configuración de una cadena de conexión en un archivo appsetting.json :
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;"
}
}
En el archivo Program.cs:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
var app = builder.Build();
app.Run();
Con el código anterior:
- La cadena de conexión se configura en el archivo appsettings.json .
- El
WebApplicationBuilderse usa para configurar la aplicación. - El método
AddDbContextregistra elDbContextcon el contenedor de inserción de dependencias. - La cadena de conexión se recupera de la configuración y se usa para configurar el contexto de la base de datos.
Supervisión y diagnóstico
ASP.NET Core proporciona un conjunto completo de herramientas para supervisar y mantener el estado y el rendimiento de las aplicaciones. Estas características se pueden agregar fácilmente a la aplicación como componentes de middleware, integrando funcionalidades específicas en el proyecto:
- Métricas integradas: ASP.NET Core incluye métricas integradas que realizan un seguimiento de varios aspectos del rendimiento de la aplicación, como las tasas de solicitud, los tiempos de respuesta y las tasas de error.
- Marco de registro flexible: se ha integrado un marco de registro flexible y admite varios proveedores de registro, como la consola, la depuración y el origen de eventos. Esto ayuda a capturar registros detallados para diagnósticos y supervisión.
- Seguimiento: ASP.NET Core admite el seguimiento distribuido, lo que le ayuda a realizar un seguimiento del flujo de solicitudes en distintos servicios y componentes. Esto es útil para diagnosticar problemas de rendimiento y comprender las interacciones entre diferentes partes de la aplicación.
- OpenTelemetry: ASP.NET Core se integra con OpenTelemetry, un marco de observabilidad de código abierto para software nativo en la nube. OpenTelemetry proporciona API estandarizadas e instrumentación para recopilar métricas, registros y seguimientos, lo que le permite supervisar y diagnosticar las aplicaciones de forma más eficaz.
- Comprobaciones de estado: la API de comprobaciones de estado permite supervisar el estado de la aplicación y sus dependencias. Puede configurar comprobaciones de mantenimiento para notificar el estado de varios componentes, como bases de datos, servicios externos, etc.
- Herramientas de diagnóstico: ASP.NET Core proporciona varias herramientas de diagnóstico, como dotnet-trace, dotnet-dump y dotnet-gcdump, que le ayudan a recopilar y analizar datos de diagnóstico de la aplicación.