임태현, iis with asp.net

24
IIS with ASP.NET IO Studio 기기기기기

Upload: -

Post on 13-Apr-2017

109 views

Category:

Engineering


7 download

TRANSCRIPT

Page 1: 임태현, IIS with ASP.NET

IIS with ASP.NETIO Studio 기술세미나

Page 3: 임태현, IIS with ASP.NET

발표자

임태현

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

Page 4: 임태현, IIS with ASP.NET

ASP.NET 과 웹서버

ASP.NET 은 호스팅 할 수 있는 웹서버가 필요

WebDev.WebServer.exe– VisualStudio 에서 ASP.NET 어플리케이션을 호스팅

Page 5: 임태현, IIS with ASP.NET

웹서버의 기본 형태

클라이언트가 정보 요청

서버가 요청을 받음

처리결과를 클라이언트로 전달

Page 6: 임태현, IIS with ASP.NET

IISInternet Information ServerASP.NET 을 호스트 할 수 있는 웹 서버중 하나 자체적으로 ASP.NET 을 처리할 수 있는 모듈 탑재

Page 7: 임태현, IIS with ASP.NET

IIS 핵심 모듈• Worker Process• Application Pool

Page 8: 임태현, IIS with ASP.NET

Worker Process• W3WP.EXE• ASP.NET 응용프로그램을 실행

– 모든 ASP.NET 함수는 Work Process 안에서 실행

• 클라이언트에 응답을 작성

Page 9: 임태현, IIS with ASP.NET

Application Pool• 워커프로세스를 환경을 공유하는 단위로 나누어서 관리• 보안과 확장성을 위한 구조

– 프로세스간 격리

Page 10: 임태현, IIS with ASP.NET

IIS 계층 구성• Kernel Mode• User Mode

Page 11: 임태현, IIS with ASP.NET

Kernel mode클라이언트로부터의 리퀘스트를 수신해당 클라이언트에게 응답을 반환

네트워크와 프로토콜 관련 작업 처리

Page 12: 임태현, IIS with ASP.NET

HTTP.SYS• 유저 리퀘스트가 오면 제일 먼저 HTTP.SYS 에 도착• 어느 어플리케이션 풀로 전달하지는 HTTP.SYS 가 결정

Page 13: 임태현, IIS with ASP.NET

HTTP.SYS 어플리케이션 풀• HTTP.SYS 는 워커프로세스에 대한 리퀘스트를 관리 • 어플리케이션풀 하나당 하나의 리퀘스트 큐 • HTTP.SYS 는 URI 기준으로 라우팅 테이블 작성• 라우팅 테이블을 기준으로 어플리케이션 풀을 결정

Page 14: 임태현, IIS with ASP.NET

User Mode어플리케이션 프로세스를 실행ASP.NET 관련 라이브러리 실행

사용자 코드 관련 작업 처리는 여기에서 !

Page 15: 임태현, IIS with ASP.NET

WAS• Web Administration Service• 리퀘스트를 어플리케이션 풀에 전달• 어플리케이션 풀을 관리• 웹 환경 설정을 관리

Page 16: 임태현, IIS with ASP.NET

W3WP.EXE워커프로세스를 관리

– 워커 프로세스 실행– 리퀘스트 전달

Page 17: 임태현, IIS with ASP.NET

ISAPI• Internet Server Application Program Interface• CGI 의 단점을 개선하고 성능 개선을 위해 제안

– CGI : 어플리케이션 풀마다 별도로 모듈을 적재– ISAPI : 공용 모듈이 별도의 메모리공간에 적재

Page 18: 임태현, IIS with ASP.NET

ASPNET_ISAPI.DLL• W3WP.EXE 가 ASP.NET 환경을 사용하기 위해서

ASPNET_ISAPI.DLL 라는 ISAPI 모듈을 등록

• Aspnet_regiis.exe 로 수동등록 가능

Page 19: 임태현, IIS with ASP.NET

HTTPRuntime워커 프로세스가 aspnet_isapi.dll 로드 후 시작ProcessRequest 함수가 엔트리포인트

Page 20: 임태현, IIS with ASP.NET

HttpContext• ProcessRequest 함수 호출시

생성• 리퀘스트 처리 동안 계속 유지 • Session 과 같은 객체의 접근

통로

Page 21: 임태현, IIS with ASP.NET

HttpPipeline모든 리퀘스트는 지정된 모듈들을 통과하여야 한다모듈의 목록과 순서는 어플리케이션에서 정의

Page 22: 임태현, IIS with ASP.NET

HttpHandler• 파이프라인의 엔드포인트• 리퀘스트가 HttpHandler 에 이르르면 응답을 반환

– Ex) 웹페이지에 대한 요청이 왔다면 핸들러는 html 을 반환

Page 23: 임태현, IIS with ASP.NET

정리

리퀘스트를 HTTP.SYS 가 받음WAS 에 전달하여 어플리케이션 풀 할당워커 프로세스에 전달ISAPI 로드후 HTTPRuntime 실행

파이프라인을 통과하면서 모듈들 처리

ASP.NET 웹 페이지 호출

Page 24: 임태현, IIS with ASP.NET

Q & A

감사합니다