|
|
### .NET Framework
|
|
|
.NET Framework는 MS에서 발표한 응용 프로그램 개발 환경이다. 각종 응용 프로그램을 작성 및 실행 해주는 걸 도와줌으로써 <br /> 개발자가 응용 프로그램의 비즈니스 코드에만 집중할 수 있게 도와준다. .Net의 계층구조는 다음과 같다.
|
|
|
.NET Framework는 MS에서 발표한 응용 프로그램 개발 환경이다. 각종 응용 프로그램을 작성 및 실행 해주는 걸 도와줌으로써
|
|
|
개발자가 응용 프로그램의 비즈니스 코드에만 집중할 수 있게 도와준다. .NET의 계층구조는 다음과 같다.
|
|
|
<br />
|
|
|

|
|
|
<br />
|
... | ... | @@ -15,11 +16,40 @@ MS에서 특정 기능들을 바로 쓸 수 있게 구현해 놓은 클래스들 |
|
|
|
|
|
|
|
|
### CLR
|
|
|
CLR(Common Language Runtime)은 CLI(Common Language Infrastructure, MS에서 제출한 중간 언어에 대한 코드를 정의하는 규약)의 사양을 따르는
|
|
|
CLR(Common Language Runtime)은 CLI 사양을 따르는 가상 머신이다. CLR은 주 기능은 다음과 같다.
|
|
|
1. IL 코드를 JIT 컴파일러를 이용해 기계어로 바꿔준다.
|
|
|
2. 가비지 콜렉터를 이용해 동적 메모리 할당 및 회수를 한다.
|
|
|
|
|
|
<br />
|
|
|
|
|
|
**CLR이 중요한 이유 :**
|
|
|
그 어떤 .NET 호환 언어를 사용해서 코드를 작성하더라도, CLS 규격을 만족한다면 다양한 언어의 결과물 끼리 상호 호출이 가능하다. 컴파일러가 IL코드로 변환하여 CLR에서 실행하기 때문이다. CLR은 윈도우용 CLI 구현체이고, 리눅스의 경우에는 Mono를 쓴다. CLS 규격을 만족한다면 플랫폼 독립적인 IL코드로 변환하여 각 플랫폼의 CLI구현체를 거쳐 다양한 플랫폼에서 작동하는 프로그램을 만들 수 있다.
|
|
|
|
|
|
### CTS
|
|
|
CTS란?
|
|
|
CTS(Common Type System)은 .NET 호환 언어들이 지켜야 할 Type과 표준 규격을 정의한 것이다.
|
|
|
|
|
|
***
|
|
|
**CLI, CTS, CLS, CLR의 정의와 관계를 다시 한 번 정리하면**
|
|
|
CLI(Common Language Infrastructure) : 공용 언어 기반구조
|
|
|
CTS(Common Type System) : 공용 타입 시스템
|
|
|
CLS(Common Language Specification) : 공용 언어 사양
|
|
|
CLR(Common Language Runtime) : 공용 언어 런타임
|
|
|
|
|
|
다음과 같은 관계를 형성하고 있다.
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
### 어셈블리
|
|
|
어셈블리란?
|
|
|
어셈블리(Assembly)는 .NET에서의 실행파일(주로 EXE, DLL 파일)을 말한다.
|
|
|
|
|
|
어셈블리는 1개 이상의 모듈로 구성되는데, 모듈 하나당 한 개의 파일이 대응된다. 하지만 여러개의 파일이 어셈블리를 구성한다면 이 파일들의 목록을 관리하는 데이터가 필요하다. 그 때문에 이 모듈 중의 하나는 다른 모듈의 목록을 관리하는 매니페스트(Manifest) 데이터를 갖고있다.
|
|
|
|
|
|
>>>
|
|
|
EXE 와 DLL의 차이
|
|
|
DLL의 내부에 구현된 API는 외부에서 참조 할 수 있지만 EXE는 불가능하다. 그래서 재사용 가능한 코드는 컴파일해서 DLL 파일에 모아두고 서로 다른 EXE에서 공유해서 사용하는 방식이 일반적이다.
|
|
|
>>>
|
|
|
|
|
|
### Managed
|
|
|
Managed란?
|
|
|
### Unmanaged
|
... | ... | |