Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Одномодульные и многомодульные компоновочные блоки
Одномодульные и многомодульные компоновочные блоки
Во многих случаях компоновочные блоки .NET- это просто файлы двоичного кода (*.dll или *.exe). Поэтому, если вы строите *.dll .NET, можно считать, что файл двоичного кода и компоновочный блок – это одно и то же. Точно также, если вы строите выполняемое приложение для настольной системы, файл *.exe тоже можно считать компоновочным блоком. Но из главы 11 вы узнаете, что указанное соответствие не столь однозначно. Строго говоря, если компоновочный блок состоит из одного модуля *.dll или *.exe, вы имеете одномодульный компоновочный блок. Одномодульный компоновочный блок содержит весь необходимый код CIL, метаданные и манифест в одном автономном отдельном пакете.
Многомодульные компоновочные блоки, в свою очередь, складываются из множества бинарных .NET-единиц, каждая из которых называется модулем. При этом один из таких модулей (он называется первичным модулем) должен содержать манифест компоновочного блока (и может содержать также CIL-инструкции и метаданные различных типов). Остальные связанные модули содержат манифест уровня модуля, CIL и метаданные типов. Как вы можете догадаться, в манифесте первичного модуля компоновочного блока документируется набор необходимых "второстепенных" модулей.
Но зачем создавать многомодульные компоновочные блоки? Когда вы делите компоновочный блок на отдельные модули, вы получаете более гибкие возможности инсталляции. Например, если пользователь ссылается на удаленный компоновочный блок, то среда выполнения загрузит на его машину только необходимые модули. Поэтому вы можете сконструировать свой компоновочный блок так, чтобы редко используемые типы (например, HardDriveReformatter) были выделены в отдельный автономный модуль.
Если все ваши типы размещаются в компоновочном блоке, представляющем собой единый файл, конечному пользователю придется загружать большой набор данных, из которых в действительности могут понадобиться далеко не все (а это, очевидно, означает лишнюю трату времени). Итак, компоновочный блок на самом деле логически сгруппирован в один или несколько модулей, которые должны инсталлироваться и использоваться, как единое целое.
- Предыдущее состояние дел
- Решение .NET
- Главные компоненты платформы .NET (CLR, CTS и CLS)
- Роль языка C#
- Другие языки программирования с поддержкой .NET
- Компоновочные блоки .NET
- Одномодульные и многомодульные компоновочные блоки
- Роль CIL
- Роль метаданных типов .NET
- Роль манифеста компоновочного блока
- Общая система типов
- Общеязыковые спецификации
- Общеязыковая среда выполнения
- Различия между компоновочными блоками, пространствами имен и типами
- Использование ildasm.exe
- Инсталляция среды выполнения .NET
- Платформенная независимость .NET
- Резюме
- Статистика по блокировкам
- Создание файлов с блокировкой
- Не допускайте того, чтобы поток пользовательского интерфейса блокировался на длительное время
- Часть I Скрываем свое местонахождение и посещаем заблокированные сайты
- Блоки питания, используемые в компьютерах
- ГЛАВА 8 Блокировки чтения-записи
- Не хочу, чтобы компьютером пользовались в мое отсутствие. Как установить пароль и блокировать машину?
- Как заблокировать компьютер с помощью командной строки?
- Можно ли заблокировать клавиши для выключения компьютера?
- 8.6.1. Блокировка приема спама
- 8.6.2. Блокировка пересылки спама
- 14.2.2. Блокировка POSIX: fcntl() и lockf()