상세 컨텐츠

본문 제목

.NET 용어정리

Others

by thankee 2013. 8. 18. 21:01

본문

Native Code
원시코드. 원시기계어를 말한다. 또는 기계어로 바로 번역되는 C++, C 등의 언어로 작성된 코드를 의미하기도 한다. 이러한 언어로 작성된 코드는 컴파일 과정을 통해 바로 기계어로 번역되며 이 기계어는 운영체제에 의해 직접 실행된다. Native Code로 분류되는 언어는 개발자가 직접 관리해야하는 것이 상대적으로 Managed Code보다 많지만 그 만큼 작성된 프로그램의 효율이나 성능이 뛰어나다. 성능이 매우 중요하게 고려되는 서버, 게임개발 쪽에서는 Native Code가 선호된다.
Managed Code
.NET CLR 또는 JVM에 의해 실행되고 관리되는 IL(중간언어)로 번역되는 코드. 많은 부분에서 개발자가 신경쓰지 않아도 CLR이나 JVM이 지원해주지만, 비교적 프로그램의 성능은 Native Code에 비해 느리다. 개발 생산성은 훨씬 뛰어나기 때문에 컴퓨터의 성능이 대폭향상된 최근에는 많은 부분에서 Managed Code가 각광받고 있다. (특히 Business Application 분야)
CLR (Common Language Runtime)
C#, VB 등의 CLS(Common Language Specification), CTS(Common Type System)를 준수하는 코드가 CLR Compile에 의해 IL(Intermediate Language)로 번역된다. 이 IL은 CLR에서 실행되고 관리된다. 즉 CLR은 IL을 실행하기 위한 환경이다. Java의 JVM에 대응된다. (최근에 각광받는 Unity C#도 이 CLR을 준수하여 개발된 언어이다. 따라서 Unity C#도 VisualStudio를 통해 개발&빌드할 수 있다. 그렇다고 .NET Platform과 통합되지 않았기 때문에 .NET과 호환되는 것은 아니다.)
CLS (Common Language Specification)
.NET 언어들이 서로 호환, 통합될 수 있도록 하기 위한 공용언어규정이라고 볼 수 있다. 이 CLS에 준수하여 작성된 언어는 CLS를 준수하여 작성된 어떤 언어와도 호환된다. 개발자는 .NET에서 동작하는 언어를 직접 개발할 수 도 있는데, 이 때 CLS를 준수하며 언어를 만들어야 C#, VB 등 다른 CLS를 준수하는 언어와 호환될 수 있다. 여기서 호환된다는 말은 C#, VB 등 CLS를 준수하는 코드끼리 서로 참조해서 호출할 수 있다는 말이다. (CLS는 반드시 지켜져야하는 사항이 아니라 단지 호환성을 위해 존재하는 규약이다.)
CTS (Common Type System)
.NET언어들이 사용하는 Type 체계. .NET의 모든 언어들은 동일한 Type System을 사용한다. 예전 .NET이 나타나기 이전에는 VB, C++ 등 언어마다 Type의 특징, 형태, 특징, 크기 등 상이했으나 .NET안에서 통합을 위해 VB, C++, C# 외 모든 .NET언어들은 모두 동일한 Type 체계인 CTS를 사용하도록 통합되었다.
CLR Compile
.NET Language Code를 IL로 번역하는 과정. IL은 CLR에 의해 실행되고 관리된다. C# Code는 csc.exe라는 CLR Compiler를 통해 IL로 번역된다.
JIT Compile (Just In Time)
IL이 실행되는 시점에 해당 플렛폼(OS, Processor 등 실행환경)에 맞는 기계어로 번역하는 것을 말한다. JIT Compiler는 CLR에 의해 실행된다. CLR은 주어진 IL에서 당장 필요한 부분만 선택하며 JIT Compiler를 통해 기계어로 번역하며 실행한다. 번역된 코드는 캐쉬에 보관되고 관리된다. 프로그램이 종료되면 캐쉬된 데이터도 모두 삭제된다.
BCL (Base Class Library)
.NET에서 제공되는 방대한 Class Library를 뜻한다.
IL (Intermediate Language)
중간언어로써 C#, VB같은 .NET 언어가 컴파일 된 결과물. 추후 JIT Compiler에 의해 기계어로 번역된다. Java에서는 Byte Code에 대응한다. CIL(Common Intermediate Language) 또는 MSIL이라고 부르기도 한다.
Ngen (Native Image Generator)
프로그램의 성능을 향상시키기 위한 방법입니다. Ngen.exe에 의해 .NET 언어로 작성된 코드를 기계어 이미지로 즉시 컴파일하며 캐쉬(Native Image Cache)에 저장됩니다. JIT Compiler를 이용하지 않고 캐시된 기계어 이미지(Native Image) 를 통해 즉시 로드됩니다. (참고: http://msdn.microsoft.com/en-us/library/6t9t5wcf.aspx )
.NET 언어 컴파일 및 실행과정
VB, C# Code > VB, C# Compiler > IL > .NET Runtime > JIT Compiler > Machinecode > Execution
CLR Compile CLR

관련글 더보기