본문 바로가기

IT/ASP/ASP.NET

[ASP.NET] ASP.NET Execution Model

역시 Execution Model Process에 관한 이미지와 간략한 절차만을 기록함.

Taeyo님의 ASP.NET의 Execution Model에 대한 강좌를 참고하였음. 




.NET의 구체적인 Execution Model

 

 ① Compilation

   개발자가 입력한 소스코드가 Compiler와 MetaData Engine에 의해 MSIL+MetaData로 컴파일됨

   연결된 다른 어셈블리가 존재할 경우 Linker를 통해 하나의 EXE 또는 DLL로 만들어짐

 ② Execution

   프로그램이 실행시 Class Loader에 의해 클래스 레이아웃이 잡히고, BCL로부터 기본 클래스들을

   로드하여 JIT(Just-In-Time) Compiler를 통해 직접 실행될 수 있는 Native Code로 컴파일됨


 ※ .NET Execution Model은 두 번의 Compile을 거침 (Source Code - IL - Native Code)


ASP.NET의 Execution Model

 

① 클라이언트로부터의 요청 및 서버의 aspx파싱

   웹서버는 요쳥받은 파일을 찾아 확장자를 확인  

   확장자가 aspx라면 연결된 DLL(ASP.NET)에게 넘김

   ASP.NET은 파일의 컴파일 전 단계로 라인 단위의 파싱작업을 수행함

 ② 컴파일

   파싱된 문서는 Compiler에 의해 Assembly IL의 형태로 컴파일 … 첫번째 컴파일

   컴파일된 EXE 또는 DLL은 웹서버의 어셈블리 캐쉬에 저장

 ③ 수행 및 결과 반환

   캐쉬의 IL을 메모리로 올림, CLR의 JIT Compiler에 의해 컴파일 … 두번째 컴파일

   컴파일된 Native Code가 수행되어 결과물(대부분 동적html) 산출, 클라이언트에게 반환


Assembly Cache와 Output Cache의 역할

  

 - 좌) Assembly Cache 적용, 우) Output Cache의 적용

- ASP.NET이라는 웹 프로그래밍의 특성상 제공

 - 해당 문서로의 첫번째 요청으로 인한 컴파일 후, 결과물을 Cache에 보관

 - 해당 문서에 대한 수정이 없는 한 같은 문서에 대한 요청은 Cache의 내용물 반환 (컴파일 과정 생략)

 - 수정사항이 발생할 경우 ASP.NET은 Cache의 결과를 삭제하고 재컴파일하여 다시 Cache에 업로드

 - Output Cache도 동일한 역할 수행. 이 경우 파싱, 컴파일, 런타임컴파일 단계 전부를 생략