메타데이터 및 자동 기술 구성 요소
이전에 한 가지 언어로 작성된 소프트웨어 구성 요소(.exe 또는 .dll)는 다른 언어로 작성된 소프트웨어 구성 요소를 쉽게 사용할 수 없었습니다. COM은 이러한 문제를 해결하기 위한 단계를 제공했습니다. .NET Framework는 컴파일러가 모든 모듈과 어셈블리에 추가 선언 정보를 내보낼 수 있도록 하여 구성 요소 상호 운용성을 훨씬 더 쉽게 만듭니다. 메타데이터라고 하는 이 정보는 구성 요소가 아무런 문제 없이 원만하게 상호 작용할 수 있도록 하는 데 도움이 됩니다.
메타데이터는 프로그램을 기술하는 이진 정보이며 공용 언어 런타임 PE 파일 또는 메모리에 저장됩니다. 코드를 PE 파일로 컴파일하면 메타데이터는 PE 파일의 한 부분에 삽입되고 해당 코드는 MSIL(Microsoft Intermediate Language)로 변환되어 파일의 다른 부분에 삽입됩니다. 모듈 또는 어셈블리에서 정의되고 참조된 모든 형식과 멤버는 메타데이터 내에 기술됩니다. 코드를 실행하면 런타임은 메타데이터를 메모리로 로드한 다음 참조하여 해당 코드의 클래스, 멤버, 상속 등에 대한 정보를 검색합니다.
메타데이터는 언어와 무관하게 코드에 정의된 모든 형식과 멤버를 기술하며 다음과 같은 정보를 저장합니다.
어셈블리 기술 내용
ID(이름, 버전, 문화권, 공개 키)
내보낸 형식
이 어셈블리가 종속된 다른 어셈블리
실행하는 데 필요한 보안 권한
형식 기술 내용
이름, 표시 여부, 기본 클래스 및 구현된 인터페이스
멤버(메서드, 필드, 속성, 이벤트, 중첩 형식)
특성
- 형식과 멤버를 수정하는 추가 설명적 요소
메타데이터의 이점
메타데이터는 더욱 간편한 프로그래밍 모델의 주요 요소이며 IDL(인터페이스 정의 언어) 파일, 헤더 파일 또는 구성 요소 참조의 외부 메서드를 사용하지 않아도 되게 합니다. 메타데이터를 사용하면 .NET Framework 언어는 개발자와 사용자 모두 알지 못한 채 언어와 무관하게 자동으로 자신을 기술할 수 있습니다. 또한 특성을 사용하여 메타데이터를 확장할 수 있습니다. 메타데이터는 다음과 같은 중요한 이점을 제공합니다.
자동 기술 파일
공용 언어 런타임의 모듈과 어셈블리는 자동으로 기술됩니다. 모듈의 메타데이터에는 다른 모듈과 상호 작용하는 데 필요한 모든 요소가 있습니다. 메타데이터는 하나의 파일만 사용하여 정의와 구현을 모두 수행할 수 있도록 COM의 IDL 기능을 자동으로 제공합니다. 런타임 모듈과 어셈블리를 운영 체제에 등록할 필요도 없습니다. 결과적으로 런타임에 사용된 기술 내용은 항상 컴파일된 파일의 실제 코드를 반영하므로 응용 프로그램의 안정성이 높아집니다.
언어 상호 운용성 및 간편해진 구성 요소 기반 디자인
메타데이터는 다른 언어로 작성된 PE 파일에서 클래스를 상속하기 위해 컴파일된 코드에 대해 필요한 모든 정보를 제공하므로 명시적 마샬링을 고려하거나 사용자 지정 상호 운용성 코드를 사용할 필요 없이 관리되는 언어(공용 언어 런타임 기능이 있는 언어)로 작성된 클래스의 인스턴스를 만들 수 있습니다.
특성:
.NET Framework에서는 특성이라고 하는 특정 종류의 메타데이터를 컴파일된 파일에 선언할 수 있습니다. 특성은 .NET Framework 전체에서 선언할 수 있으며 프로그램이 런타임에 동작하는 방식을 좀 더 자세하게 제어하기 위해 사용됩니다. 또한 사용자 지정 특성을 사용하여 사용자 지정 메타데이터를 .NET Framework 파일로 내보낼 수 있습니다. 자세한 내용은 특성을 사용하여 메타데이터 확장을 참조하십시오.
관련 항목
제목 |
설명 |
---|---|
메타데이터가 PE 파일의 MSIL(Microsoft intermediate language)과 별도로 저장되는 방법에 대해 설명합니다. |
|
런타임에 메타데이터 사용을 코드 예제와 함께 보여 줍니다. |
|
특성을 적용하고, 사용자 지정 특성을 작성하고, 특성에 저장된 정보를 검색하는 방법에 대해 설명합니다. |