C Sharp/C# 개념 : 실행순서 , CLR과 클래스 라이브러리


출처 :  

msdn - https://msdn.microsoft.com/ko-kr/library/k5532s8a(v=vs.110).aspx & https://msdn.microsoft.com/ko-kr/library/8bs2ecf4(v=vs.110).aspx 

sololearn - https://www.sololearn.com/Play/CSharp


 C#은..

- 객체지향언어

- .NET Framework 위에서 돌아간다.

  └ .NET Framework는 ( 1. CLR(Common Language Runtime) , 2. 클래스 라이브러리 ) 로 구성되어 있다.



 C# 프로그램에서 관리되는 실행 프로세스 

1. 컴파일러 선택.   
    공용 언어 런타임(CLR)에서 제공되는 이점을 얻으려면 런타임을 대상으로 지정하는 언어 컴파일러를 하나 이상 사용해야 합니다.
2. 코드를 MSIL로 컴파일.   
    컴파일을 통해 소스 코드가 MSIL(Microsoft Intermediate Language)로 변환되고 필요한 메타데이터가 생성됩니다.
3. MSIL을 네이티브 코드로 컴파일.   

실행 시간에 JIT(Just-In-Time) 컴파일러MSIL을 네이티브 코드로 변환합니다. 이 컴파일 중에 코드는 MSIL 및 메타데이터를 검사하여 코드가 형식 안전 코드로 판별되는지 확인하는 확인 프로세스를 통과해야 합니다.

4. 코드 실행.   
    공용 언어 런타임(CLR)은 실행을 가능하게 하는 인프라와 실행 중에 사용할 수 있는 서비스를 제공합니다.



.NET Framework

.NET Framework는 두가지로 구성되어 있다.

1. CLR(Common Language Runtime)

- 성능 향상
- 다른 언어로 개발된 구성 요소를 쉽게 사용할 수 있는 기능
- 상속, 인터페이스, 개체 지향적인 프로그래밍을 위한 오버로딩 등과 같은 언어 기능
- 확장 가능한 다중 스레드 응용 프로그램을 만들 수 있도록 해주는 명시적 자유 스레딩에 대한 지원
- 구조적 예외 처리에 대한 지원
- 사용자 지정 특성에 대한 지원
- 가비지 수집(Garbage Collector)
- 향상된 형식 안정성과 보안을 위해 함수 포인터 대신 대리자(delegate) 사용.
- 관리 코드에 서비스 제공

메타데이터를 내뱉는다. 메타데이터는 크게 3가지를 갖고 있단다.
    1. 코드
    2. 사용자 코드의 형식
    3. 멤버 및 참조 설명이 들어있음

메타데이터를 사용하여 ...
    클래스를 찾고 로드
    메모리에 인스턴스를 배치
    메서드 호출을 확인
    네이티브 코드를 생성
    보안을 강화하며
    런타임 컨텍스트 경계를 설정


2. 클래스 라이브러리

- 클래스와 인터페이스들의 조합
- 사용자로 하여금 (데이터 수집, 파일 접근, 문자작업)과 같은 공통 프로그래밍작업을 가능하게 하는 값 형태.
- 씨샵 프로그램은 (공통 작업과 다양한 기능들을 하기 위해) .NET Framework 클래스 라이브러리를 광범위하게 쓴다.

 


.NET Framework의 구성요소 도식화

 

'C#' 카테고리의 다른 글

C#: 속성 (property)  (0) 2017.06.04
C#의 뼈대 : namespace,class,struct,interface,delegate,enum  (0) 2017.06.04

+ Recent posts