다음을 통해 공유


모듈, 처리기 및 미들웨어

팁 (조언)

이 콘텐츠는 Blazor 또는 오프라인으로 읽을 수 있는 다운로드 가능한 무료 PDF로 제공되는 for ASP NET Web Forms Developers for Azure eBook에서 발췌한 것입니다.

Blazor-for-ASP-NET-Web-Forms-Developers eBook 표지 썸네일.

ASP.NET Core 앱은 일련의 미들웨어를 기반으로 합니다. 미들웨어는 요청 및 응답을 처리하기 위해 파이프라인으로 정렬되는 처리기입니다. Web Forms 앱에서 HTTP 처리기 및 모듈은 비슷한 문제를 해결합니다. ASP.NET Core에서는 모듈, 처리기, Global.asax.cs 및 앱 수명 주기가 미들웨어로 바뀝니다. 이 챕터에서는 앱 컨텍스트에서 미들웨어에 대해 알아봅니다 Blazor .

개요

ASP.NET Core 요청 파이프라인은 하나씩 차례로 호출되는 요청 대리자 시퀀스로 구성됩니다. 다음 다이어그램은 그 개념을 보여줍니다. 실행 스레드는 검은색 화살표를 따릅니다.

파이프라인

앞의 다이어그램에는 수명 주기 이벤트의 개념이 없습니다. 이 개념은 ASP.NET Web Forms 요청이 처리되는 방식의 기본입니다. 이 시스템을 사용하면 어떤 프로세스가 발생하는지 더 쉽게 추론할 수 있으며, 어느 시점에서든 미들웨어를 삽입할 수 있습니다. 미들웨어는 요청 파이프라인에 추가되는 순서대로 실행됩니다. 또한 일반적으로 Startup.cs 구성 파일 대신 코드에 추가됩니다.

카타나 주

카타나에 익숙한 독자는 ASP.NET Core에서 편안하게 느낄 수 있습니다. 실제로 Katana는 ASP.NET Core가 파생되는 프레임워크입니다. ASP.NET 4.x에 유사한 미들웨어 및 파이프라인 패턴을 도입했습니다. Katana용으로 설계된 미들웨어는 ASP.NET Core 파이프라인으로 작동하도록 조정할 수 있습니다.

일반 미들웨어

ASP.NET 4.x에는 많은 모듈이 포함되어 있습니다. 비슷한 방식으로 ASP.NET Core에는 여러 미들웨어 구성 요소도 사용할 수 있습니다. IIS 모듈은 경우에 따라 ASP.NET Core에서 사용될 수 있습니다. 다른 경우에는 네이티브 ASP.NET Core 미들웨어를 사용할 수 있습니다.

다음 표에서는 ASP.NET Core의 대체 미들웨어 및 구성 요소를 나열합니다.

모듈 ASP.NET 4.x 모듈 ASP.NET Core 옵션
HTTP 오류 CustomErrorModule 상태 코드 페이지 미들웨어
기본 문서 DefaultDocumentModule 기본 파일 미들웨어
디렉터리 검색 DirectoryListingModule 디렉터리 브라우징 미들웨어
동적 압축 DynamicCompressionModule 응답 압축 미들웨어
실패한 요청 추적 FailedRequestsTracingModule ASP.NET 핵심 로깅
파일 캐싱 FileCacheModule 응답 캐싱 미들웨어
HTTP 캐싱 HttpCacheModule 응답 캐싱 미들웨어
HTTP 로깅 HttpLoggingModule ASP.NET 핵심 로깅
HTTP 리디렉션 HttpRedirectionModule URL 재작성 미들웨어
ISAPI 필터 IsapiFilterModule 미들웨어
ISAPI IsapiModule 미들웨어
요청 필터링 RequestFilteringModule URL 재작성 미들웨어 IRule
URL 다시 쓰기† RewriteModule URL 재작성 미들웨어
정적 압축 StaticCompressionModule 응답 압축 미들웨어
정적 콘텐츠 StaticFileModule 정적 파일 미들웨어
URL 권한 부여 UrlAuthorizationModule ASP.NET 코어 아이덴티티

이 목록은 완전하지는 않지만 두 프레임워크 간에 어떤 매핑이 존재하는지 파악해야 합니다. 자세한 목록은 ASP.NET Core를 사용하는 IIS 모듈을 참조하세요.

사용자 지정 미들웨어

기본 제공 미들웨어는 앱에 필요한 모든 시나리오를 처리하지 못할 수 있습니다. 이러한 경우 사용자 고유의 미들웨어를 만드는 것이 좋습니다. 미들웨어를 정의하는 방법에는 여러 가지가 있으며, 가장 간단한 방법은 단순한 대리자를 사용하는 것입니다. 쿼리 문자열에서 문화 설정 요청을 처리하는 다음 미들웨어를 고려해 보세요.

public class Startup
{
    public void Configure(IApplicationBuilder app)
    {
        app.Use(async (context, next) =>
        {
            var cultureQuery = context.Request.Query["culture"];

            if (!string.IsNullOrWhiteSpace(cultureQuery))
            {
                var culture = new CultureInfo(cultureQuery);

                CultureInfo.CurrentCulture = culture;
                CultureInfo.CurrentUICulture = culture;
            }

            // Call the next delegate/middleware in the pipeline
            await next();
        });

        app.Run(async (context) =>
            await context.Response.WriteAsync(
                $"Hello {CultureInfo.CurrentCulture.DisplayName}"));
    }
}

인터페이스를 구현하거나 미들웨어 규칙을 따라 미들웨어를 IMiddleware 클래스로 정의할 수도 있습니다. 자세한 내용은 사용자 지정 ASP.NET Core 미들웨어 작성을 참조하세요.