... | ... | @@ -5,14 +5,14 @@ |
|
|
1. 다양한 언어와 라이브러리가 매끄럽게 함께 작동하는 실행 및 개발 환경을 구축하는 기준이 되는
|
|
|
Common language infrastructure (CLI) 규약을 Microsoft에서 구현한 것
|
|
|
2. .NET 애플리케이션을 개발하고 실행할 수 있는 환경 (Platform)
|
|
|
|
|
|
<br>
|
|
|
##### .NET Architecture is:
|
|
|
1. Multi-language를 지원한다.
|
|
|
2. Cross-platform을 지원한다.
|
|
|
3. CLR, FCL and JIT 기술을 바탕으로 한다.
|
|
|
|
|
|
![이미지 추가]
|
|
|
|
|
|
<br>
|
|
|
### Common language infrastructure (CLI)
|
|
|
<br>
|
|
|
1. Microsoft사에서 ECMA표준에 제출한 규약이다.
|
... | ... | @@ -25,12 +25,12 @@ |
|
|
5. CLI명세를 기반으로 .NET Framework에서 제공하는 Virtual Execution System을 CLR이라 한다.
|
|
|
6. CLI명세를 기반으로 만들어진 실행환경이 있다면, .NET Framework에서 생성되는 IL코드를 실행 할 수 있다.
|
|
|
(ex. 모노(mono)) <br><br>
|
|
|
|
|
|
<br>
|
|
|
##### Common type system (CTS) is:
|
|
|
1. 공용 언어가 지켜야 할 타입(클래스, 구조체, 인터페이스, 형 선언 등)의 표준 규격이다. 그렇다고 해서 문법은 아니다.
|
|
|
예를 들면 C#은 int8 형을 가지고 있고, VB.net은 integer형이 있다.
|
|
|
그런데 이것이 .net 컴파일러를 거치면서 CTS에서 정의된 INT32형태로 동일하게 사용이 된다
|
|
|
|
|
|
<br>
|
|
|
##### Common Language Specification (CLS) is:
|
|
|
1. CTS의 sub-set이며 공용언어간 호환이 되기 위해 준수해야 하는 최소한의 언어 규칙이다.
|
|
|
2. 공용 언어는 CTS전체를 구현할 필요는 없지만 CLS에 정의된 내용만큼은 구현을 해야 한다.
|
... | ... | @@ -39,7 +39,7 @@ |
|
|
* 다른 언어와 함께 사용되는 영역에 한해서만 CLS에 맞춰 구현할 수 있다.
|
|
|
4. 예를 들면 c++의 경우 다중상속을 지원하지만, .NET Framework에서는 다중상속을 지원하지 않는다.
|
|
|
따라서 다중상속으로 정의된 c++객체는 c#에서는 사용할 수 없다.
|
|
|
|
|
|
<br>
|
|
|
##### Meta-data is:
|
|
|
1. CLI에서 meta-data는 CTS에 정의된 타입을 참조하고 설명하기 위해 사용된다.
|
|
|
A. Type Descriptions
|
... | ... | @@ -59,19 +59,19 @@ |
|
|
2. 임의의 특정 언어에 독립적인 방식으로 저장(유지)된다.
|
|
|
3. Reflection이라는 실행 중에 클래스나 객체의 타입 정보를 조사하는 기능을 통해 meta-data를 사용할 수 있다.
|
|
|
이 기능을 사용하면 실행 중에 다른 모듈에 선언된 인스턴스를 생성할 수 있고 메서드를 호출할 수도 있다.
|
|
|
|
|
|
<br>
|
|
|
##### Virtual Execution System (VES) is:
|
|
|
1. CLI에 맞춰 작성된 프로그램을 로드하고 실행하는 시스템이다.
|
|
|
2. 코드가 실행함에 있어 필요로 하는 모듈들을 연결하기 위해 meta-data를 사용하여 manage code 및 data를 실행한다.
|
|
|
3. .NET Framework에서 CLR을 통해 제공한다.
|
|
|
|
|
|
<br>
|
|
|
##### Common Intermediate Language (CIL) is:
|
|
|
1. Virtual Execution System (VES)에 의해 해석되는 중간 언어로 자바의 byte-code에 해당한다.
|
|
|
2. machine독립적인 코드이다.
|
|
|
3. .NET Framework에서는 이를 MSIL로 부른다.
|
|
|
4. .NET Framework에서 source code가 타깃 머신의 native code로 변환되는 과정은 아래 그림과 같다.
|
|
|
![이미지 추가]
|
|
|
|
|
|
<br>
|
|
|
### CLR (Common Language Runtime)
|
|
|
<br>
|
|
|
CLI명세를 기반으로 Microsoft에서 작성한 Virtual Execution System을 CLR이라 한다.
|
... | ... | @@ -89,7 +89,6 @@ CLI명세를 기반으로 Microsoft에서 작성한 Virtual Execution System을 |
|
|
<br>
|
|
|
##### CLR Execution model
|
|
|
todo-이미지 추가
|
|
|
|
|
|
<br>
|
|
|
##### 실행 엔진
|
|
|
1. Compiles Microsoft Intermediate Language (MSIL) into native code
|
... | ... | @@ -97,7 +96,7 @@ todo-이미지 추가 |
|
|
3. Handles exception
|
|
|
4. Enforces code access security
|
|
|
5. Handles verification
|
|
|
|
|
|
<br>
|
|
|
##### CLR의 장점
|
|
|
1. Inter-operation between managed code and unmanaged code (COM, DLLs)
|
|
|
2. Managed code environment
|
... | ... | @@ -107,8 +106,7 @@ todo-이미지 추가 |
|
|
6. JIT allows the IL code to be hardware independent
|
|
|
7. CLR also allows for enforcement of code access security
|
|
|
8. Access to Metadata
|
|
|
|
|
|
|
|
|
<br>
|
|
|
### Framework Class Library (FCL) vs. Base Class Library (BCL)
|
|
|
<br>
|
|
|
The Base Class Library (BCL) is literally that, the base. It contains basic, fundamental types like System.String and System.DateTime.
|
... | ... | @@ -128,7 +126,6 @@ todo-이미지추가 |
|
|
2. CLR은 manifest 포함 된 정보를 기반으로 다양한 작업을 수행한다.
|
|
|
3. 보안 요구사항이 충족되면 CLR은 JIT(Just In Time) 컴파일을 수행하여 IL코드를(Native Code)로 변환 한다.
|
|
|
|
|
|
|
|
|
<br>
|
|
|
### Managed vs. Unmanaged
|
|
|
<br>
|
... | ... | @@ -149,7 +146,7 @@ todo-이미지추가 |
|
|
|
|
|
|
|
|
|
|
|
# .Net , C#, Visual Studio, OS
|
|
|
### .Net , C#, Visual Studio, OS
|
|
|
|
|
|
| .NET | 1.0 | 1.1 | 2.0 | 3.0 | 3.5 | 4.0 | 4.5 | 4.6 |
|
|
|
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
... | ... | |