IIS 아키텍처 소개

작성자: IIS 팀, 레이건 템플릿

호환성

버전 참고
IIS 7.0 이상 이 문서에 설명된 기능은 IIS 7.0에서 도입되었습니다.
IIS 6.0 이하 이 문서에 설명된 기능은 IIS 7.0 이전에는 지원되지 않았습니다.

소개

IIS(인터넷 정보 서비스) 7 이상에서는 다음을 포함하는 요청 처리 아키텍처를 제공합니다.

  • 사이트에서 HTTP 및 HTTPS 이외의 프로토콜을 사용할 수 있도록 하는 WAS(Windows Process Activation Service)입니다.
  • 모듈을 추가하거나 제거하여 사용자 지정할 수 있는 웹 서버 엔진입니다.
  • IIS 및 ASP.NET 통합된 요청 처리 파이프라인

IIS의 구성 요소

IIS에는 Windows Server 2008(IIS 7.0) 및 Windows Server® 2008 R2(IIS 7.5)에서 애플리케이션 및 웹 서버 역할에 대한 중요한 기능을 수행하는 여러 구성 요소가 포함되어 있습니다. 각 구성 요소에는 서버에 대한 요청 수신 대기, 프로세스 관리 및 구성 파일 읽기와 같은 책임이 있습니다. 이러한 구성 요소에는 HTTP.sys 같은 프로토콜 수신기와 WWW 서비스(World Wide Web Publishing Service) 및 WAS(Windows Process Activation Service)와 같은 서비스가 포함됩니다.

프로토콜 수신기

프로토콜 수신기는 프로토콜 관련 요청을 수신하고, 처리를 위해 IIS로 보낸 다음, 요청자에게 응답을 반환합니다. 예를 들어 클라이언트 브라우저가 인터넷에서 웹 페이지를 요청하면 HTTP 수신기가 HTTP.sys 요청을 선택하고 처리를 위해 IIS로 보냅니다. IIS가 요청을 처리하면 HTTP.sys 클라이언트 브라우저에 대한 응답을 반환합니다.

기본적으로 IIS는 HTTP 및 HTTPS 요청을 수신 대기하는 프로토콜 수신기로 HTTP.sys 제공합니다. HTTP.sys HTTP 요청에 대한 HTTP별 프로토콜 수신기로 IIS 6.0에 도입되었습니다. HTTP.sys IIS 7 이상에서 HTTP 수신기로 유지되지만 SSL(Secure Sockets Layer)에 대한 지원이 포함됩니다.

HTTP 및 HTTPS 이외의 프로토콜을 사용하는 서비스 및 애플리케이션을 지원하려면 WCF(Windows Communication Foundation)와 같은 기술을 사용할 수 있습니다. WCF에는 프로토콜 수신기와 수신기 어댑터의 기능을 모두 제공하는 수신기 어댑터가 있습니다. 수신기 어댑터는 이 문서의 뒷부분에서 다룹니다. WCF에 대한 자세한 내용은 MSDN의 Windows Communication Foundation 을 참조하세요.

하이퍼텍스트 전송 프로토콜 스택(HTTP.sys)

HTTP 수신기는 Windows 운영 체제의 네트워킹 하위 시스템의 일부이며 HTTP 스택(HTTP.sys)이라는 커널 모드 디바이스 드라이버로 구현됩니다. HTTP.sys 네트워크에서 HTTP 요청을 수신 대기하고 처리를 위해 IIS에 요청을 전달한 다음 클라이언트 브라우저에 처리된 응답을 반환합니다.

IIS 6.0에서 HTTP.sys 이전 버전의 IIS에서 HTTP 요청을 수신하고 HTTP 응답을 보내는 데 사용한 사용자 모드 구성 요소인 Windows Sockets API(Winsock)를 대체했습니다. IIS 7 이상에서는 HTTP 요청에 대한 HTTP.sys 계속 사용합니다.

HTTP.sys 다음과 같은 이점을 제공합니다.

  • 커널 모드 캐싱. 캐시된 응답에 대한 요청은 사용자 모드로 전환하지 않고 제공됩니다.
  • 커널 모드 요청 큐. 커널이 요청을 올바른 작업자 프로세스로 직접 전달하기 때문에 요청은 컨텍스트 전환에서 오버헤드를 줄입니다. 요청을 수락할 수 있는 작업자 프로세스가 없는 경우 커널 모드 요청 큐는 작업자 프로세스가 요청을 선택할 때까지 요청을 보유합니다.
  • 사전 처리 및 보안 필터링을 요청합니다.

World Wide 웹 게시 서비스(WWW 서비스)

IIS 7 이상에서는 이전에 WWW 서비스(World Wide Web Publishing Service)에서만 처리되었던 기능이 이제 WWW 서비스와 새 서비스인 WAS(Windows Process Activation Service)의 두 서비스로 나뉩니다. 이 두 서비스는 동일한 Svchost.exe 프로세스에서 LocalSystem으로 실행되며 동일한 이진 파일을 공유합니다.

참고

설명서에서 W3SVC라고 하는 WWW 서비스가 표시 될 수도 있습니다.

IIS 6.0에서 WWW 서비스의 작동 방식

IIS 6.0에서 WWW 서비스는 IIS에서 다음 주요 영역을 관리합니다.

  • HTTP 관리 및 구성
  • 프로세스 관리
  • 성능 모니터링

HTTP 관리 및 구성

WWW 서비스는 IIS 메타베이스에서 구성 정보를 읽고 해당 정보를 사용하여 HTTP 수신기, HTTP.sys 구성 및 업데이트합니다. 또한 WWW 서비스는 HTTP 요청을 처리하는 작업자 프로세스를 시작, 중지, 모니터링 및 관리합니다.

성능 모니터링

WWW 서비스는 성능을 모니터링하고 웹 사이트 및 IIS 캐시에 대한 성능 카운터를 제공합니다.

프로세스 관리

WWW 서비스는 작업자 프로세스 시작, 중지 및 재활용과 같은 애플리케이션 풀 및 작업자 프로세스를 관리합니다. 또한 WWW 서비스는 작업자 프로세스의 상태를 모니터링하고, 구성 가능한 시간 동안 여러 작업자 프로세스가 실패할 때 새 프로세스가 시작되지 않도록 신속한 장애 검색을 호출합니다.

IIS에서 WWW 서비스의 작동 방식

IIS에서 WWW 서비스는 더 이상 작업자 프로세스를 관리하지 않습니다. 대신 WWW 서비스는 HTTP 수신기의 수신기 어댑터이며 HTTP.sys. 수신기 어댑터로서 WWW 서비스는 주로 HTTP.sys 구성하고, 구성이 변경되면 HTTP.sys 업데이트하고, 요청이 요청 큐에 들어갈 때 WAS에 알립니다.

또한 WWW 서비스는 웹 사이트에 대한 카운터를 계속 수집합니다. 성능 카운터는 WWW 서비스의 일부로 유지되므로 HTTP 전용이며 WAS에는 적용되지 않습니다.

WAS(Windows Process Activation Service)

IIS 7 이상에서는 WAS(Windows Process Activation Service)가 WWW 서비스 대신 애플리케이션 풀 구성 및 작업자 프로세스를 관리합니다. 이렇게 하면 HTTP 및 비 HTTP 사이트에 대해 동일한 구성 및 프로세스 모델을 사용할 수 있습니다.

또한 HTTP 기능이 필요하지 않은 경우 WWW 서비스 없이 WAS를 실행할 수 있습니다. 예를 들어 HTTP.sys HTTP 요청을 수신 대기할 필요가 없는 경우 WWW 서비스를 실행하지 않고도 NetTcpActivator와 같은 WCF 수신기 어댑터를 통해 웹 서비스를 관리할 수 있습니다. WCF 수신기 어댑터 및 WAS를 사용하여 IIS 7 이상에서 WCF 애플리케이션을 호스트하는 방법에 대한 자세한 내용은 MSDN의 WCF에서 호스팅 을 참조하세요.

WAS의 구성 관리

시작 시 WAS는 ApplicationHost.config 파일에서 특정 정보를 읽고 해당 정보를 서버의 수신기 어댑터에 전달합니다. 수신기 어댑터는 WAS와 프로토콜 수신기 간의 통신을 설정하는 구성 요소입니다(예: HTTP.sys). 수신기 어댑터는 구성 정보를 받으면 관련 프로토콜 수신기를 구성하고 요청을 수신 대기하도록 수신기를 준비합니다.

WCF의 경우 수신기 어댑터에는 프로토콜 수신기의 기능이 포함됩니다. 따라서 NetTcpActivator와 같은 WCF 수신기 어댑터는 WAS의 정보를 기반으로 구성됩니다. NetTcpActivator가 구성되면 net.tcp 프로토콜을 사용하는 요청을 수신 대기합니다. WCF 수신기 어댑터에 대한 자세한 내용은 MSDN 의 WAS 활성화 아키텍처 를 참조하세요.

다음 목록에서는 WAS가 구성에서 읽은 정보 유형을 설명합니다.

  • 전역 구성 정보
  • HTTP 및 비 HTTP 프로토콜 모두에 대한 프로토콜 구성 정보
  • 프로세스 계정 정보와 같은 애플리케이션 풀 구성
  • 바인딩 및 애플리케이션과 같은 사이트 구성
  • 애플리케이션 구성(예: 사용하도록 설정된 프로토콜 및 애플리케이션이 속한 애플리케이션 풀)

ApplicationHost.config 변경되면 WAS는 알림을 받고 수신기 어댑터를 새 정보로 업데이트합니다.

프로세스 관리

WAS는 HTTP 및 비 HTTP 요청에 대한 애플리케이션 풀 및 작업자 프로세스를 관리합니다. 프로토콜 수신기가 클라이언트 요청을 선택하면 WAS는 작업자 프로세스가 실행 중인지 여부를 결정합니다. 애플리케이션 풀에 요청을 제공하는 작업자 프로세스가 이미 있는 경우 수신기 어댑터는 처리를 위해 요청을 작업자 프로세스에 전달합니다. 애플리케이션 풀에 작업자 프로세스가 없는 경우 WAS는 수신기 어댑터가 처리를 위해 요청을 전달할 수 있도록 작업자 프로세스를 시작합니다.

참고

WAS는 HTTP 및 비 HTTP 프로토콜 모두에 대한 프로세스를 관리하므로 동일한 애플리케이션 풀에서 서로 다른 프로토콜을 사용하여 애플리케이션을 실행할 수 있습니다. 예를 들어 XML 서비스와 같은 애플리케이션을 개발하고 HTTP 및 net.tcp를 통해 호스트할 수 있습니다.

IIS의 모듈

IIS는 이전 버전의 IIS와 다른 새 아키텍처를 제공합니다. IIS에는 서버 자체 내에서 대부분의 기능을 유지하는 대신 필요에 따라 모듈이라는 구성 요소를 추가하거나 제거할 수 있는 웹 서버 엔진이 포함됩니다.

모듈은 서버가 요청을 처리하는 데 사용하는 개별 기능입니다. 예를 들어 IIS는 인증 모듈을 사용하여 클라이언트 자격 증명을 인증하고 캐시 모듈을 사용하여 캐시 작업을 관리합니다.

새 아키텍처는 이전 버전의 IIS에 비해 다음과 같은 이점을 제공합니다.

  • 서버에서 원하는 모듈을 제어할 수 있습니다.
  • 사용자 환경의 특정 역할에 서버를 사용자 지정할 수 있습니다.
  • 사용자 지정 모듈을 사용하여 기존 모듈을 대체하거나 새 기능을 도입할 수 있습니다.

또한 새 아키텍처는 보안을 개선하고 관리를 간소화합니다. 불필요한 모듈을 제거하면 서버 작업자가 컴퓨터에서 사용하는 메모리 양인 서버의 공격 표면 및 메모리 공간을 줄일 수 있습니다. 또한 사이트 및 애플리케이션에 필요하지 않은 기능을 관리할 필요가 없습니다.

네이티브 모듈

다음 섹션에서는 IIS 7 이상의 전체 설치와 함께 사용할 수 있는 네이티브 모듈에 대해 설명합니다. 필요에 따라 제거하거나 사용자 지정 모듈로 바꿀 수 있습니다.

HTTP 모듈

IIS 7 이상의 여러 모듈은 요청 처리 파이프라인에서 HTTP(Hypertext Transfer Protocol)와 관련된 작업을 수행합니다. HTTP 모듈에는 클라이언트 헤더로 전송된 정보 및 문의에 응답하고, HTTP 오류를 반환하고, 요청을 리디렉션하는 모듈이 포함됩니다.

모듈 이름 설명 리소스
CustomErrorModule 응답에 오류 상태 코드가 설정되면 기본 및 구성된 HTTP 오류 메시지를 보냅니다. Inetsrv\Custerr.dll
HttpRedirectionModule HTTP 요청에 대한 구성 가능한 리디렉션을 지원합니다. Inetsrv\Redirect.dll
ProtocolSupportModule 응답 헤더 설정 및 구성에 따라 헤더 리디렉션과 같은 프로토콜 관련 작업을 수행합니다. Inetsrv\Protsup.dll
RequestFilteringModule IIS 7.5에 추가되었습니다. 프로토콜 및 콘텐츠 동작을 제어하도록 구성된 대로 요청을 필터링합니다. Inetsrv\modrqflt.dll
WebDAVModule IIS 7.5에 추가되었습니다. SSL을 통해 HTTP를 사용하여 콘텐츠를 보다 안전하게 게시할 수 있습니다. Inetsrv\WebDAV.dll

보안 모듈

IIS의 여러 모듈은 요청 처리 파이프라인의 보안과 관련된 작업을 수행합니다. 또한 각 인증 체계에 대해 별도의 모듈이 있으므로 서버에서 원하는 인증 유형에 대한 모듈을 선택할 수 있습니다. URL 권한 부여를 수행하는 모듈과 요청을 필터링하는 모듈도 있습니다.

모듈 이름 설명 리소스
AnonymousAuthenticationModule 다른 인증 방법이 성공하지 못하면 익명 인증을 수행합니다. Inetsrv\Authanon.dll
BasicAuthenticationModule 기본 인증을 수행합니다. Inetsrv\Authbas.dll
CertificateMappingAuthenticationModule Active Directory를 사용하여 인증서 매핑 인증을 수행합니다. Inetsrv\Authcert.dll
DigestAuthenticationModule 다이제스트 인증을 수행합니다. Inetsrv\Authmd5.dll
IISCertificateMappingAuthenticationModule IIS 인증서 구성을 사용하여 인증서 매핑 인증을 수행합니다. Inetsrv\Authmap.dll
RequestFilteringModule 허용되는 동사 및 파일 이름 확장명 구성, 제한 설정, 잘못된 문자 시퀀스 검색과 같은 URLScan 작업을 수행합니다. Inetsrv\Modrqflt.dll
UrlAuthorizationModule URL 권한 부여를 수행합니다. Inetsrv\Urlauthz.dll
WindowsAuthenticationModule NTLM 통합 인증을 수행합니다. Inetsrv\Authsspi.dll
IpRestrictionModule 구성의 ipSecurity 목록에 나열된 IPv4 주소를 제한합니다. Inetsrv\iprestr.dll

콘텐츠 모듈

IIS의 여러 모듈은 요청 처리 파이프라인의 콘텐츠와 관련된 작업을 수행합니다. 콘텐츠 모듈에는 정적 파일에 대한 요청을 처리하고, 클라이언트가 요청에 리소스를 지정하지 않을 때 기본 페이지를 반환하고, 디렉터리의 콘텐츠를 나열하는 모듈이 포함됩니다.

모듈 이름 설명 리소스
CgiModule CGI(Common Gateway Interface) 프로세스를 실행하여 응답 출력을 빌드합니다. Inetsrv\Cgi.dll
DefaultDocumentModule 부모 디렉터리에 대한 요청에 대한 기본 문서를 반환하려고 시도합니다. Inetsrv\Defdoc.dll
DirectoryListingModule 디렉터리의 콘텐츠를 나열합니다. Inetsrv\dirlist.dll
IsapiModule ISAPI 확장 DLL을 호스트합니다. Inetsrv\Isapi.dll
IsapiFilterModule ISAPI 필터 DLL을 지원합니다. Inetsrv\Filter.dll
ServerSideIncludeModule 프로세스 서버 쪽에는 코드가 포함됩니다. Inetsrv\Iis_ssi.dll
StaticFileModule 정적 파일을 제공합니다. Inetsrv\Static.dll
FastCgiModule CGI에 대한 고성능 대안을 제공하는 FastCGI를 지원합니다. Inetsrv\iisfcgi.dll

압축 모듈

IIS의 두 모듈은 요청 처리 파이프라인에서 압축을 수행합니다.

모듈 이름 설명 리소스
DynamicCompressionModule 응답을 압축하고 Gzip 압축 전송 코딩을 응답에 적용합니다. Inetsrv\Compdyn.dll
StaticCompressionModule 정적 콘텐츠의 사전 압축을 수행합니다. Inetsrv\Compstat.dll

캐싱 모듈

IIS의 여러 모듈은 요청 처리 파이프라인의 캐싱과 관련된 작업을 수행합니다. 캐싱은 서버의 메모리에 웹 페이지와 같은 처리된 정보를 저장한 다음, 동일한 리소스에 대한 후속 요청에서 해당 정보를 다시 사용하여 웹 사이트 및 웹 애플리케이션의 성능을 향상시킵니다.

모듈 이름 설명 리소스
FileCacheModule 파일 및 파일 핸들에 대한 사용자 모드 캐싱을 제공합니다. Inetsrv\Cachfile.dll
HTTPCacheModule HTTP.sys 커널 모드 및 사용자 모드 캐싱을 제공합니다. Inetsrv\Cachhttp.dll
TokenCacheModule Windows 사용자 주체를 생성하는 모듈에 대한 사용자 이름 및 토큰 쌍의 사용자 모드 캐싱을 제공합니다. Inetsrv\Cachtokn.dll
UriCacheModule URL 정보의 사용자 모드 캐싱을 제공합니다. Inetsrv\Cachuri.dll

로깅 및 진단 모듈

IIS의 여러 모듈은 요청 처리 파이프라인에서 로깅 및 진단과 관련된 작업을 수행합니다. 로깅 모듈은 사용자 지정 모듈의 로드 및 HTTP.sys 정보 전달을 지원합니다. 진단 모듈은 요청 처리 중에 이벤트를 따르고 보고합니다.

모듈 이름 설명 리소스
CustomLoggingModule 사용자 지정 로깅 모듈을 로드합니다. Inetsrv\Logcust.dll
FailedRequestsTracingModule 실패한 요청 추적 기능을 지원합니다. Inetsrv\Iisfreb.dll
HttpLoggingModule 로깅을 위해 정보 및 처리 상태를 HTTP.sys 전달합니다. Inetsrv\Loghttp.dll
RequestMonitorModule 작업자 프로세스에서 현재 실행 중인 요청을 추적하고 런타임 상태 및 제어 RSCA(애플리케이션 프로그래밍 인터페이스)를 사용하여 정보를 보고합니다. Inetsrv\Iisreqs.dll
TracingModule ETW(Microsoft Event Tracing for Windows)에 이벤트를 보고합니다. Inetsrv\Iisetw.dll

관리되는 지원 모듈

IIS의 두 모듈은 IIS 요청 처리 파이프라인에서 관리되는 통합을 지원합니다.

모듈 이름 설명 리소스
ManagedEngine IIS 요청 처리 파이프라인에서 관리 코드 모듈의 통합을 제공합니다. Microsoft.NET\Framework\v2.0.50727\webengine.dll
ConfigurationValidationModule 애플리케이션이 통합 모드에서 실행 중이지만 system.web 섹션에서 선언된 처리기 또는 모듈이 있는 경우와 같은 구성 문제의 유효성을 검사합니다. Inetsrv\validcfg.dll

관리되는 모듈

네이티브 모듈 외에도 IIS를 사용하면 관리 코드 모듈을 사용하여 IIS 기능을 확장할 수 있습니다. UrlAuthorization과 같은 일부 관리되는 모듈에는 관리되는 모듈에 대한 네이티브 대안을 제공하는 네이티브 모듈 대응 모듈이 있습니다.

참고

관리되는 모듈은 ManagedEngine 모듈에 따라 달라집니다.

다음 표에서는 IIS 7 이상의 전체 설치에서 사용할 수 있는 관리되는 모듈을 나열합니다. 관리되는 모듈에 대한 자세한 내용은 MSDN에서 .NET Framework SDK 2.0을 참조하세요.

모듈 이름 설명 리소스
AnonymousIdentification 익명 식별자를 관리합니다. 이 식별자는 ASP.NET 프로필과 같은 익명 식별을 지원하는 기능에서 사용됩니다. System.Web.Security.AnonymousIdentificationModule
DefaultAuthentication 컨텍스트에 인증 개체가 표시되어 있는지 확인합니다. System.Web.Security.DefaultAuthenticationModule
FileAuthorization 사용자에게 요청된 파일에 액세스할 수 있는 권한이 있는지 확인합니다. System.Web.Security.FileAuthorizationModule
FormsAuthentication Forms 인증을 사용하여 인증을 지원합니다. System.Web.Security.FormsAuthenticationModule
OutputCache 출력 캐싱을 지원합니다. System.Web.Caching.OutputCacheModule
프로필 데이터베이스와 같은 데이터 원본에서 사용자 설정을 저장하고 검색하는 ASP.NET 프로필을 사용하여 사용자 프로필을 관리합니다. System.Web.Profile.ProfileModule
RoleManager 현재 사용자의 RolePrincipal 인스턴스를 관리합니다. System.Web.Security.RoleManagerModule
세션 서버의 애플리케이션 내에서 단일 클라이언트에 한정된 데이터를 스토리지할 수 있도록 세션 상태 유지 관리를 지원합니다. System.Web.SessionState.SessionStateModule
UrlAuthorization 사용자 이름 또는 사용자가 멤버인 역할 목록에 따라 현재 사용자가 요청된 URL에 액세스할 수 있는지 여부를 결정합니다. System.Web.Security.UrlAuthorizationModule
UrlMappingsModule 실제 URL을 보다 사용자에게 친숙한 URL에 매핑할 수 있도록 지원합니다. System.Web.UrlMappingsModule
WindowsAuthentication Windows 인증이 사용될 때 ASP.NET 애플리케이션에 대한 사용자의 ID를 설정합니다. System.Web.Security.WindowsAuthenticationModule

IIS의 요청 처리

IIS에서 IIS 및 ASP.NET 요청 파이프라인은 통합된 접근 방식으로 요청을 처리하기 위해 결합됩니다. 새 요청 처리 아키텍처는 요청에 대한 응답으로 특정 작업을 수행하는 네이티브 및 관리되는 모듈의 순서가 지정된 목록으로 구성됩니다.

이 디자인은 이전 버전의 IIS에 비해 몇 가지 이점을 제공합니다. 먼저 모든 파일 형식은 원래 관리 코드에서만 사용할 수 있었던 기능을 사용할 수 있습니다. 예를 들어 이제 정적 파일, ASP(Active Server Pages) 파일 및 사이트 및 애플리케이션의 다른 모든 파일 형식에 대해 ASP.NET Forms 인증 및 URL(Uniform Resource Locator) 권한 부여를 사용할 수 있습니다.

둘째, 이 디자인은 IIS 및 ASP.NET 여러 기능의 중복을 제거합니다. 예를 들어 클라이언트가 관리되는 파일을 요청하면 서버는 통합 파이프라인에서 적절한 인증 모듈을 호출하여 클라이언트를 인증합니다. 이전 버전의 IIS에서 이 동일한 요청은 IIS 파이프라인과 ASP.NET 파이프라인 모두에서 인증 프로세스를 거닐게 됩니다.

셋째, IIS의 일부 기능과 ASP.NET 구성에서 일부 기능을 관리하는 대신 한 위치에서 모든 모듈을 관리할 수 있습니다. 이렇게 하면 서버의 사이트 및 애플리케이션 관리가 간소화됩니다.

IIS의 애플리케이션 풀

애플리케이션 풀은 애플리케이션이 서버의 다른 애플리케이션에 영향을 주지 않도록 애플리케이션을 프로세스 경계별로 구분합니다. IIS 7 이상에서 애플리케이션 풀은 IIS 6.0 작업자 프로세스 격리 모드를 계속 사용합니다. 또한 이제 관리되는 리소스(통합 모드 또는 클래식 모드)를 포함하는 요청을 처리하는 방법을 결정하는 설정을 지정할 수 있습니다.

참고

IIS 6.0에서는 작업자 프로세스 격리 모드 및 IIS 5.0 격리 모드가 서버 수준에서 설정됩니다. 이렇게 하면 동일한 서버에서 두 격리 모드를 모두 실행할 수 없습니다. 그러나 IIS 7 이상에서는 통합 모드와 클래식 모드가 애플리케이션 풀 수준에서 설정되므로 동일한 서버에서 서로 다른 프로세스 모드를 사용하여 애플리케이션 풀에서 동시에 애플리케이션을 실행할 수 있습니다.

통합 애플리케이션 풀 모드

애플리케이션 풀이 통합 모드인 경우 IIS 및 ASP.NET 통합 요청 처리 아키텍처를 활용할 수 있습니다. 애플리케이션 풀의 작업자 프로세스가 요청을 받으면 요청이 정렬된 이벤트 목록을 통과합니다. 각 이벤트는 요청의 일부를 처리하고 응답을 생성하는 데 필요한 네이티브 및 관리 모듈을 호출합니다.

통합 모드에서 애플리케이션 풀을 실행하는 데는 몇 가지 이점이 있습니다. 먼저 IIS 및 ASP.NET 요청 처리 모델이 통합 프로세스 모델에 통합됩니다. 이 모델은 이전에 IIS 및 ASP.NET 복제된 단계(예: 인증)를 제거합니다. 또한 통합 모드를 사용하면 관리되는 기능을 모든 콘텐츠 형식에 사용할 수 있습니다.

클래식 애플리케이션 풀 모드

애플리케이션 풀이 클래식 모드인 경우 IIS 7 이상은 IIS 6.0 작업자 프로세스 격리 모드와 동일한 방식으로 요청을 처리합니다. ASP.NET 요청은 먼저 IIS의 네이티브 처리 단계를 거치고 관리되는 런타임에서 관리 코드를 처리하기 위해 Aspnet_isapi.dll 라우팅됩니다. 마지막으로, 요청을 IIS를 통해 다시 라우팅되어 응답을 보냅니다.

IIS 및 ASP.NET 요청 처리 모델을 분리하면 인증 및 권한 부여와 같은 일부 처리 단계가 중복됩니다. 또한 Forms 인증과 같은 관리 코드 기능은 스크립트가 aspnet_isapi.dll 처리할 모든 요청을 매핑한 ASP.NET 애플리케이션에서만 사용할 수 있습니다.

프로덕션 환경을 IIS 7 이상으로 업그레이드하고 통합 모드의 애플리케이션 풀에 애플리케이션을 할당하기 전에 통합 모드에서 호환성을 위해 기존 애플리케이션을 테스트해야 합니다. 애플리케이션이 통합 모드에서 작동하지 않는 경우에만 클래식 모드의 애플리케이션 풀에 애플리케이션을 추가해야 합니다. 예를 들어 애플리케이션은 IIS에서 관리되는 런타임으로 전달된 인증 토큰을 사용할 수 있으며, IIS 7 이상의 새 아키텍처로 인해 프로세스가 애플리케이션을 중단합니다.

IIS의 HTTP 요청 처리

IIS 7 이상에는 IIS 6.0과 유사한 HTTP 요청 처리 흐름이 있습니다. 이 섹션의 다이어그램은 프로세스 중인 HTTP 요청에 대한 개요를 제공합니다.

다음 목록에서는 그림 1에 표시된 요청 처리 흐름을 설명합니다.

  1. 클라이언트 브라우저가 웹 서버에서 리소스에 대한 HTTP 요청을 시작하면 HTTP.sys 요청을 가로채는 것입니다.
  2. HTTP.sys 연락처 WAS에서 구성 저장소에서 정보를 가져옵니다.
  3. WAS는 applicationHost.config 구성 저장소에서 구성 정보를 요청합니다.
  4. WWW 서비스는 애플리케이션 풀 및 사이트 구성과 같은 구성 정보를 받습니다.
  5. WWW 서비스는 구성 정보를 사용하여 HTTP.sys 구성합니다.
  6. WAS는 요청이 수행된 애플리케이션 풀에 대한 작업자 프로세스를 시작합니다.
  7. 작업자 프로세스는 요청을 처리하고 HTTP.sys 응답을 반환합니다.
  8. 클라이언트가 응답을 받습니다.

다이어그램은 위에서 설명한 대로 사용자 모드의 요소와 상호 작용하는 커널 모드의 클라이언트를 보여줍니다.

그림 1: HTTP 요청 개요

작업자 프로세스에서 HTTP 요청은 Web Server Core에서 이벤트라는 여러 순서가 지정된 단계를 통과합니다. 각 이벤트에서 네이티브 모듈은 사용자 인증 또는 이벤트 로그에 정보 추가와 같은 요청의 일부를 처리합니다. 요청에 관리 모듈이 필요한 경우 네이티브 ManagedEngine 모듈은 AppDomain을 만듭니다. 여기서 관리되는 모듈은 Forms 인증을 사용하여 사용자를 인증하는 등 필요한 처리를 수행할 수 있습니다. 요청이 Web Server Core의 모든 이벤트를 통과하면 응답이 HTTP.sys 반환됩니다. 아래 그림 2에서는 작업자 프로세스를 입력하는 HTTP 요청을 보여줍니다.

다이어그램은 AppDomain에 연결된 네이티브 모듈에 연결된 웹 서버 코어를 포함하는 작업자 프로세스를 보여 줍니다.

그림 2: 작업자 프로세스 내의 HTTP 요청 세부 정보