Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 111

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 105 106 107 108 109 110 < 111 > 112 113 114 115 116 117 .. 320 >> Следующая

264 Глава 6 * Сборки, потоки и домены приложений
Обзор сборок .NET
Теперь, когда нам известны существующие п роблемы, мы рассмотрим, как они решаются в мире .NET. Приложения .NET создаются путем объединения любого количества сборок. Сборка - это двоичный файл (DLLnnn EXE)1 который содержит в себе номер версии, метаданные (информацию о самом себе), а также типы (классы, интерфейсы, структуры и т. п.) и дополнительные ресурсы (изображения, таблицы строковых данных и прочее). Главное, что необходимо осознать, — внутренняя организация сборки .N ET совершенно не похожа на двоичные файлы СОМ или обычных приложений Win32.
Например, встроенный в процесс сервер СОМ экспортирует четыре функции (DI 1 CanUnloadNow(), DlIGetClassObject (), Dl 1 RegisterServerC) и DilUnregisterServer()), которые обеспечивают среде выполнения СОМ возможность обращаться к содержимомуэтого сервера. .NETDLL, сдругой стороны, обязательнодолжнаэкпортиро-вать только одну функцию — UHMainO.
Если СОМ-серпер реализован в виде файла ЕХЕ, то в этом файле реализован метод WinMaint) как единственная точка входа в приложение. При запуске такой СОМ-сервер проверяет наличие самых разных параметров командной строки, которые и обеспечивают для этого СОМ-сервера такие же функциональные возможности, как и у COM DLL. В сборках .NET все по-другому. Несмотря на то что в качестве точки входа в приложение также используется метод Wi nMai n () (или Mai n () для консольных приложений), вся остальная логика реализована совершенно иначе.
Одно из самых важных отличий сборок .NET от двоичных файлов серверов СОМ и любых других исполняемых файлов Win32 заключается в том, что сборки .NL'!' содержат не платформе!ню-зависимыеинструкции, а код на так называемом промежуточном языке Microsoft (Microsoft Intermediate Language, MSIL или просто IL). Этот язык не зависит ни от платформы, ни от типа центрального процессора. Код L компилируется в платформенно-зависимые инструкции только во время выполнения. Таким образом, потенциально приложения .NETмогут выполняться на платформах, отличных от на компьютерах с самыми разными цент-
ральными процессорами.
Помимо собственно инструкций на языке IL, каждая сборка .NET содержит в себе информацию о каждом типе сборки и каждом члене каждого типа. Эта информация генерируется полностью автоматически. Например, если вы создали на любом из .NET-совместимыхязыков класс Joystick, то соответствующий компилятор создаст метаданные, описывающие все поля, методы, свойства и события, которые определены в этом классе. Среда выполнения использует метаданные для определений местонахождения типов (и их членов) внутри для создания экземпляров объектов и вызова удаленных методов.
В отличие от двоичных файлов классических серверов СОМ, любая сборка ,NET содержит манифест - набор метаданных о самой сборке. Манифест содержит информацию о всех двоичных файлах, которые входят в состав данной сборки, номере версии сборки, а также, что очень важно, — сведения обо всех внешних сборках, на которые ссылается данная сборка (в отличие от классического сервера СОМ, в котором внешние зависимости не документировались). Таким образом, можно считать, что сборки .NET являются полностью самодокументируемыми.
Обзор сборок 265
Сборки из одного и нескольких файлов
Любая сборка может состоять из нескольких модулей. Модуль - это файл сборки .'Al-I". В этом свете можно рассматривать сборку целиком как «единицу развертывания», состоящую из одной или нескольких частей (сборки иногда даже называют «логическими DLU). Чаще всего сборка состоит из единственного файла. В этом случае между «логическим двоичным файлом» — сборкой и «физическим двоичным файлом» - модулем сборки существует отношение «один-к-одному». Вся информация сборки будет расположена в единственном физическом файле, как представлено на рис.
Сборка из одного файла
Манифест
Метаданные типов
Код IL
Ресурсы (необязательные)
Рис. 6.1. Сборка из одного файла
Основная цель, которая преследуется при создании сборки из нескольких файлов, — это более эффективная загрузка приложения. Предположим, что удаленный клиент обращается к многофайловой сборке, состоящей из трех файлов. Если для тех возможностей приложения, которыми пользуется клиент, необходим только один из трех файлов, среда выполнения .NETзагрузит только его. Если размер каждого из файлов сборки составляет один мегабіт г. вы почувствуете разницу.
Многофайловые сборки объединяются в единое целое манифестом, в котором хранится информация о всех модулях данной сборки. Манифест в принципе может быть расположен в отдельном файле, но гораздо чаще он помещается в один из модулей сборки — так, как это представлено на рис. 6.2.
Как, собственно, создаются многофайловые сборки — этот вопрос мы рассматривать не будем. Он хорошо освещен в электронной документации к С#. Создавать многофайловые сборки совсем несложно — практически все, что для этого требуется — указать параметр /addmodule в командной строке компилятора С#.
Логическое и физическое представление сборки
Предыдущая << 1 .. 105 106 107 108 109 110 < 111 > 112 113 114 115 116 117 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100