Frameworks, Platforms/ASP.Net Core
ASP.Net Core - 미들웨어(Middleware)
라큐브
2022. 9. 19. 10:08
미들웨어
요청과 응답 사이 파이프라인(순차적)으로 이루어져 특정한 로직을 수행하는 클래스입니다.
그림을 참고하면 로직이 미들웨어(클래스)에서 순차적(파이프라인)으로 처리되는 것을 확인할 수 있습니다.
미들웨어는 왜 사용할까?
1. 필요한 미들웨어를 선택적으로 사용할 수 있어 애플리케이션을 경량화 할 수 있습니다.
2. 요청과 응답 사이에 개입하여 별도의 로직을 수행할 수 있습니다.
3. 요청과 응답 사이에서 발생하는 상황을 쉽게 파악할 수 있습니다.
미들웨어 실행 순서
미들웨어는 요청 시 등록된 순서의 정방향, 응답 시 등록된 순서의 역방향으로 실행됩니다.
미들웨어 사용하기
Program.cs 또는 Startup.cs에 아래와 같이 코드를 추가합니다.
var app = builder.Build();
app.Run(async (context) =>
{
await context.Response.WriteAsync("Middleware");
});
미들웨어 클래스를 생성하여 미들웨어를 사용할 수 있습니다.
public class MyCustomMiddleware
{
private readonly RequestDelegate _next;
/// <summary>
/// 미들웨어는 RequestDelegate 타입을 매개 변수로 받는 생성자가 필요합니다.
/// </summary>
/// <param name="next"></param>
public MyCustomMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
// Call the next delegate/middleware in the pipeline.
// 다음 미들웨어 또는 델리게이트로 처리 순서를 넘깁니다.
await _next(context);
}
}
/// <summary>
/// 미들웨어(Middleware) 호출 클래스에서 사용할 수 있도록 합니다.
/// </summary>
public static class MyCustomMiddlewareExtensions
{
/// <summary>
/// IApplicationBuilder로 미들웨어(Middleware) 호출 클래스에 노출시킵니다.
/// </summary>
/// <param name="builder"></param>
/// <returns>사용할 미들웨어</returns>
public static IApplicationBuilder UseMyCustomMiddleware(
this IApplicationBuilder builder)
{
return builder.UseMiddleware<MyCustomMiddleware>();
}
}
Program.cs 또는 Startup.cs에 아래와 같이 코드를 추가합니다.
var app = builder.Build();
app.MyCustomMiddleware();
반응형