본문 바로가기

C#

[C#] .NET Framework & C#에 대한 이해

Tool -> Code -> Compile -> execute

 

C# C++

CLS : 닷넷 기반 언어들이 공통적으로 지켜야 하는 언어 규약

XML, Winform 등 : 마크업 언어 지원, Winform 형태의 프로젝트

BCL : 베이스 클래스 라이브러리

CLR : 공통 언어 환경 - C# 언어의 개발 및 실행 환경

OS : 운영체제

 

프레임워크 : 제품을 만들 수 있는 환경을 갖춘 공장

라이브러리 : 제품을 만들기 위해 가져다 쓰는 도구

닷넷 프레임워크 : C# 제품을 개발하기 위한 공장

CLR(공용 언어 런타임) : 컴파일과 실행을 가능하게 하는 가상 환경

닷넷 계열 언어 : 닷넷 프레임워크 기반으로 동작하는 언어

CLS(공용 언어 스펙) : 닷넷 계열 언어가 준수해야 하는 규격

 

어떤 언어로 작성하든 CLS를 준수하는 닷넷 계열 언어들은 동일한 형태의 IL(중간 언어)로 컴파일 되고 CLR(공용 언어 런타임)을 통하여, 실행 파일로 변환 및 실행

 

.NET Framework가 설치되면, CLR이라는 일종의 가상 머신이 설치되는데 이 CLR이라는 가상 머신 위에서 C# 코드를 실행

 

CLS(.NET Framework 언어가 지켜야 하는 언어 표준 규약)를 지키는 언어라면 어떤 언어라도 CLR 위에서 실행이 가능

 

개발자가 C#으로 코딩을 하고 실행하기 위해서는 컴파일을 거쳐야 하는데, 이때 C# 컴파일러가 실행된다.(다른 언어라면 다른 컴파일러가 동작한다)

 

어느 언어를 사용하든, 컴파일된 IL 코드는 같다.

컴파일이 완료되면 MSIL(Microsoft Intermediate Language / 중간 언어)로 변환된다.

여러가지 언어를 지원하기 위한 것으로, 다른 언어들도 공통적으로 중간 언어로 변환된다.

 

IL 코드 안에는 Meta Data와 Manifest 파일이 포함되어 있다.

(Manifest 안에는 어셈블리의 형식, 버전, 보안 요구 사항에 대한 정보들이 포함되어 있다)

 

그리고 프로그램이 실행될 때 이 IL 코드는 CLR에 있는 JIT Compiler에 의해 컴파일 되어 (JIT 컴파일 - 실행할때마다 실시간으로 컴파일해서 실행) 해당 플랫폼에 맞는 원시코드로 변환되어 실행된다.