기초 메모지

ASP.Net Core - 미들웨어(Middleware) 본문

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();
반응형
Comments