source

HTTP 핸들러 대 HTTP 모듈

nicesource 2023. 4. 29. 09:27
반응형

HTTP 핸들러 대 HTTP 모듈

누가 두 문장 이하로 둘 사이의 차이를 설명할 수 있습니까?네, 구글은 수백 개의 답을 제공할 수 있지만 두 개의 명확한 문장 중 하나는 제공할 수 없다는 것을 알고 있습니다:)

HttpHandler는 요청 열차가 향하는 곳입니다.HttpModule은 가는 길에 있는 역입니다.

두 문장:

HttpModule은 확장에 관계없이 응용프로그램에 대한 모든 요청에 대해 실행되며 일반적으로 보안, 통계, 로깅 등에 사용됩니다.

HttpHandler는 일반적으로 특정 확장과 연결되며 RSS 피드, 동적 이미지 생성 또는 수정 등에 사용됩니다.

만약 그것이 완전히 명확하지 않다면, 조금 더 설명해 주세요.

모듈은 요청 파이프라인에 "플러그인"하고 핸들러는 특정 파일 확장자를 "처리"합니다.따라서 LoggingModule과 PdfHandler가 있는 사이트의 경우 둘 http://example.com/sample.pdf, 에 대한 요청에 대해 실행되고 로깅 모듈만 http://example.com/page.aspx 에 대한 요청에 대해 실행됩니다.

MSDN의 차이점에 대한 꽤 명확한 기사가 있습니다: HTTP 핸들러와 HTTP 모듈 개요.

HttpHandler 및 HttpModule의 주요 공통 목표는 ASP 이전에 전처리 논리를 주입하는 것입니다.NET 요청이 IIS 서버에 도달합니다.

ASP.NET은 요청 파이프라인에 논리를 주입하는 두 가지 방법을 제공합니다.

  1. Http 처리기:Http Handler는 요청된 파일 이름의 확장자를 기반으로 전처리 논리를 주입하는 데 도움이 됩니다.ASP.NET은 HTTP 핸들러를 사용하여 많은 자체 기능을 구현합니다.예를 들어 ASP입니다.NET은 처리기를 사용하여 .aspx, .asmx 및 추적을 처리합니다.axd 파일.

예: RSS 피드:웹 사이트에 대한 RSS 피드를 만들려면 RSS 형식의 XML을 내보내는 처리기를 만들 수 있습니다. 따라서 사용자가 사이트에 .rss, ASP로 끝나는 요청을 보낼 때 사용합니다.NET이 처리기를 호출하여 요청을 처리합니다.

처리기 1 작성에는 세 단계가 포함됩니다.IHTTPHandler 인터페이스를 구현합니다. 2. web.config 또는 machine.config 파일에 핸들러를 등록합니다. 3. 파일 확장자(*.arshad)를 IIS의 aspnet_isapi.dll에 매핑합니다.

IHTTPHandler 인터페이스에 구현해야 하는 ProcessRequest 메서드 및 IsReuseable 속성이 있습니다.프로세스 요청:이 방법에서는 핸들러의 출력을 생성하는 코드를 작성합니다.귀중한 정보:이 속성은 이 처리기를 재사용할 수 있는지 여부를 알려줍니다.

다음과 같이 web.config 파일에 핸들러를 등록할 수 있습니다.

<httpHandlers>
   <add verb="*" path="*.arshad" type="namespace.classname, assemblyname" />
</httpHandlers>

참고: 확장자 Arshad가 있는 모든 파일 이름을 처리합니다.

  1. Http 모듈:HttpModule은 요청이 IIS 서버에 도달하기 전에 사전 처리 로직을 주입하는 이벤트 기반 프로세서입니다.ASP.NET은 HTTP 모듈을 사용하여 인증 및 권한 부여, 세션 관리 및 출력 캐싱 등과 같은 많은 자체 기능을 구현합니다.

ASP.NET 엔진은 요청이 요청 파이프라인을 통과할 때 많은 이벤트를 내보냅니다.이러한 이벤트에는 AuthenticateRequest, AuthorizeRequest, BeginRequest, EndRequest 등이 있습니다.HttpModule을 사용하여 이러한 이벤트에 로직을 작성할 수 있습니다.이러한 논리는 이벤트가 발생할 때와 요청이 IIS에 도달하기 전에 실행됩니다.

모듈 작성에는 두 단계, 1이 포함됩니다.IHTTP 모듈 인터페이스 2를 구현합니다.web.config 또는 machine.config 파일에 모듈을 등록합니다.

예:보안:HTTP 모듈을 사용하여 요청이 IIS에 도달하기 전에 사용자 지정 인증 또는 기타 보안 검사를 수행할 수 있습니다.

HTTP 핸들러는 ASP에 대한 요청에 대한 응답으로 실행되는 프로세스입니다.NET 웹 응용 프로그램.HTTP 모듈을 사용하여 수신 및 송신 요청을 검사하고 요청에 따라 작업을 수행할 수 있습니다.

HttpModule이 응용 프로그램 수명 주기 이벤트에 응답하는 동안 HttpHandler는 확장자별로 http 요청을 처리합니다.

it HttpModule-and-HttpHandlers에 대한 좋은 기사입니다.

참조: INFO: ASP.NET HTTP 모듈 및 HTTP 핸들러 개요

"모듈은 처리기 실행 전후에 호출됩니다.모듈을 통해 개발자는 각 개별 요청을 가로채거나 참여하거나 수정할 수 있습니다.처리기는 개별 엔드포인트 요청을 처리하는 데 사용됩니다.핸들러는 ASP를 활성화합니다.응용프로그램 내의 개별 HTTP URL 또는 URL 확장 그룹을 처리하는 NET Framework입니다.모듈과 달리 요청을 처리하는 데 하나의 핸들러만 사용됩니다."

HTTP 핸들러는 설정에 따라 실제로 컴파일이 수행되는 곳입니다.예를 들어 페이지 확장자가 .aspx인 경우 시스템을 통해 컴파일됩니다.web.ui.파가 핸들 공장.컴파일이 HTTP 핸들 요청에서 완료되면 HTTP 모듈과 IIS를 통해 전송됩니다.

HTTP 핸들러

HTTP 처리기는 HTTP 요청에 대한 응답으로 실행되는 프로세스입니다.따라서 사용자가 파일을 요청할 때마다 확장자를 기준으로 처리됩니다.따라서 파일 이름 확장명을 기반으로 특별한 처리가 필요할 때 사용자 정의 http 핸들러가 만들어집니다.사이트에 대한 RSS를 만드는 예를 살펴보겠습니다.RSS 형식의 XML을 생성하는 핸들러를 만듭니다. 이제 .rss 확장자를 사용자 지정 핸들러에 바인딩합니다.

HTTP 모듈

HTTP 모듈은 요청의 수명 주기에 연결됩니다.따라서 요청이 처리될 때 요청은 요청의 파이프라인에 있는 모든 모듈을 통해 전달됩니다.따라서 일반적으로 http 모듈은 다음에 사용됩니다.

보안:요청이 처리되기 전에 요청을 인증하는 데 사용됩니다.

통계 및 로깅:모듈은 모든 요청에 대해 호출되므로 통계 수집 및 정보 로깅에 사용할 수 있습니다.

사용자 지정 헤더:응답을 수정할 수 있으므로 사용자 정의 헤더 정보를 응답에 추가할 수 있습니다.

언급URL : https://stackoverflow.com/questions/6449132/http-handler-vs-http-module

반응형