임태현, iis with asp.net
Post on 13-Apr-2017
105 Views
Preview:
TRANSCRIPT
IIS with ASP.NETIO Studio 기술세미나
시작하기 앞서 …
Beginner’s Guide: How IIS Process ASP.NET Reques위의 포스트를 필요에 맞게 재구성
발표자
임태현
마비노기를 비롯한 여러 프로젝트에서 서버 개발자로 참여현재 머신러닝 및 데이터 분석 관련 작업 중
ASP.NET 과 웹서버
ASP.NET 은 호스팅 할 수 있는 웹서버가 필요
WebDev.WebServer.exe– VisualStudio 에서 ASP.NET 어플리케이션을 호스팅
웹서버의 기본 형태
클라이언트가 정보 요청
서버가 요청을 받음
처리결과를 클라이언트로 전달
IISInternet Information ServerASP.NET 을 호스트 할 수 있는 웹 서버중 하나 자체적으로 ASP.NET 을 처리할 수 있는 모듈 탑재
IIS 핵심 모듈• Worker Process• Application Pool
Worker Process• W3WP.EXE• ASP.NET 응용프로그램을 실행
– 모든 ASP.NET 함수는 Work Process 안에서 실행
• 클라이언트에 응답을 작성
Application Pool• 워커프로세스를 환경을 공유하는 단위로 나누어서 관리• 보안과 확장성을 위한 구조
– 프로세스간 격리
IIS 계층 구성• Kernel Mode• User Mode
Kernel mode클라이언트로부터의 리퀘스트를 수신해당 클라이언트에게 응답을 반환
네트워크와 프로토콜 관련 작업 처리
HTTP.SYS• 유저 리퀘스트가 오면 제일 먼저 HTTP.SYS 에 도착• 어느 어플리케이션 풀로 전달하지는 HTTP.SYS 가 결정
HTTP.SYS 어플리케이션 풀• HTTP.SYS 는 워커프로세스에 대한 리퀘스트를 관리 • 어플리케이션풀 하나당 하나의 리퀘스트 큐 • HTTP.SYS 는 URI 기준으로 라우팅 테이블 작성• 라우팅 테이블을 기준으로 어플리케이션 풀을 결정
User Mode어플리케이션 프로세스를 실행ASP.NET 관련 라이브러리 실행
사용자 코드 관련 작업 처리는 여기에서 !
WAS• Web Administration Service• 리퀘스트를 어플리케이션 풀에 전달• 어플리케이션 풀을 관리• 웹 환경 설정을 관리
W3WP.EXE워커프로세스를 관리
– 워커 프로세스 실행– 리퀘스트 전달
ISAPI• Internet Server Application Program Interface• CGI 의 단점을 개선하고 성능 개선을 위해 제안
– CGI : 어플리케이션 풀마다 별도로 모듈을 적재– ISAPI : 공용 모듈이 별도의 메모리공간에 적재
ASPNET_ISAPI.DLL• W3WP.EXE 가 ASP.NET 환경을 사용하기 위해서
ASPNET_ISAPI.DLL 라는 ISAPI 모듈을 등록
• Aspnet_regiis.exe 로 수동등록 가능
HTTPRuntime워커 프로세스가 aspnet_isapi.dll 로드 후 시작ProcessRequest 함수가 엔트리포인트
HttpContext• ProcessRequest 함수 호출시
생성• 리퀘스트 처리 동안 계속 유지 • Session 과 같은 객체의 접근
통로
HttpPipeline모든 리퀘스트는 지정된 모듈들을 통과하여야 한다모듈의 목록과 순서는 어플리케이션에서 정의
HttpHandler• 파이프라인의 엔드포인트• 리퀘스트가 HttpHandler 에 이르르면 응답을 반환
– Ex) 웹페이지에 대한 요청이 왔다면 핸들러는 html 을 반환
정리
리퀘스트를 HTTP.SYS 가 받음WAS 에 전달하여 어플리케이션 풀 할당워커 프로세스에 전달ISAPI 로드후 HTTPRuntime 실행
파이프라인을 통과하면서 모듈들 처리
ASP.NET 웹 페이지 호출
Q & A
감사합니다
top related