1. .Net Framewrok
운영체제와 닷넷 프레임워크
- 과거에 각 운영체제에 닷넷 프레임워크를 추가해서 사용했으나
- 닷넷 프레임워크가 운영체제 안으로 들어가서 대부분의 OS에서 사용가능
구성요소
- 클래스 라이브러리와 CLR(Common Langugage Runtime)
![](https://velog.velcdn.com/images/insung_na/post/6ef47292-569c-423c-bff5-db5126eb130b/image.png)
클래스 라이브러리
- BCL(Basic Class Library): 기본 클래스
- Window Form: 윈도우 응용 프로그램 제작을 위한 클래스 라이브러리
- ASP.NET: 웹 클래스 라이브러리
- ADO.NET: 데이터베이스 클래스 라이브러리
CLR(Common Language Runtime)
- 컴파일된 C# 코드(.exe)를 실행하는 역할
- MSIL, IL, Common Intermediate Language, CIL, 중간언어
- 닷넷 프레임워크의 장점은 대부분의 기기에서 사용가능한 것이다
- 코드를 컴파일하면 생성되는 코드로 각 CPU와 OS에 맞는 코드를 생성함
*용어 알기
- *.exe, *.dll을 실행파일이 아닌 어셈블리 라고 한다
CTS와 CLS
Common Type System
- 공통 데이터형과 형식 정의
- int => System.Int32
- float => System.Single
Common Lanuguage Specifiaction
- 공통 언어 사양 정의
- 닷넷 언어가 지켜야 할 최소 코드 규칙
2. C# 언어에 대한 개요
C# 언어
- C# 언어 = C++ 언어 기반 + java 장점
- 사용범위
- XML, Web, Network, 데이터베이스, 게임, IoT 등
- C#은 포인터를 거의 사용하지 않는다
- 객체 생성 new는 있지만 해제는 없다
- 메모리 관리는 Garbage Collector가 담당
C# 프로그램 실행 과정
![](https://velog.velcdn.com/images/insung_na/post/f6993ef9-2d82-4533-b4df-e445b385deef/image.png)
![](https://velog.velcdn.com/images/insung_na/post/53059f1e-8de1-4479-bf68-070fb8d70a76/image.png)
3. 정리
- 닷넷 프레임워크의 구성 요쇼와 역할 이해
BCL
, IL
, CLR
, JIT
, CTS
등...
- 컴파일부터 실행까지의 과정을 이해
- 인문학 서작 읽기 추천
4. 닷넷 환경의 컴파일 과정
JIT(Just-In-Time) 컴파일
- C/C++로 작성된 프로그램은 정적인 네이티브 코드(.exe, .dll)를 생성해 배포하기 때문에 빠르다
- Java, C#과 같은 언어들은 컴파일러가 생성한
IL
코드를 가지고 있다가 프로그램 실행 시에 CLR
코드를 해석해서 동적인 네이티브 코드를 생성하게 된다
- 이러한 가상머신에 의한 런타임 컴파일 방식을
JTL
컴파일 이라고 한다
- 그렇기 때문에 첫 수행이 아주 느리고, 이후 수행부터는 빠른 속도를 갖게 된다
AOT(Ahead-Of-Time) 컴파일
JIT
컴파일 방식의 느린 속도를 해결하기 위해 만들어진 컴파일 방식
- 목표 시스템의 기계어와 무관하게 중간 언어 형태로 배포된 후 목표 시스템에서
인터프리터
나 JIT
컴파일 등 기계여 번역을 통해 실행되는 중간 언어를 미리 목표 시스템에 맞는 기계어로 번역하는 방식
5. References