누군가 2 문장 미만으로 두 문장의 차이점을 설명 할 수 있습니까? 예, Google은 수백 개의 답변을 제공 할 수 있지만 두 가지 명확한 문장 중 하나는 제공 할 수 없음을 알고 있습니다 :)
누군가 2 문장 미만으로 두 문장의 차이점을 설명 할 수 있습니까? 예, Google은 수백 개의 답변을 제공 할 수 있지만 두 가지 명확한 문장 중 하나는 제공 할 수 없음을 알고 있습니다 :)
답변:
HttpHandler는 요청 기차가 향하는 곳입니다. HttpModule은 그 길을 따라있는 스테이션입니다.
두 문장 :
HttpModule은 확장에 관계없이 애플리케이션에 대한 모든 요청에 대해 실행되며 일반적으로 보안, 통계, 로깅 등과 같은 것들에 사용됩니다.
HttpHandler는 일반적으로 특정 확장과 관련이 있으며 RSS 피드, 동적 이미지 생성 또는 수정 등과 같은 것들에 사용됩니다.
완전히 명확하지 않은 경우 조금 더 설명 :
내가 생각하는 방식-모듈은 요청 파이프 라인에 "플러그인"하는 반면, 핸들러는 특정 파일 확장자를 "핸들링"합니다. 따라서 LoggingModule 및 PdfHandler가있는 사이트가있는 경우 둘 다 http://example.com/sample.pdf 에 대한 요청에 대해 실행 되며 로깅 모듈 만 http : // 에 대한 요청에 대해 실행됩니다 . example.com/page.aspx .
MSDN의 차이점에 대한 명확한 기사가 있습니다. HTTP 처리기 및 HTTP 모듈 개요
ProcessRequest
. 반면에 모듈은 연결된 라이프 사이클의 어느 시점에서나 실행됩니다. aspx 페이지 이전에 무언가를 실행하려는 시나리오의 경우 모듈이 필요합니다. 그러나 .aspx가 아닌 페이지에 대한 요청을 수동으로 필터링해야합니다.
HttpHandler 및 HttpModule의 주요 목표는 ASP.NET 요청이 IIS 서버에 도달하기 전에 사전 처리 논리를 삽입하는 것입니다.
ASP.NET은 요청 파이프 라인에 로직을 주입하는 두 가지 방법을 제공합니다.
예 : 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 인 모든 파일 이름을 처리합니다.
요청이 요청 파이프 라인을 통과 할 때 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 처리기
HTTP 처리기는 HTTP 요청에 응답하여 실행되는 프로세스입니다. 따라서 사용자가 파일을 요청할 때마다 확장명에 따라 처리기가 처리합니다. 따라서 파일 이름 확장자를 기반으로 특수 처리해야 할 경우 사용자 정의 http 핸들러가 작성됩니다. 사이트에 대한 RSS를 작성하는 예를 고려해 봅시다. 따라서 RSS 형식의 XML을 생성하는 핸들러를 작성하십시오. 이제 .rss 확장자를 사용자 정의 핸들러에 바인드하십시오.
HTTP 모듈
HTTP 모듈은 요청 수명주기에 연결됩니다. 따라서 요청이 처리되면 요청 파이프 라인의 모든 모듈을 통과합니다. 따라서 일반적으로 http 모듈은 다음 용도로 사용됩니다.
보안 : 요청이 처리되기 전에 요청을 인증합니다.
통계 및 로깅 : 모든 요청에 대해 모듈이 호출되므로 통계 수집 및 정보 로깅에 사용할 수 있습니다.
사용자 정의 헤더 : 응답을 수정할 수 있으므로 사용자 정의 헤더 정보를 응답에 추가 할 수 있습니다.