.Net 관련 Terminology

닷넷 프레임워크

image

  • MS에서 개발한 윈도우 프로그램 개발 및 실행환경
  • 프로그램이 구동하도록 지원해주는 뼈대 역할
  • 빌드부터 배포, 웹서비스, 웹어플리케이션 구동까지 지원하는 공통 환경
  • C# 컴파일러가 IL로 생성한 뒤, 실행 파일 내부에 CLR을 로드하는 코드를 추가
    • 이에 CLR이 로드된 후 파일 내의 IL 코드를 Native Code로 변환

닷넷 호환 언어

  • MSIL 중간코드로 컴파일할 수 있는 모든 언어
    • CLR은 IL로 이루어진 코드라면 모두 실행이 가능
    • IL은 CPU(플랫폼)에 독립적인 결과물
  • C#, Visual Basic, #F 등

공용 타입 시스템 Common Type System

  • 닷넷 호환 언어의 타입 표준 규격
  • 닷넷 호환 언어를 제작하는 경우, 언어 지원에 필요한 CTS는 모두 따라야 한다
    • 이 규격을 벗어나는 새로운 타입을 생성할 수 없다

공용 언어 규약 Common Language Specification

  • 닷넷 지원의 최소한의 언어 사양
  • CTS는 언어에 필요한 정도만 지원하면 되지만, 이는 최소 사양이므로 반드시 충족해야 한다

공용 언어 기반구조 Common Language Infrastructure

image

  • MS에서 ECMA 표준으로 제출한 공개 규약
    • MS .NET Framework, Mono 등의 실행코드와 런타임 환경을 설명하기 위한 오픈 규격
  • CLI는 CTS 명세를 포함한 중간 언어에 대한 코드 정의 메타데이터, 이진 파일의 구조까지 표준 사양으로 기술
  • 앱 개발과 실행 시 언어에 종속적이지 않은 플랫폼을 제공하기 위함
  • MS가 개발한 CLI가 CLR

공통 중간 언어 Common Intermediate Language

  • .Net에 호환되는 언어는 플랫폼 독립적인 언어로 컴파일 되는데, 이것이 IL이다
    • 바이트 코드로 변환된다
    • 객체 지향 어셈블리어이며 완전한 스택 기반이다
  • 공통 중간 코드는 실행되는 동안 안전 여부를 확인함으로써 보안성 및 신뢰도가 높다

공용 언어 런타임 Common Language Runtime

  • MS가 개발한 CLI를 따르는 Virtual Machine 중 하나
  • Window 용으로만 배포
  • MSIL을 JIT 컴파일러를 이용해 네이티브로 변환하는 기능
  • Garbage Collector를 통해 동적 메모리를 관리하는 기능
  • 플랫폼에 특화된 CLR은 1차로 컴파일된 IL을 기계어로 다시 컴파일한다
    • 이제 컴파일된 이 기계어는 해당 플랫폼에서 작동할 수 있다

메타데이터

  • 데이터를 위한 데이터
  • 개발자가 구현한 코드를 데이터화한 것
    • 코드를 설명해주는 별도의 데이터 -> 메타데이터
  • CLR은 자기 서술적인 메타데이터를 제공
    • 외부에서는 Reflection이라는 기술을 통해 사용
  • IL 코드와 함께 메타데이터도 생성해 최종 파일에 포함

어셈블리

  • C#으로 생성된 exe/dll 타입의 실행 파일

모듈

  • 하나의 어셈블리는 1개 이상의 모듈로 구성된다
  • 매니페스트
    • 모듈의 목록을 관리
    • 모듈 중 하나는 반드시 다른 모듈의 목록을 관리하는 매니페스트를 관리한다
  • 매니페스트를 포함하지 않는 모듈 확장자를 netmodule이라 한다
  • 매니페스트를 포함하면 exe 혹은 dll이다
  • 3자가 제공하는 어셈블리 코드를 사용하려면 메니페스트가 포함된 모듈과 그에 관련된 모듈을 모두 가지고 있어야 한다

출처