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

 

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

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

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 17 18 19 20 21 22 < 23 > 24 25 26 27 28 29 .. 320 >> Следующая

с# исходный ход ¦а С# компилятор_J
W

Perl исходный код Per! компилятор I


COBOL ИСХОДНЫЙ КОД W COBOL компилятор


C++ исходный код C++ компилятор
W
MSIL и
метаданные (DLL или BKE)
V
Рис. 1.2. Все компиляторы, ориентированные на .NET- генерируют IL-инструкции и метаданные
Может показаться смешным, но двоичные файлы .NET. для которых используются стандартные расширения DLL и ЕХЕ, по своему внутреннему содержанию не имеют абсолютно ничего общего с обычными исполняемыми файлами. Например, файлы DLL не предоставляют свои методы в распоряжение приложений на компьютере. В отличие от компонентов СОМ двоичные файлы .NET не описываются с помощью кода IDL и регистрируются в системном реестре. Однако, пожалуй, самое важное отличие заключается в том, что двоичные файлы .NET не содержат зависящих от платформы команд. Содержимое двоичных файлов .NET - это плат-форменно-независимый «промежуточный язык*, который официально называется Microsoft Intermediate Language (MSIL, промежуточный язык Microsoft), или просто IL.
Обзор двоичных файлов («сборки»)
Когда с помощью компилятора для платформы Г создается модуль DLL или ЕХЕ, содержимое этого модуля — это так называемая сборка (assembly) на языке IL. Мы будем рассматривать сборки более подробно в главе 6. Однако для того, чтобы лучше понять особенности среды выполнения .NT''Г. нам потребуется охарактеризовать хотя бы некоторые базовые свойства этого нового формата исполняемых
файлов.
Обзор двоичных файлов («сборки») 37
Как уже говорилось, сборка содержит код на «промежуточном языке» — Назначение IL концептуально аналогично байт-коду Java — он компилируется в илатформеино-снецнфпчнме инструкции, только когда это абсолютно необходимо. «Абсолютная необходимость» возникает тогда, когда к блоку инструкций IL (например, реализации метода) обращается для использования среда выполнения .NET.
Помимо инструкций L, двоичные модули .NET содержат также метаданные, которые подробно описывают все типы, использованные в модуле. Например, если у вас внутри сборки есть класс FoO, то в метаданных этой сборки будет содержаться информация о базовом классе для Foo, какие интерфейсы предусмотрены для Fco (если они веобше предусмотрены), а также полное описание всех методов, свойств и событий этого класса.
Во многих отношениях метаданные .NETявляются значительным усовершенствованием по сравнению с классической информацией о типах в СОМ. Классические двоичные файлы СОМ обычно описываются с помощью ассоцимрозакноіі библиотеки типов (которая очень похожа на двоичную версию кода IDL). Проблема с информацией о типах в СОМ заключается в том, что никто не может гарантировать вам, что эта информация окажется полной. Код EDE не может создать полный каталог внешних серверов, которые могут быть необходимы для нормальной работы содержащихся в модуле СОМ классов. Существование метаданных напротив, обеспечивается тем, что метаданные автоматически генерируются компилятором, создающим приложение
Метаданные описывают не только типы, используемые в сборке, но и саму сборку. Эта часть метаданных называется манифестом (manifest). В манифесте содержится информация о текущей версии сборки, об использованных ограничениях по о поддерживаемом естественном языке (английском, русском
и т. д.), а также список всех внешних сборок, которые потребуются для нормального выполнения. Нам предстоит рассмотреть в этой главе различные средств;,, которые можно использовать для анализа кода IL внутри сборки, метаданных для
типов и манифеста.
Сборки из одного и нескольких файлов
В подавляющем большинстве случаев двоичный файл и сборка — это одно
то же и между ними существует отношение «одші-к-едномук Если мы будем говорить о создании .NET DLL, то понятия «двоичный файл» и «сборка» мы будем использовать как синонимы. Однако (подробнее об этом - в главе 6) такой подход верен не всегда. Сборка может состоять как из так и из нескольких двоичных файлов. В сборке из одного файла (single file assembly) этот единствен -ный файл содержит и манифест, и метаданные, и инструкции IL.
В сборке из нескольких двоичных файлов (multifile assembly) каждый двоичный файл называется модулем (module). При создании таких многофайловых сборок один из двоичных файлов должен содержать манифест сборки (в нем могут также находиться и другие данные, в том числе инструкции IL). Все остальные модули могут содержать только метаданные типов и инструкции IL.
Зачем может потребоваться создание многофайловой сборки? Единственная причина для этого — большая гибкость при развертывании приложения.
38 Глава 1 • Философия .NET
мер, если пользователь обращается к удаленной сборке, которая должна быть загружена на его локальный компьютер, среда выполнения загрузит лишь те модули сборки, которые действительно необходимы. Такое решение позволит избежать ненужного сетевого трафика и увеличить скорость работы программы.
Роль Microsoft Intermediate Language
Теперь, когда вы уже имеете представление о сборках Kl:' Г, мы можем рассмотреть Microsoft Intermediate Language (IL) - промежуточный язык Microsoft, более подробно. Код IL не зависит от платформы, на которой будет производиться выполнение. При этом компилятор для платформы .NET сгенерирует код IL вне зависимости от того, какой язык программирования (С#, Visual Basic.NET, Eiffel и т. п.) вы использовали для создания программы. Пожалуй, есть смысл продемонстрировать это более наглядно. В качестве примера мы создадим не самый сложный калькулятор. Единственное, что он у нас будет уметь делать — производить сложение 10 и 84. Ниже приведен код этого калькулятора на С#. Пока можно не задумываться об особенностях синтаксиса в этом примере, но отметьте для себя код, относящийся к методу Add О.
Предыдущая << 1 .. 17 18 19 20 21 22 < 23 > 24 25 26 27 28 29 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100