닷넷 플랫폼
1. 닷넷 엔터프라이즈 서버(.NET Enterprise Server)
2. 비주얼 스튜디오 닷넷(Visual Studio .NET)
3. 닷넷 빌딩 블록 서비스(.NET Building Block Service)
4. 닷넷 사용자 경험(.NET User Experience) 및 닷넷 디바이스 소프트웨어(.NET Device Software)
닷넷 프레임워크(.NET Framework)
- 본래 운영체제 안에 닷넷 프레임워크라는 독립적으로 운영가능한 또 하나의 플랫폼 삽입
CLR(Common Language Runtime) - 공용언어런타임
- 닷넷 프레임워크에서 가장 핵심적인 요소
- Runtime : 한 언어로 작성된 어플리케이션이 실행하는 데 필요한 특성들을 구현해 놓은 것. 해당 어플리케이션이 실행될 때 런타임에서 제공하는 기본 기능을 이용해서 어플리케이션을 실행한다.
- CLR이 있으면 어떠한 운영체제에 및 하드웨어에서도 닷넷 코드 실행 가능
(자바의 VM과 유사)
MSIL(Microsoft Intermediate Language)
- 닷넷 컴파일러에 의해 생성된 코드
- Compile : 고급 언어를 기계어로 번역하는 과정
- 닷넷에서는 2단계의 컴파일 과정이 필요
1차 컴파일 : IL Code 생성(각 컴파일러)
2차 컴파일 : Machine Code 생성(JIT컴파일러 - Just In Time)
- IL의 확장자는 exe or dll
관리 되는 코드(Managed Code)
- 닷넷 언어로 개발된 코드를 컴파일러에 의해 생성된 결과물(MSIL)
- MSIL 내부에 실행코드 이외에 메타 데이터 저장(필요한 형정보, 메소드 시그니처정보, 참조 레퍼런스, 버전등..)
- 닷넷 프레임워크 상에서 실행 가능한 코드(CLR의 지원을 받는 코드)
관리 되지 않는 코드(Unmanaged Code)
- 실행되는데 닷넷 런타임이 필요없는코드
- 기존의 VB, C++등..
기본 클래스 라이브러리(Base Class Library)
- 닷넷을 지원하는 언어가 공통으로 사용하는 기본 클래스 라이브러리
즉 언어간의 우열이 없다
CLS(Common Language Specification)
- 닷넨용 프로그래밍 언어들이 가져야 하는 공통 언어 규약 : 중간언어(IL코드)를 만들기 위한 언어 규약
- CLR을 만족하면 관리되는 코드(닷넷용코드)가 생성
- CLS + CTS -> 언어의 상호 운용성 가능(Interoperability)
CTS(Common Data System)
- 닷넷 프레임 워크에서 사용되는 데이터 형식
- 모든 언어는 CTS 형태의 데이터 형식을 사용
: 각언어에서 데이터를 표현하는 형식만 다를 뿐 내부적으로는 CTS형태의 데이터형식을 사용한다.
- 언어간 상호 운용성을 유지하기 위해 반드시 필요
어셈블리(Assembly)
- 관리되는 코드를 배포하는 기본단위
- 설치의 기본단위
- IL code + Meta Data(실행파일의 정보, 예:버전정보등) : 일반적으로 다른 실행코드들은 별도로 레지스트리에 먼저 정보들을 등록을 하고 사용한다.
* 닷넷에서는 이름이 같은 DLL 사용가능, 버전별로로 참조가능 : 기존에는 DLL이름으로만 참조했기 때문에 동일한 이름을 사용할수 없다.
가비지 컬렉션(Garbage Collection)
- 닷넷 프레임 워크에서의 메모리 관리 담당
- 일정한 텀으로 비교를 하여 메모리 힙에서 더이상 사용되지 않는 객체를 제거하는 역할
- 개발자들이 메모리를 직접적으로 관리하지 않는다.
- 메모리 누수(Memory Leak)현상
- 명시적으로도 호출이 가능 (GC컬렉션으로 제공)
Visual Studio .NET IDE(Integrated Development Environment) : 통합개발환경
- 모든언어가 하나의 툴에서 지원
- 웹 저작 도구 제공
- 메타언어로 XML사용
[출처] [펌] [20040414] C#기초|작성자 눈꽃천사