반응형
그냥 정리해 보는 차원에서 혼자 막 지껄여 보기로 했다. (그래서 계속 반말로한다..)
혹시라도 잘못 알고 있거나 한 부분있으면 리플 달아주시면 참 고마울 것 같다.

** .NET 이란 무엇인가?
이건 실무에 있어선 크게 중요하지 않다고 생각되지만, 기본 개념을 잡는다는 생각으로 끄적여 본다.

어떤 자료에는 플랫폼 독립적인 개발환경이라고 나오지만, 내가 보기엔 새로운 플랫폼에 가까운것 같다. 자바의 virtual machine처럼 OS 윗단에서 동작하면서 OS 독립적인 운영이 가능하게 해주어 결국은 플랫폼 독립적인 - OS에 종속되는 플랫폼 종속적인 - 환경을 구축해 주는 것으로 보인다.

이 닷넷이란 녀석을 보면 새로운 용어가 몇가지 나오는데, CLS, CLR, JIT, CTS가 그 예일 것이다..

뭐 어렵게 생각하지 말자.. CLS는 어쩌구 저쩌구 스팩.. 즉 규격이란 이야기고, CTS는 어쩌고 타입 시스템 으로 형식만 맞추면 돌아간다는 이야기이다. 이 둘은 어찌보면 COM의 개념이 확장된것으로 봐도 될 것 같다.
그리고 CLR과 JIT 이것은 자바의 virtual machine의 개념을 가지고 온 것으로 보여진다. - 본인은 아주 독실한 VC개발자라서 자바는 대충밖에 모른다. CLR이란 녀석은 코드를 작성해서 바이너리를 만들어 실행할 때, 닷넷 이전의 윈도우 어플이 만드는 PE포멧과 같은 것이 아닌, MSIL 혹은 IL이라 불리는 중간언어로 만들어 놨다가 실제 실행시 JIT라는 녀석이 순간 PE포멧과 같이 바로 샐행 가능한 녀석으로 재 컴파일 하여 실행한다는 이야기다. 즉, CLR은 닷넷이 이해할 수 있는 정도까지만 만들어 주는것이고, JIT란 녀석이 실제로 플렛폼이 이해할 수 있도록 만들어 주는 것이란 소리다. 헤깔리는가? CLR은 소위 말하는 닷넷 플렛폼이 알아먹을 수 있게 만들어주는 거고, JIT는 윈도우 OS가 알아먹을 수 있게 만들어주는 것으로 보면 될꺼다. 왜 이렇게 만들었는지는 닷넷이 윈도우 종속적인 플랫폼이 아닌 범용 프랫폼을 겨냥해서 만들어졌기 때문으로 보여진다.

 

구성 요소

역할

Class Loader

클래스를 로딩하고 메타데이터(Metadata) 관리한다.


IL to Native Compiler


JIT 컴파일러에 해당하고, 중간언어(IL) 원시코드(Native Code) 컴파일한다.


Code Manager


코드 실행을 관리


Garbage Collector


모든 개체의 라이프타임을 자동으로 관리


Security Engine


코드의 보완을 담당


Debug Engine


코드의 실행 추적과 응용 프로그램의 디버그를 수행


Type Checker


Type 안정성을 담당함. 불완전한 Type 캐스팅, 초기화하지 않은 변수의 사용을 막음


Exception Manager


예외 처리를 담당 


COM Marshaler


COM 마샬링을 제공


Base Class Library Support



코드와 기본 라이브러리를 제공하는 런타임을 통합

뭐 위와 같은 녀석들이 있다는데, 나중에 필요하면 그때 봐도 될것 같다.


오랜 경력은 아니지만, 개발하면서 느꼈던 것은 언젠가는 이론적인 내용이 발목을 잡는다는 것이었다. 그래서 이론도 끄적였다.. 하지만, 초반부터 너무 이론에만 매달리면 아마 학교때 교과서처럼 순간 chapter 1만 까맣게 변해 한쪽 구석에 처박혀 있는 책을 발견하게 될것이다.

반응형

+ Recent posts