[asp.net] HTTP 처리기 대 HTTP 모듈

누군가 2 문장 미만으로 두 문장의 차이점을 설명 할 수 있습니까? 예, Google은 수백 개의 답변을 제공 할 수 있지만 두 가지 명확한 문장 중 하나는 제공 할 수 없음을 알고 있습니다 🙂



답변

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 Handlers : Http Handler는 요청 된 파일 이름의 확장자를 기반으로 사전 처리 논리를 주입하는 데 도움이됩니다. ASP.NET은 자체 기능을 구현하기 위해 HTTP 처리기를 사용합니다. 예를 들어 ASP.NET은 .aspx, .asmx 및 trace.axd 파일 처리에 처리기를 사용합니다.

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

핸들러 1을 작성하는 데는 세 가지 단계가 있습니다. IHttpHandler 인터페이스를 구현하십시오. 2. web.config 또는 machine.config 파일에 핸들러를 등록하십시오. 3. 파일 확장자 (* .arshad)를 IIS의 aspnet_isapi.dll에 매핑합니다.

IHttpHandler 인터페이스에는 구현해야하는 ProcessRequest 메소드 및 IsReusable 특성이 있습니다. ProcessRequest :이 메소드에서는 핸들러의 출력을 생성하는 코드를 작성합니다. IsResuable :이 속성은이 핸들러를 재사용 할 수 있는지 여부를 알려줍니다.

다음과 같이 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. IHttpModule 인터페이스 구현 2. web.config 또는 machine.config 파일에 모듈 등록

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


답변

HTTP 처리기는 ASP.NET 웹 응용 프로그램에 대한 요청에 응답하여 실행되는 프로세스입니다. HTTP 모듈을 사용하면 들어오고 나가는 요청을 검사하고 요청에 따라 조치를 취할 수 있습니다.


답변

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


답변

HttpModule-and-HttpHandlers에 대한 좋은 기사

참조 : 정보 : ASP.NET HTTP 모듈 및 HTTP 처리기 개요

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


답변

HTTP 처리기는 설정에 따라 실제로 컴파일이 수행되는 곳입니다. 페이지 확장자가 .aspx 인 경우 system.web.Ui.Pagahandlefactory를 통해 컴파일됩니다. HTTP 핸들에서 컴파일이 완료되면 HTTP 모듈과 IIS를 통해 요청이 진행됩니다.