Creative Commons License

Microsoft .NET

닷넷!시작하기
닷넷! Ver 2.0~
닷넷!스킬업
웹개발
윈폼개발
실용모듈개발
Tip & Tech
하루 한 문법

Microsoft .NET 개발자들을 위한 공간입니다. 기초강의에서 부터 고급 기술 정보 및 팁등을 다루도록 하겠습니다.

.

웹개발

이제 웹 기반 응용개발 지식은 거의 필수적으로 요구되는 시대입니다. 구체적인 웹 사이트 개발은 아니더라도 거시적인 웹 기반 서비스에 대한 지식 배양을 위해 할 것이 참 많네요 ^^

[IIS] 전역변수의 공유범위와 Worker Process와의 관계(응용프로그램의 물리적

작성자 : 박종명
최초 작성일 : 2008-05-07 (수요일)
최종 수정일 : 2008-05-07 (수요일)
조회 수 : 3387

Application 과 Session 과 같은 전역변수 값은 같은 웹 응용프로그램 단위에서만 공유된다.
아래 그림의 구조에서는 WebFormTest 하위와 Test 하위의 리소스들은 전역변수를 공유하게 된다.
그러나, Test2는 WebFormTest 하위이기는 하나 또 다른 웹 응용프로그램이기 때문에 WebFormTest와는
공유되지 않고 별도의 전역변수를 가지게 된다.


이것은 앞에서 살펴본 것과 같이 WebFormTest 와 Test2는 서로 다른 AppDomain 이기 때문이다.
단, 두 AppDomain은 하나의 Worker Process 에서 실행된다


IIS6.0 에 새롭게 등장한 응용프로그램 풀을 사용하면 Worker Process(w3wp.exe)를 여러 개 생성할 수 있다.
아래 그림의 3가지 풀을 각기 다른 웹 응용프로그램에 각각 설정을 하면w3wp.exe 가 3개가 생성된다.
Ex> WebSite1 : DefaultAppPool
      WebSite2 : TestAppPool
      WebSite3 : TestAppPool2



이것은 곧 서로 다른 웹 응용프로그램을 독립적인 프로세서 영역에서 실행되게 함으로써 하나의 프로세서 이상이
다른 프로세서에게 영향을 미치지 않는 구조를 만들 수 있다는 것을 의미한다.


시나리오>
WebSite1 : DefaultAppPool , WebSite2 : TestAppPool 로 설정.
WesSite1 과 WebSite2에 있는 특정 리소스(aspx)를 실행 시킨다(이 aspx파일은 Application 과 Session 을 할당하는 일을 한다). 작업 관리자를 보면 두 사이트의 리소스를 실행함과 동시에 w3wp.exe 가 두 개가 생성되는 것을 확인 할 수 있다.
이 중 어느 하나(w3wp.exe)를 강제로 프로세서 중지 시키거나 응용프로그램 풀을 중지한다.

결과>
두 사이트는 응용 프로그램 풀이 달라 서로 다른 프로세서에서 실행되기 때문에 중지된 w3wp.ex 에서 실행되던 웹사이트만이 Application과 Session 값을 잃게 되고 나머지 한 웹사이트는 여전히 Application 과 Session 값을 유지하고 있다. 만일 두 웹사이트가 하나의 응용프로그램에서 같이 실행되었다면 w3wp.exe 중지만으로 두 웹사이트의 모든 자원이 동시에 해제가 되었을 것이다. 

이로써 서로 다른 Worker Process 에서 웹 응용프로그램을 실행함으로써 독립성을 보장 받을 수 있다.              

이름
비밀번호
홈페이지
EL <- 왼쪽의 문자를 오른쪽 박스에 똑같이 입력해 주세요