Метаданные и компоненты с самоописанием
В прошлом программный компонент (EXE или DLL), написанный на одном языке, не мог просто так использовать программный компонент, написанный на другом языке. Модель COM стала шагом вперед в решении этой проблемы. Платформа .NET Framework упрощает взаимодействие компонентов, позволяя компиляторам добавлять дополнительные описательные данные во все модули и сборки. Эти данные, называемые метаданными, способствуют эффективному взаимодействию компонентов.
Метаданные — это данные в двоичном формате с описанием программы, хранящиеся либо в переносимом исполняемом (PE) файле среды CLR, либо в памяти. Когда код компилируется в PE-файл, метаданные помещаются в одну часть файла, а код преобразуется в MSIL и помещается в другую часть файла. В метаданных описываются все типы и члены, определенные или используемые в модуле или сборке. При исполнении кода среда выполнения загружает метаданные в память и обращается к ним для получения сведений о классах, членах, наследовании и других элементах кода..
В метаданных в независимом от языка виде описываются все типы и члены, определенные в коде. В метаданных хранятся следующие сведения.
Описание сборки.
Удостоверение (имя, версия, язык и региональные параметры, открытый ключ).
Экспортируемые типы.
Другие сборки, от которых зависит данная сборка.
Необходимые разрешения безопасности.
Описание типов.
Имя, видимость, базовый класс и реализованные интерфейсы.
Члены (методы, поля, свойства, события, вложенные типы).
Атрибуты.
- Дополнительные описательные элементы, изменяющие типы и члены.
Преимущества метаданных
Метаданные — это ключ к более простой модели программирования; они устраняют необходимость в файлах IDL, файлах заголовков или каких-либо внешних методах ссылки на компоненты. Метаданные позволяют языкам платформы .NET Framework автоматически описывать себя не зависящим от языка образом незаметно для разработчика и пользователя. К тому же метаданные имеют возможности для расширения за счет использование атрибутов. Метаданные обеспечивают также следующие преимущества.
Файлы с самоописанием.
Модули среды CLR и сборки обладают свойством самоописания. Метаданные модуля содержат все необходимое для взаимодействия с другим модулем. Метаданные автоматически предоставляют функциональные возможности IDL для модели СОМ, в связи с чем один и тот же файл может использоваться и для определения, и для реализации. Модули и сборки среды выполнения даже не требуют регистрации в операционной системе. Благодаря этому описания, используемые средой выполнения, всегда отражают фактический код в скомпилированном файле, что повышает надежность приложения.
Взаимодействие языков и упрощение разработки на основе компонентов
Метаданные содержат полные сведения о скомпилированном коде, необходимые для наследования класса из PE-файла, написанного на другом языке. Можно создать экземпляр класса, написанного на любом другом управляемом языке (это может быть любой язык, обращающийся к среде CLR), не беспокоясь о явной упаковке или настройке кода взаимодействия.
Атрибуты.
Платформа .NET Framework позволяет объявлять особые виды метаданных, называемые атрибутами, в скомпилированном файле. Атрибуты находятся в .NET Framework и используются для более детального контроля над работой программы во время ее выполнения. Также с помощью атрибутов в файлы .NET Framework можно вносить пользовательские метаданные, определяемые самим пользователем. Дополнительные сведения см. в разделе Расширение метаданных с помощью атрибутов.
Связанные разделы
Заголовок |
Описание |
---|---|
Описание раздельного хранения метаданных и кода MSIL в PE-файле. |
|
Демонстрация использования метаданных во время выполнения на примере кода. |
|
Описание способов применения атрибутов, написания настраиваемых атрибутов и извлечения данных, хранящихся в атрибутах. |