Общие сведения о метаданных

Обновлен: Ноябрь 2007

Метаданные — это данные в двоичном формате с описанием программы, хранящиеся либо в переносимом исполняемом (PE) файле среды CLR, либо в памяти. Когда код компилируется в PE-файл, метаданные помещаются в одну часть файла, а код преобразуется в промежуточный язык MSIL (Microsoft Intermediate Language) и помещается в другую часть файла. В метаданных дается описание каждого члена и типа, которые определены в модуле или сборке и на которые в них имеется ссылка. При исполнении кода среда выполнения загружает метаданные в память и обращается к ним для получения сведений о классах, членах, наследовании и других элементах кода..

В метаданных в независимом от языка виде описываются все типы и члены, определенные в коде. В метаданных хранятся следующие сведения.

  • Описание сборки.

    • `

      Удостоверение (имя, версия, язык и региональные параметры, открытый ключ).

    • Экспортируемые типы.

    • Другие сборки, от которых зависит данная сборка.

    • Необходимые разрешения безопасности.

  • Описание типов.

    • Имя, видимость, базовый класс и реализованные интерфейсы.

    • Члены (методы, поля, свойства, события, вложенные типы).

  • Атрибуты.

    • Дополнительные описательные элементы, изменяющие типы и члены.

Преимущества метаданных

Метаданные являются ключом к более простой модели программирования; они устраняют необходимость в файлах языка описания интерфейсов (IDL — Interface Definition Language), в файлах заголовков или в каких-либо внешних методах определения компонентов. Метаданные позволяют языкам .NET автоматически описывать себя независимо от языка, скрывая это от разработчика и пользователя. К тому же метаданные имеют возможности для расширения за счет использование атрибутов. Метаданные обеспечивают также следующие преимущества.

  • Файлы с самоописанием.

    Модули среды CLR и сборки обладают свойством самоописания. Метаданные модуля содержат все необходимое для взаимодействия с другим модулем. Метаданные автоматически обеспечивают возможности языка IDL в модели СОМ, позволяя использовать один файл, как для определения, так и для реализации. Модули и сборки среды выполнения даже не требуют регистрации в операционной системе. Благодаря этому описания, используемые средой выполнения, всегда отражают фактический код в скомпилированном файле, что повышает надежность приложения.

  • Взаимодействие языков и упрощение разработки на основе компонентов

    Метаданные содержат полные сведения о скомпилированном коде, необходимые для наследования класса из PE-файла, написанного на другом языке. Можно создать экземпляр класса, написанного на любом другом управляемом языке (это может быть любой язык, обращающийся к среде CLR), не беспокоясь о явной упаковке или настройке кода взаимодействия.

  • Атрибуты.

    .NET Framework позволяет пользователю объявлять особые виды метаданных, называемые атрибутами, в скомпилированном файле. Атрибуты находятся в .NET Framework и используются для более детального контроля над работой программы во время ее выполнения. Также с помощью атрибутов в файлы .NET Framework можно вносить пользовательские метаданные, определяемые самим пользователем. Дополнительные сведения см в разделе Расширение метаданных с помощью атрибутов.

См. также

Другие ресурсы

Метаданные и компоненты с самоописанием

Расширение метаданных с помощью атрибутов