Trabalhando com Middleware em ASP.NET Core
7/3/2024, às 8:33:13

O que é Middleware?

Middleware é um componente de software que lida com solicitações HTTP e respostas em um pipeline de aplicativos ASP.NET Core. Cada middleware no pipeline pode processar solicitações e passar o controle para o próximo middleware. Eles são fundamentais para construir funcionalidades como autenticação, logging, manipulação de erros e muito mais.


Configurando Middleware em ASP.NET Core

Passo 1: Entendendo o Pipeline de Solicitações

O pipeline de solicitações em ASP.NET Core é configurado no método Configure da classe Startup. Cada chamada para app.Use ou app.Run adiciona um middleware ao pipeline.

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}


Passo 2: Criar um Middleware Personalizado

Vamos criar um middleware personalizado que registra o tempo de processamento de cada solicitação.

2.1 Definir o Middleware

Crie uma classe para o middleware personalizado.

public class RequestTimingMiddleware
{
private readonly RequestDelegate _next;

public RequestTimingMiddleware(RequestDelegate next)
{
_next = next;
}

public async Task InvokeAsync(HttpContext context)
{
var startTime = DateTime.UtcNow;

// Chama o próximo middleware no pipeline
await _next(context);

var endTime = DateTime.UtcNow;
var processingTime = endTime - startTime;
Console.WriteLine($"Request processed in {processingTime.TotalMilliseconds} ms");
}
}


2.2 Registrar o Middleware no Pipeline

No método Configure da classe Startup, adicione o middleware personalizado ao pipeline.

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

// Adiciona o middleware personalizado
app.UseMiddleware<RequestTimingMiddleware>();

app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}


Passo 3: Usando Middleware Integrado

Além de middlewares personalizados, o ASP.NET Core vem com vários middlewares integrados que fornecem funcionalidades comuns, como autenticação, autorização, compressão de resposta e muito mais.

3.1 Middleware de Autenticação e Autorização

app.UseAuthentication();
app.UseAuthorization();


3.2 Middleware de Manipulação de Erros

app.UseExceptionHandler("/Home/Error");
app.UseHsts();


3.3 Middleware de Redirecionamento HTTPS

app.UseHttpsRedirection();


Conclusão

Middlewares são blocos de construção essenciais para qualquer aplicação ASP.NET Core, permitindo a manipulação de solicitações e respostas de maneira modular e reutilizável. Compreender como criar e usar middlewares pode ajudar a construir aplicativos mais robustos e escaláveis.


VOCÊ PODE GOSTAR

^

voltar para o top