Microsoft .NET 개요 ② - 닷넷 환경 및 프로세스

 

  Last Modified 2007/11/28
  by ides
  http://tequiero35.egloos.com/



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 ides | 2007/11/28 15:14 | [P] Web Services | 트랙백 | 덧글(0)

트랙백 주소 : http://tequiero35.egloos.com/tb/1268115
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지다음 페이지 ▶