임태현, iis with asp.net

Post on 13-Apr-2017

109 Views

Category:

Engineering

7 Downloads

Preview:

Click to see full reader

TRANSCRIPT

IIS with ASP.NETIO Studio 기술세미나

발표자

임태현

마비노기를 비롯한 여러 프로젝트에서 서버 개발자로 참여현재 머신러닝 및 데이터 분석 관련 작업 중

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