itsource

IHTTP 핸들러 대 IHTTP 모듈

mycopycode 2023. 6. 16. 21:44
반응형

IHTTP 핸들러 대 IHTTP 모듈

제 질문은 간단합니다(대답은 그렇지 않을 가능성이 높습니다).C# / ASP.NET에서 서버측 업로드 핸들러를 구현하는 방법을 결정하려고 합니다.

HttpModules(IHTtpModule 인터페이스)와 HttpHandler(IHTtpHandler 인터페이스)를 모두 사용해 보았는데 두 가지 메커니즘을 모두 사용하여 구현할 수 있다는 생각이 들었습니다.저는 또한 그 둘 사이의 차이점을 이해하지 못한다는 생각이 듭니다.

그래서 제 질문은 다음과 같습니다.어떤 경우에 IHTTP 모듈 대신 IHTTPHandler를 사용하기로 선택합니까(및 그 반대도 마찬가지입니까)?

파이프라인에서 실행되는 것이 훨씬 더 높습니까?특정 상황에서 구성하는 것이 훨씬 쉽습니까?중간 보안에서는 잘 작동하지 않습니까?

ASP.NET HTTP 핸들러는 ASP.NET 웹 응용프로그램에 대한 요청에 응답하여 실행되는 프로세스(종종 "엔드포인트"라고 함)입니다.가장 일반적인 처리기는 .aspx 파일을 처리하는 ASP.NET 페이지 처리기입니다.사용자가 .aspx 파일을 요청하면 페이지 처리기를 통해 페이지에서 요청을 처리합니다.사용자 정의 출력을 브라우저로 렌더링하는 HTTP 핸들러를 직접 만들 수 있습니다.

사용자 정의 HTTP 핸들러의 일반적인 용도는 다음과 같습니다.

  • RSS 피드 웹 사이트에 대한 RSS 피드를 만들려면 RSS 형식 XML을 내보내는 처리기를 만들 수 있습니다.그런 다음 .rss와 같은 파일 이름 확장명을 사용자 정의 핸들러에 바인딩할 수 있습니다.사용자가 사이트에 .rss로 끝나는 요청을 보내면 ASP.NET은 처리기를 호출하여 요청을 처리합니다.
  • 이미지 서버 웹 응용프로그램이 다양한 크기의 이미지를 제공하도록 하려면 사용자 정의 처리기를 작성하여 이미지 크기를 조정한 다음 처리기의 응답으로 사용자에게 보낼 수 있습니다.

HTTP 모듈은 응용프로그램에 대한 모든 요청에 대해 호출되는 어셈블리입니다.HTTP 모듈은 ASP.NET 요청 파이프라인의 일부로 호출되며 요청 전반에 걸쳐 수명 주기 이벤트에 액세스할 수 있습니다.HTTP 모듈을 사용하여 수신 및 송신 요청을 검사하고 요청에 따라 작업을 수행할 수 있습니다.

HTTP 모듈의 일반적인 용도는 다음과 같습니다.

  • 보안 들어오는 요청을 검사할 수 있기 때문에 HTTP 모듈은 요청된 페이지, XML 웹 서비스 또는 처리기를 호출하기 전에 사용자 지정 인증 또는 기타 보안 검사를 수행할 수 있습니다.통합 모드로 실행 중인 IIS(인터넷 정보 서비스) 7.0에서 양식 인증확인을 응용프로그램의 모든 내용 유형으로 확장할 수 있습니다.
  • 통계 및 로깅 HTTP 모듈은 모든 요청에 대해 호출되므로 개별 페이지가 아닌 중앙 집중식 모듈에서 요청 통계 및 로그 정보를 수집할 수 있습니다.
  • 사용자 정의 헤더 또는 바닥글 발신 응답을 수정할 수 있으므로 모든 페이지 또는 XML 웹 서비스 응답에 사용자 정의 헤더 정보와 같은 내용을 삽입할 수 있습니다.

보낸 사람: http://msdn.microsoft.com/en-us/library/bb398986.aspx

여기에서 설명한 바와 같이 HttpModules는 요청 처리 파이프라인에 직접 연결할 수 있는 간단한 클래스인 반면 HttpHandler는 요청 처리 파이프라인 내의 위치뿐만 아니라 특정 파일 확장자에 매핑되어야 하기 때문에 HttpModules와 다릅니다.

IHttpModule웹 응용 프로그램으로 전송되는 모든 트래픽을 기본적으로 제어할 수 있습니다. IHttpHandler제어 능력이 떨어집니다(트래픽이 핸들러에 도달하기 전에 필터링됨). 하지만 이 정도면 필요에 충분할 것입니다.IHttpModule.

의 사용자 클래스에 이 것입니다.IHttpModule또는IHttpHandler이렇게 하면 둘 중 하나를 선택하는 것에 대해 걱정할 필요가 없습니다.사실, 당신은 두 가지를 모두 구현하는 추가 클래스를 만들 수 있습니다. IHttpHandler그리고.IHttpModule그런 다음 에 설정하여 사용할 항목을 결정합니다.Web.config.

15초에는 실제 사례를 보여주는 멋진 작은 튜토리얼이 있습니다.

모듈은 요청이 처리기에 의해 실제로 처리되기 전후에 응용 프로그램에서 발생한 이벤트를 처리하기 위한 것입니다.그러나 처리기는 응용 프로그램 이벤트를 구독할 기회가 주어지지 않으며, 대신 특정 요청을 처리하는 "주요" 작업을 위해 ProcessRequest 메서드를 호출합니다.

Microsoft에서 제공하는 이 문서를 확인하십시오("요청은 HttpApplication 파이프라인에서 처리됩니다" 섹션의 약 절반 페이지).

http://msdn.microsoft.com/en-us/library/bb470252.aspx

15단계에서 처리기가 실행될 기회를 얻는 것을 볼 수 있습니다.이 단계 전후의 모든 이벤트는 모듈이 가로채기할 수 있지만 처리기는 사용할 수 없습니다.

달성하려는 특정 기능에 따라 처리기 또는 모듈을 사용하여 업로드 처리기를 구현할 수 있습니다.둘 다 사용하게 될 수도 있습니다.

이미 작성된 업로드 핸들러를 사용해야 할 경우 고려해야 할 사항이 있습니다.

무료 오픈 소스는 다음과 같습니다.

http://www.brettle.com/neatupload

여기 광고가 있습니다.

http://krystalware.com/Products/SlickUpload/

NeatUpload에 대한 설명서를 보면 모듈을 구성해야 한다는 것을 참조하십시오.

언급URL : https://stackoverflow.com/questions/769432/ihttphandler-vs-ihttpmodule

반응형