Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

C# ASP.NET Core 미들웨어는 HttpModule과 어떻게 다릅니까?

<시간/>

HttpModules는 web.config를 통해 구성되거나 global.asaxDeveloper는 실행 순서를 제어할 수 없습니다.

모듈의 순서는 주로 애플리케이션 수명 주기 이벤트를 기반으로 하기 때문에 실행 순서는 요청 및 응답에 대해 동일하게 유지됩니다.

HttpModules는 애플리케이션 이벤트와 관련된 코드를 첨부하는 데 도움이 됩니다. HttpModules는 System.web에 연결되어 있습니다.

미들웨어는 web.config 파일(응용 프로그램의 진입점)이 아닌 Startup.cs 코드에서 구성됩니다.

HttpModules와 달리 get이 실행되는 순서와 순서를 완전히 제어할 수 있습니다. 추가된 순서대로 실행됩니다.

응답을 위한 미들웨어의 순서는 요청의 순서와 반대입니다.

미들웨어는 이러한 이벤트와 무관합니다.

미들웨어는 호스트에 독립적입니다.

Asp.Net 코어의 미들웨어 내장

인증 인증 지원을 제공합니다.

CORS 교차 출처 리소스 공유를 구성합니다.

라우팅 요청 경로를 정의하고 제한합니다.

세션 사용자 세션 관리를 지원합니다.

진단 오류 페이지 및 런타임 정보에 대한 지원을 포함합니다.

public class MyMiddleware{
   private readonly RequestDelegate _next;
   private readonly ILogger _logger;
   public MyMiddleware(RequestDelegate next, ILoggerFactory logFactory){
      _next = next;
      _logger = logFactory.CreateLogger("MyMiddleware");
   }
   public async Task Invoke(HttpContext httpContext){
      _logger.LogInformation("MyMiddleware executing..");
      await _next(httpContext); // calling next middleware
   }
}

// HTTP 요청 파이프라인에 미들웨어를 추가하는 데 사용되는 확장 메서드입니다.

public static class MyMiddlewareExtensions{
   public static IApplicationBuilder UseMyMiddleware(this IApplicationBuilder
   builder){
      return builder.UseMiddleware<MyMiddleware>();
   }
}

//아래와 같이 Use extension 메소드를 사용하여 요청 파이프라인에 커스텀 미들웨어를 추가합니다.

public void Configure(IApplicationBuilder app, IHostingEnvironment env){
   app.UseMiddleware<MyMiddleware>()
   app.Run(async (context) =>{
      await context.Response.WriteAsync("Hello World!");
   });
}