2007년 11월 28일
Microsoft .NET 개요 ② - 닷넷 환경 및 프로세스
Last Modified |
1. CTS & CLS
+ .NET에서 언어의 호환성을 위한 도구
- CTS (Common Type System) : .NET 환경에서 데이터의 형을 관리하는 시스템.
.NET에서 이해할 수 있는 데이터 형인지 테스트, 검증 관리하는 역할을 한다. - CLS (Common Language Specification) : CTS 에서 지원하는 언어의 일반적인 규약을 정의.
.NET 을 위한 모든 컴파일러가 지원해야 하는 표준 규약.
즉, CTS와 IL 을 지원하기 위한 최소한의 규약.
cf. CLS 규격 코드 작성 : CLS 규격 코드나 CLS 규격 개발 도구(예: 컴파일러) 중 어느 것에 대한 설명인지에 따라 그 의미가 다르다. CLS 규격 도구를 사용하면 CLS 규격 코드를 작성할 수 있다.
CLSCompliantAttribute를 사용하여 어셈블리, 모듈, 형식 및 멤버가 CLS 규격인지 여부를 표시할 수 있다. CLSCompliantAttribute를 사용하는 예제는 링크(CLS 규격 코드 작성) 참조.
2. 기계어와 중간언어(IL : Intermediate Language)
+ .NET managed assembly (= assembly)
: 중간 언어 형태의 .exe 나 .dll 파일들을 C#에서는 어셈블리라 한다.
메타 데이터(Meta Data), 매니페스트(Manifest), 리소스(Resource) 로 구성되어진다.
- Meta Data : 컴파일러에서 MSIL을 생성하면 메타데이터도 생성된다.
클래스의 모든 정보(모든 형식의 정의, 형식 멤버의 시그니처, 코드에서 참조하는 멤버, 실행 시 런타임에서
사용하는 기타 데이터)를 갖고 있다. 이 정보들을 포함해 코드에 있는 형식을 설명한다.
- Manifest : 어셈블리 자체에 대한 정보를 보유하고 있다.

- PE 파일 : MSIL 과 메타 데이터가 들어있다.
* 실행 프로세스:
- 컴파일러 선택 : CLR에서 제공하는 장점을 이용하려면 런타임을 대상으로 하는 하나 이상의 언어 컴파일러를 사용해야 한다.
- 코드를 MSIL(Microsoft Intermediate Language)로 컴파일 : 소스 코드가 MSIL로 변환되고 필요한 메타데이터가 생성된다.
- MSIL을 네이티브 코드로 컴파일 : 실행 시 JIT(Just-In-Time) 컴파일러는 MSIL을 네이티브 코드로 변환한다. 이 컴파일 중에 MSIL과 메타데이터를 검사하여 코드의 형식이 안전한지 확인하는 확인 프로세스를 코드가 통과해야 한다.
- 코드 실행 : CLR에서는 실행 중에 사용할 수 있는 다양한 서비스 뿐만 아니라 실행을 가능하게 해주는 인프라를 제공한다.
3. Java 와 .NET
- Java
- 인터프리트 방식으로 Byte Code를 해석해서 실행한다.
- C#, VB.NET
- JIT 컴파일러에 의해 재컴파일해서 실행한다.
4. CLR 의 구성요소와 역할
구성 요소 | 역 할 |
Class Loader | 클래스를 로딩하고 Metadata를 관리한다. |
IL to Native Compiler | JIT 컴파일러에 해당. IL을 Native Code로 컴파일한다. |
Code Manager | 코드 실행을 관리. |
Garbage Collector | 모든 개체의 라이프타임을 자동으로 관리. |
Security Engine | 코드의 보완을 담당. |
Debug Engine | 코드의 실행 추적과 응용 프로그램의 디버그를 수행. |
Type Checker | Type 안정성을 담당. 불완전한 Type 캐스팅, 초기화하지 않은 변수의 사용을 막음. |
Exception Manager | 예외 처리를 담당. |
COM Marshaler | COM 과 마샬링을 제공 |
Base Class Library Support | 코드와 기본 라이브러리를 제공하는 런타임을 통합. |
<REFERENCE>
http://blog.naver.com/mssql2000/100034868578
http://blog.naver.com/mssql2000/100035065773
http://msdn2.microsoft.com/ko-kr/library/k5532s8a.aspx
# by | 2007/11/28 15:14 | [P] Web Services | 트랙백 | 덧글(0)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]