팁 (조언)
이 콘텐츠는 Blazor 또는 오프라인으로 읽을 수 있는 다운로드 가능한 무료 PDF로 제공되는 for ASP NET Web Forms Developers for Azure 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 미들웨어 작성을 참조하세요.
.NET