* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна!
Двоичные файлы .NET
31 марта 2009
Когда с помощью компилятора для платформы .NET создается модуль с расши- рением . d l l или .ехе, содержимое этого модуля представляет сборку на промежу- точном языке (IL). Назначение IL аналогично байт-коду Java — он компилируется в специфичные для платформы команды только при необходимости, т.е. когда к блоку команд IL обраща- ется среда исполнения .NET. Помимо команд IL, двоичные модули .NET содержат также метаданные, которые подробно описывают все типы, использованные в модуле. Например, если у вас внутри сборки есть некоторый класс, то в метаданных этой сборки будет содержаться информа- ция о базовом классе для этого класса, данные о том, какие интерфейсы предусмотрены для него, а также полное описание всех методов, свойств и событий этого класса. Во многих отношениях метаданные .NET являются значительным усовершенство- ванием по сравнению с классической информацией о типах в СОМ. Классические двоичные файлы СОМ обычно описываются с помощью ассоциированной библиоте- ки типов. Проблема с информацией о типах в СОМ заключается в том, что никто не может гарантировать вам, что эта информация окажется полной, так как за создание этих данных отвечает профаммист. В отличие от СОМ, метаданные в среде .NET ав- томатически генерируются компилятором, создающим приложение, и поэтому явля- ются исчерпывающе полными. В метаданных .NET содержится информация абсолют- но обо всех типах, которые используются в сборке (классах, структурах, перечислени- ях и т.д.), а также о каждом свойстве, методе или событии каждого типа.
Еще одно отличие метаданных .NET от информации СОМ заключается в том, что в метаданных .NET перечислены все ссылки на внешние модули и сборки, которые потребуются для нормального выполнения сборки .NET. За счет этого можно считать сборки .NET полностью самодокументируемыми. В результате, например, отпадает необходимость регистрировать двоичные файлы .NET в системном реестре. Метаданные описывают не только типы, используемые в сборке, но и саму сборку. Эта часть метаданных называется манифестом. В манифесте содержится информация о текущей версии сборки, об использованных ограничениях по безопасности, о под- держиваемом языке (английском, русском и т.д.), а также список всех внешних сбо- рок, которые потребуются для нормального выполнения профаммы. В подавляющем большинстве случаев двоичный файл .NET и сборка — это одно и то же. И если говорится о DLL-библиотеке для .NET, то понятия "двоичный файл" и "сборка" являются синонимами. Но сборка может состоять как из одного, так и из нескольких двоичных файлов. В сборке из одного файла содержатся и манифест, и метаданные, и команды IL. В сборке из нескольких двоичных файлов каждый дво- ичный файл называется модулем. При создании таких многофайловых сборок один из двоичных файлов должен содержать манифест сборки (в нем могут также находиться и другие данные, в том числе команды IL). Все остальные модули могут содержать только метаданные типов и команды IL. Единственная причина для создания многофайловой сборки — это большая гибкость при развертывании приложения. Например, если пользователь обращается к удаленной сборке, которая должна быть зафужена на его локальный компьютер, среда исполнения зафузит лишь те модули сборки, которые действительно необходимы. Такое решение позволит избежать ненужного сетевого трафика и увеличит скорость работы профаммы.