.NET Framework
##### .NET Framework is: 1. 다양한 언어와 라이브러리가 매끄럽게 함께 작동하는 실행 및 개발 환경을 구축하는 데 기준이 되는 표준인 Common language infrastructure (CLI) 를 Microsoft에서 구현한 것 2. .NET 애플리케이션을 개발하고 실행할 수 있는 환경 (Platform) 3. Managed code의 실행을 제어하기 위한 환경
.NET Architecture is:
1. Multi-language를지원한다.
2. Cross-platform을지원한다.
3. CLR, FCL and JIT 기술을바탕으로한다.
4. .NET components는일반적으로확장명이.exe 또는.dll인어셈블리라는실행파일로디스크에저장된다.
Common language infrastructure (CLI)
##### Common language infrastructure (CLI) is: 1. Microsoft사에서 ECMA표준에 제출한 규약이다. 2. 실행 코드의 형태에 대한 명세를 제공한다. * Common type system (CTS): CLI규약을 따르는 모든 언어가 지켜야 할 타입의 규격 * Common language specification (CLS): CLI규약을 따르는 모든 언어가 지켜야 하는 최소한의 언어사양 * Meta-data 3. 실행 코드가 실제 실행되는 환경(Virtual Execution System)에 대한 명세를 제공한다. 4. CLI명세를 기반으로 생성되는 실행 코드를 CIL 혹은 IL이라 한다. 5. CLI명세를 기반으로 .NET Framework에서 제공하는 Virtual Execution System을 CLR이라 한다. 6. CLI명세를 기반으로 만들어진 실행환경이 있다면, .NET Framework에서 생성되는 IL코드를 실행 할 수 있다. (ex. 모노(mono))
Common type system (CTS) is:
- 공용 언어가 지켜야 할 타입(클래스, 구조체, 인터페이스, 형 선언 등)의 표준 규격이다. 그렇다고 해서 문법은 아니다.
- 예를 들면 C#은 int 형을 가지고 있고, VB.net은 integer형이 있다.
그런데 이것이 .net 컴파일러를 거치면서 CTS에서 정의된 INT32형태로 동일하게 사용이 된다
Common Language Specification (CLS) is:
- CTS의 sub-set이며 공용언어간 호환이 되기 위해 준수해야 하는 최소한의 언어 규칙이다.
- 공용 언어는 CTS전체를 구현할 필요는 없지만 CLS에 정의된 내용만큼은 구현을 해야 한다.
- 이를 통해 서로 다른 언어를 섞어서 프로그램을 만드는 것이 가능하다.
- 프로그램 전체를 CLS에 맞춰 구현할 수 있다.
- 다른 언어와 함께 사용되는 영역에 한해서만 CLS에 맞춰 구현할 수 있다.
- 예를 들면 c++의 경우 다중상속을 지원하지만, .NET Framework에서는 다중상속을 지원하지 않는다. 따라서 다중상속으로 정의된 c++객체는 c#에서는 사용할 수 없다.
Meta-data is:
-
CLI에서 meta-data는 CTS에 정의된 타입을 참조하고 설명하기 위해 사용된다.
A. Type Descriptions i.Classes ii.Base Classes iii.Implemented interface iv.Data members v.Methods B. Assembly manifest i.Name ii.Version iii.Culture 1.Other assemblies 2.Security permissions 3.Exported types
-
임의의 특정 언어에 독립적인 방식으로 저장(유지)된다.
-
Reflection이라는 기술을 통해 meta-data를 사용할 수 있다.
Virtual Execution System (VES) is:
- CLI에 맞춰 작성된 프로그램을 로드하고 실행하는 시스템이다.
- 코드가 실행함에 있어 필요로 하는 모듈들을 연결하기 위해 meta-data를 사용하여 manage code 및 data를 실행한다.
- .NET Framework에서 CLR을 통해 제공한다.
Common Intermediate Language (CIL) is:
- Virtual Execution System (VES)에 의해 해석되는 중간 언어로 자바의 byte-code에 해당한다.
- machine독립적인 코드이다.
- .NET Framework에서는 이를 MSIL로 부른다.
- .NET Framework에서 source code가 타깃 머신의 native code로 변환되는 과정은 아래 그림과 같다.