역시 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도 동일한 역할 수행. 이 경우 파싱, 컴파일, 런타임컴파일 단계 전부를 생략 |