메타데이터 개요

업데이트: 2007년 11월

메타데이터는 프로그램을 기술하는 이진 정보이며 공용 언어 런타임 PE 파일 또는 메모리에 저장됩니다. 코드를 PE 파일로 컴파일하면 메타데이터는 PE 파일의 한 부분에 삽입되고 해당 코드는 MSIL(Microsoft Intermediate Language)로 변환되어 파일의 다른 부분에 삽입됩니다. 모듈 또는 어셈블리에서 정의되고 참조된 모든 형식과 멤버는 메타데이터 내에 기술됩니다. 코드를 실행하면 런타임은 메타데이터를 메모리로 로드한 다음 참조하여 해당 코드의 클래스, 멤버, 상속 등에 대한 정보를 검색합니다.

메타데이터는 언어와 무관하게 코드에 정의된 모든 형식과 멤버를 기술하며 다음과 같은 정보를 저장합니다.

  • 어셈블리 기술 내용

    • ID(이름, 버전, 문화권, 공개 키)

    • 내보낸 형식

    • 이 어셈블리가 종속된 다른 어셈블리

    • 실행하는 데 필요한 보안 권한

  • 형식 기술 내용

    • 이름, 표시 여부, 기본 클래스 및 구현된 인터페이스

    • 멤버(메서드, 필드, 속성, 이벤트, 중첩 형식)

  • 특성

    • 형식과 멤버를 수정하는 추가 설명적 요소

메타데이터의 이점

메타데이터는 IDL(인터페이스 정의 언어) 파일, 헤더 파일 또는 구성 요소 참조의 외부 메서드를 사용할 필요가 없는 더욱 간편한 프로그래밍 모델의 주요 요소입니다. 메타데이터를 사용하면 .NET 언어는 개발자와 사용자 모두 알지 못한 채 언어와 무관하게 자동으로 자신을 기술할 수 있습니다. 또한 특성을 사용하여 메타데이터를 확장할 수 있습니다. 메타데이터는 다음과 같은 중요한 이점을 제공합니다.

  • 자동 기술 파일

    공용 언어 런타임의 모듈과 어셈블리는 자동으로 기술됩니다. 모듈의 메타데이터에는 다른 모듈과 상호 작용하는 데 필요한 모든 요소가 있습니다. 메타데이터는 COM의 IDL 기능을 자동으로 제공하므로 한 가지 파일만 사용하여 정의와 구현을 모두 수행할 수 있습니다. 런타임 모듈과 어셈블리를 운영 체제에 등록할 필요도 없습니다. 결과적으로 런타임에 사용된 기술 내용은 항상 컴파일된 파일의 실제 코드를 반영하므로 응용 프로그램의 안정성이 높아집니다.

  • 언어 상호 운용성 및 간편해진 구성 요소 기반 디자인

    메타데이터는 다른 언어로 작성된 PE 파일에서 클래스를 상속하기 위해 컴파일된 코드에 대해 필요한 모든 정보를 제공하므로 명시적 마샬링을 고려하거나 사용자 지정 상호 운용성 코드를 사용할 필요 없이 관리되는 언어(공용 언어 런타임 기능이 있는 언어)로 작성된 클래스의 인스턴스를 만들 수 있습니다.

  • 특성

    .NET Framework에서는 특성이라고 하는 특정한 형식의 메타데이터를 컴파일된 파일에 선언할 수 있습니다. 특성은 .NET Framework 전체에서 선언할 수 있으며 프로그램이 런타임에 동작하는 방식을 좀 더 자세하게 제어하기 위해 사용됩니다. 또한 사용자 지정 특성을 사용하여 사용자 지정 메타데이터를 .NET Framework 파일로 내보낼 수 있습니다. 자세한 내용은 특성을 사용하여 메타데이터 확장을 참조하십시오.

참고 항목

기타 리소스

메타데이터 및 자동 기술 구성 요소

특성을 사용하여 메타데이터 확장