티스토리 뷰
2. 닷넷 프레임워크 & CLR
1. 닷넷 프레임워크(.NET Framework)
닷넷 프레임워크는 다양한 클라이언트(데스크탑, 모바일, 등)와 다양한 응용 프로그램(웹 서비스, 리모팅 서비스, 닷넷 응용 프로그램 등)에 대한 닷넷 환경을 통합적으로 제공한다. 또, 응용 프로그램이나 웹 서비스의 제작(build), 배포(deploy), 운영(develop)을 위해 제공된 환경이다.
닷넷 프레임워크는 CLR(Common Language Runtime Runtime), BCL(Base Class Libarry), Data and XML, Web/Window Form, CLS(Common Language Specification)으로 구성되어 있다.
BCL, Data and XML, Web/Window Form을 FCL(Framwork Class Library)이라고 한다.
2. CLS(Common Language Specification)
CLS은 어떤 프로그래밍 언어로 프로그램밍을 해도 공통 언어로 변환(1차 컴파일)되도록 만드는 공통 언어 스펙이다. CLR에서 사용되는 자료형에 대한 공통 형식 스펙, CTS(Common Type Specification)도 제공한다.
프로그래밍을 하고 컴파일(1차)을 하면 IL(Intermediate Language)이라는 중간 언어로 변환되는데, 여기서 IL이란 1차 컴파일되어 CLS의 규칙을 준수하는 공통 언어로 만들어진 것을 말한다.
3. FCL(Framwork Class Library)
FCL은 웹/윈도우 및 ADO.NET, 그리고 웹 서비스에 필요한 필수 라이브러리를 제공하며, BCL를 이용해서 컴포넌트 형식으로 제공한다. FCL은 방대한 클래스 라이브러리이기에 새로 만들지 말고 잘 활용해야 한다.
4. CLR(Common Language Runtime Runtime)
CLR의 이름은 CLS 규격을 따르는 모든 언어로 작성된 프로그램을 지원하기 때문에 지어졌다. CLR은 자바의 실행 환경인 자바 가상 머신과 비슷한 역할을 한다. CLR의 장점은 플랫폼에 최적화된 코드 생성하는 것이고, 단점은 실행했을 때 이루어지는 컴파일 비용의 부담을 가진다는 것이다.
네이티브 코드로 작성되어 있는 프로그램들은 운영체제가 직접 실행 가능하지만, C# 컴파일러가 만들어낸 실행 파일은 운영체제가 이해할 수 없는 코드로 구성되어 있기에 실행이 불가능하다.
그래서 C# 컴파일러는 C# 소스 코드를 앞에서 언급한 IL로 작선된 실행 파일을 만들어 낸다. 사용자가 파일을 시행할 시, CLR이 IL를 읽어(1차 컴파일) 다시 OS가 이해할 수 있는 네이티브 코드로 2차 컴파일을 한 후 실행하게 되는데, 이를 JIT(Just In Time) 컴파일이라고 부른다. 우리말로는 적시 컴파일이라고 한다. 1
C#이 동작하는 환경이자 엔진인 CLR은 C#뿐만 아니라 다른 언어도 지원하도록 설계되어 있고, 서로 다른 언어들이 만나기 위한 지점이 IL이라는 중간 언어이다. 이 언어로 쓰여진 코드를 CLR이 다시 자신이 설치되어 있는 플랫폼에 최적화시켜 컴파일한 후 실행된다.
CLR은 단순히 C#이나 기타 언어들을 동작시키는 환경 기능 외에도 프로그램의 예외가 발생했을 때 이를 처리하도록 도와주는 기능, 언어간의 상속 지원, COM과의 상호 운영성 지원, 자동 메모리 관리 등의 기능, 등도 제공한다. 이 중 자동 메모리 관리, 즉 가비지 컬렉션(Garbage Collection)은 프로그램에서 더 이상 사용하지 않는 메모리를 쓰레기(Garbage)로 간주하고 수거(Colloction)하는 기능을 말한다.
- 실행에 필요한 코드를 실행할 때마다 실시간으로 컴파일해서 실행한다는 뜻 [본문으로]
'SW > C#' 카테고리의 다른 글
[ 초보자를 위한 C# 200제 ] C#_003 (0) | 2018.03.20 |
---|---|
[ 초보자를 위한 C# 200제 ] C#_002 (0) | 2018.03.19 |
[ 초보자를 위한 C# 200제 ] C#_001 (0) | 2018.03.19 |
C#_3. 데이터, 값 형식과 참조 형식, 그리고 스택과 힙 (0) | 2018.03.15 |
C#_1. 기본 틀 이해하기 (0) | 2018.03.13 |
- Total
- Today
- Yesterday
- 뇌를 자극하는 C# 5.0 프로그래밍
- 기계적 추론
- 메서드
- 프로그램
- 프로그래밍
- 이광근
- c#
- 유니티 기초
- 컴퓨터과학
- 컴퓨터과학이 여는 세계
- 계산기
- 두 수 입력
- 영화
- 비전공자
- 기본개념
- 초보
- 앨런 튜링
- 수리 명제 자동판결 문제
- 나눗셈
- 컴퓨터의 시초
- c
- 동적
- 독서
- 에니그마
- 정수
- 초보자를 위한 C# 200제
- dynamic
- 튜링
- 오버플로우
- 서울대
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |