ASP.NET은 웹 응용 프로그램을 구축하기 위한 매우 강력한 플랫폼으로 모든 유형의 웹 응용 프로그램을 구축하는 데 사용할 수 있도록 뛰어난 유연성과 기능을 제공합니다.
대부분의 사람들은 ASP.NET 계층 구조의 최상위에 있는 WebForms 및 WebServices와 같은 상위 수준 프레임워크에만 익숙합니다.
이 기사의 정보는 다양한 Microsoft 공개 문서에서 수집 및 편집된 것입니다. IIS, IIS5, IIS6 및 IIS7의 3세대 요청 처리 프로세스를 비교함으로써 ASP.NET의 기본 메커니즘을 익히고 방법을 이해할 수 있습니다. 요청은 웹에서 처리됩니다. 서버는 ASP.NET 런타임과 통신합니다. 기본 메커니즘을 이해함으로써 ASP.net에 대해 더 깊이 이해할 수 있습니다.
IIS 5의 ASP.net 요청 처리 프로세스IIS 5.x의 주목할만한 기능은 웹 서버와 실제 ASP.NET 응용 프로그램을 분리한다는 것입니다. 웹 서버로서 IIS는 InetInfo.exe라는 프로세스에서 실행됩니다. InetInfo.exe는 기본 실행 프로그램이며 실제 ASP.NET 응용 프로그램은 aspnet_wp라는 작업자 프로세스에서 실행됩니다. 프로세스가 초기화되었으므로 이는 관리되는 환경입니다.
ISAPI: 다양한 접미사를 처리할 수 있는 응용 프로그램을 나타냅니다. ISAPI는 Internet Server Application Programe Interface, Internet Server Application Programing Interface의 약어입니다.
IIS 5 모드의 특징:1. 첫째, 하나의 aspnet_wp 프로세스만 동일한 호스트에서 동시에 실행될 수 있습니다. 가상 디렉터리를 기반으로 하는 각 ASP.NET 응용 프로그램은 응용 프로그램 도메인에 해당합니다. 즉, 각 응용 프로그램은 동일 작업자 프로세스에서 애플리케이션 간의 격리는 프로세스가 아닌 애플리케이션 도메인을 기반으로 합니다.
2. 둘째, ASP.NET ISAPI는 aspnet_wp 작업자 프로세스 생성뿐 아니라 프로세스 모니터링도 담당합니다. aspnet_wp의 성능이 설정된 하한값 이하로 떨어지는 것이 감지되면 ASP.NET ISAPI가 책임을 지게 됩니다. 프로세스를 종료합니다. aspnet_wp가 종료되면 후속 요청으로 인해 ASP.NET ISAPI가 새 aspnet_wp 작업자 프로세스를 다시 만듭니다.
3. 마지막으로 IIS와 응용 프로그램은 자체 프로세스에서 실행되므로 이들 간의 통신에는 특정 통신 메커니즘을 사용해야 합니다. 기본적으로 IIS가 있는 InetInfo 프로세스와 작업자 프로세스 간의 통신은 동일한 시스템에 있는 서로 다른 프로세스 간의 통신(로컬 프로세스 간 통신)입니다. 성능을 고려하여 둘 사이에는 명명된 파이프를 기반으로 하는 통신 메커니즘이 사용됩니다. ASP.NET ISAPI와 작업자 프로세스 간의 통신은 이들 사이의 파이프 집합을 통해 구현됩니다. 또한 성능상의 이유로 ASP.NET ISAPI는 요청을 작업자 프로세스에 비동기 방식으로 전송하고 응답을 얻지만 작업자 프로세스는 ASP.NET ISAPI에서 일부 서버 기반 변수를 동기 방식으로 얻습니다.
IIS6의 ASP.net 요청 처리 프로세스IIS 5.x는 InetInfo.exe를 통해 요청을 모니터링하고 작업 프로세스에 요청을 배포합니다. 즉, IIS 5에서는 요청의 모니터링 및 배포를 담당합니다. : http.sys가 담당합니다.
참고: 사용자 응용 프로그램이 중요한 운영 체제 데이터에 액세스하거나 수정하는 것을 방지하기 위해 Windows는 사용자 모드와 커널 모드라는 두 가지 프로세서 액세스 모드를 제공합니다. 일반적으로 사용자 프로그램은 사용자 모드에서 실행되는 반면 운영 체제 코드는 커널 모드에서 실행됩니다. 커널 모드의 코드는 모든 시스템 메모리와 모든 CPU 명령에 대한 액세스를 허용합니다.
사용자 모드에서 http.sys는 aspx 기반 http 요청을 받은 다음 IIS의 메타베이스에 따라 요청 기반 응용 프로그램이 속한 응용 프로그램 풀을 확인합니다. 응용 프로그램 풀이 없으면 만듭니다. 그렇지 않으면 요청이 애플리케이션 풀에 해당하는 대기열로 직접 전송됩니다.
각 응용 프로그램 풀은 확실히 사용자 모드에서 실행되는 작업자 프로세스인 w3wp.exe에 해당합니다. 응용 프로그램 풀과 작업자 프로세스의 매핑은 IIS 메타베이스에서 유지됩니다. 이러한 매핑을 기반으로 WAS(웹 관리 서비스)는 응용 프로그램 풀 큐에 존재하는 요청을 해당 작업자 프로세스에 전달합니다. 그렇지 않은 경우 해당 프로세스를 생성합니다. 작업자 프로세스가 초기화되면 ASP.NET ISAPI가 로드되고 ASP.NET ISAPI가 CLR을 로드합니다. 최종 프로세스는 IIS 5.x와 동일합니다. AppManagerAppDomainFactory의 Create 메서드를 통해 애플리케이션용 애플리케이션 도메인을 생성하고 ISAPIRuntime의 ProcessRequest를 통해 요청을 처리한 다음 해당 프로세스를 ASP.NET Http Runtime Pipeline에 입력합니다.
IIS 7의 ASP.net 요청 처리 프로세스