[asp.net] IIS7에서 ‘클래식’과 ‘통합’파이프 라인 모드의 차이점은 무엇입니까?
지난 밤 ASP.NET MVC 응용 프로그램을 배포하고 IIS7을 통합 모드로 설정하여 배포하는 것이 덜 효과적이라는 것을 알았습니다. 내 질문은 차이점이 무엇입니까? 그리고 하나 또는 다른 것을 사용하는 의미는 무엇입니까?
답변
클래식 모드 (IIS6 이하의 유일한 모드)는 IIS가 ISAPI 확장 및 ISAPI 필터에서만 직접 작동하는 모드입니다. 실제로이 모드에서 ASP.NET은 ISAPI 확장 (aspnet_isapi.dll)과 ISAPI 필터 (aspnet_filter.dll) 일뿐입니다. IIS는 ASP.NET을 ISAPI에 구현 된 외부 플러그인으로 취급하고 블랙 박스처럼 작동합니다 (ASP.NET에 요청을 제공해야하는 경우에만). 이 모드에서 ASP.NET은 PHP 나 다른 IIS 기술과 크게 다르지 않습니다.
반면 통합 모드는 IIS 파이프 라인이 ASP.NET 요청 파이프 라인과 밀접하게 통합 된 (즉, 동일) IIS7의 새로운 모드입니다. ASP.NET은 원하는 모든 요청을보고 그 과정에서 작업을 처리 할 수 있습니다. ASP.NET은 더 이상 외부 플러그인으로 취급되지 않습니다. IIS에 완전히 혼합되어 통합되었습니다. 이 모드에서 ASP.NET은 HttpModule
기본적으로 ISAPI 필터에 비해 강력한 성능을 제공하며 ASP.NET HttpHandler
은 ISAPI 확장 기능과 거의 동일한 기능을 수행 할 수 있습니다. 이 모드에서 ASP.NET은 기본적으로 IIS의 일부입니다.
답변
통합 애플리케이션 풀 모드
응용 프로그램 풀이 통합 모드 인 경우 IIS 및 ASP.NET의 통합 요청 처리 아키텍처를 활용할 수 있습니다. 응용 프로그램 풀의 작업자 프로세스가 요청을 받으면 요청은 순서가 지정된 이벤트 목록을 통과합니다. 각 이벤트는 필요한 기본 및 관리 모듈을 호출하여 요청의 일부를 처리하고 응답을 생성합니다.
통합 모드에서 응용 프로그램 풀을 실행하면 몇 가지 이점이 있습니다. 먼저 IIS 및 ASP.NET의 요청 처리 모델이 통합 프로세스 모델에 통합되었습니다. 이 모델은 인증과 같은 IIS 및 ASP.NET에서 이전에 복제 된 단계를 제거합니다. 또한 통합 모드를 사용하면 모든 컨텐츠 유형에 관리 기능을 사용할 수 있습니다.
클래식 응용 프로그램 풀 모드
응용 프로그램 풀이 클래식 모드 인 경우 IIS 7.0은 IIS 6.0 작업자 프로세스 격리 모드에서와 같이 요청을 처리합니다. ASP.NET 요청은 먼저 IIS에서 기본 처리 단계를 거친 다음 관리 런타임에서 관리 코드를 처리하기 위해 Aspnet_isapi.dll로 라우팅됩니다. 마지막으로 요청은 IIS를 통해 다시 라우팅되어 응답을 보냅니다.
IIS와 ASP.NET 요청 처리 모델을 분리하면 인증 및 권한 부여와 같은 일부 처리 단계가 중복됩니다. 또한 폼 인증과 같은 관리 코드 기능은 aspnet_isapi.dll에서 처리 할 모든 요청을 스크립트로 매핑 한 ASP.NET 응용 프로그램 또는 응용 프로그램에서만 사용할 수 있습니다.
프로덕션 환경을 IIS 7.0으로 업그레이드하고 통합 모드에서 응용 프로그램 풀에 응용 프로그램을 할당하기 전에 기존 응용 프로그램의 통합 모드 호환성을 확인하십시오. 응용 프로그램이 통합 모드에서 작동하지 않으면 클래식 모드의 응용 프로그램 풀에만 응용 프로그램을 추가해야합니다. 예를 들어, 응용 프로그램은 IIS에서 관리 런타임으로 전달 된 인증 토큰에 의존 할 수 있으며 IIS 7.0의 새로운 아키텍처로 인해 응용 프로그램이 중단됩니다.
에서 가져온 : IIS7에서을 DefaultAppPool 클래식 .NET AppPool을 사이의 차이점은 무엇입니까?
원본 출처 : IIS 아키텍처 소개
답변
IIS 6.0 및 이전 버전 :
ASP.NET은 ISAPI 확장, C API (C 프로그래밍 언어 기반 API)를 통해 IIS와 통합되었으며 자체 응용 프로그램 및 요청 처리 모델을 노출했습니다.
이는 기본 ISAPI 필터 및 확장 구성 요소와 관리되는 응용 프로그램 구성 요소를위한 두 개의 별도 서버 (요청 / 응답) 파이프 라인을 효과적으로 노출 시켰습니다. ASP.NET 구성 요소는 ASP.NET ISAPI 확장 풍선 내에서 완전히 실행되며 IIS 스크립트 맵 구성에서 ASP.NET에 매핑 된 요청에 대해서만 실행 됩니다.
이미지, 텍스트 파일, HTML 페이지 및 스크립트없는 ASP 페이지가 아닌 비 ASP.NET 콘텐츠 형식에 대한 요청은 IIS 또는 기타 ISAPI 확장에 의해 처리되었으며 ASP.NET에는 표시되지 않았습니다.
이 모델의 주요 제한 사항은 ASP.NET 모듈에서 제공하는 서비스와 사용자 지정 ASP.NET 응용 프로그램 코드를 ASP.NET 이외의 요청에 사용할 수 없다는 것입니다.
스크립트 맵이란 무엇입니까?
스크립트 맵은 파일 확장자를 해당 파일 유형이 요청 될 때 실행되는 ISAPI 핸들러와 연관시키는 데 사용됩니다. 스크립트 맵에는 요청을 처리하기 전에 요청과 연관된 실제 파일이 존재하는지 확인하는 선택적 설정도 있습니다.
좋은 예가 될 수 있습니다 seen here
IIS 7 이상
IIS 7.0 이상은 새로운 C ++ API 기반 ISAPI를 제공하기 위해 처음부터 리엔지니어링되었습니다.
IIS 7.0 이상은 ASP.NET 런타임을 웹 서버의 핵심 기능과 통합하여 모듈 (IHttpModules)이라는 기본 및 관리되는 구성 요소 모두에 노출되는 통합 (단일) 요청 처리 파이프 라인을 제공합니다.
이것이 의미하는 것은 IIS 7 NON ASP.NET Modules / native IIS modules
ASP.NET modules
이 모든 단계에서 요청 처리를 제공 하고 제공하는 모든 컨텐츠 유형에 대해 도착한 요청을 처리한다는 것입니다. 이것이 .NET 모듈이 NON ASP.NET 컨텐츠 유형 (.html, 정적 파일)을 처리 할 수있는 이유입니다. .
IHttpModule
모든 애플리케이션 컨텐츠에 대해 실행할 수있는 기능이있는 새로운 관리 모듈 ( )을 빌드 하고 애플리케이션에 향상된 요청 처리 서비스 세트를 제공 할 수 있습니다.- 새로운 관리되는 핸들러 추가 (
IHttpHandler
)
답변
클래식 모드에서 IIS는 ISAPI 확장 및 ISAPI 필터를 직접 작동합니다. 그리고 두 개의 파이프 라인을 사용합니다. 하나는 기본 코드 용이고 다른 하나는 관리 코드 용입니다. 클래식 모드에서 IIS 7.x는 IIS 6과 동일하게 작동하며 IIS 7.x 기능에서 추가적인 이점을 얻지 못한다고 간단히 말할 수 있습니다.
통합 모드에서 IIS와 ASP.Net은 클래식 모드의 경우와 같이 Asp.net의 두 DLL에만 의존하는 것이 아니라 밀접하게 연결됩니다.