⇒ Библиотека книг по компьютерным технологиям
⇒ ⇒ Разработка Windows-приложений на Microsoft Visual Basic .NET и Microsoft Visual C# .NET. Учебный курс MCAD/MCSD
⇒ ⇒ ⇒ Глава 1. Введение в .NET Framework
⇒ ⇒ ⇒ ⇒ Занятие 1. Инфраструктура .NET Framework и общеязыковая исполняющая среда
Читать далее: Компиляция и исполнение .NET-приложений
Чтобы понять, как общеязыковая исполняющая среда контролирует исполнение кода, необходимо изучить структуру .NET-приложения. Основным блоком .NET-приложений является сборка (assembly) — самоописываемый набор кода, ресурсов и метаданных. Содержимое сборки описано в ее декларации (manifest), которая включает следующие сведения:
У каждой сборки имеется только одна декларация, которая содержит все сведения, описывающие эту сборку. Декларация сборки хранится в отдельном файле либо в одном из модулей сборки.
Сборка также содержит один или несколько модулей. Модуль (module) хранит код приложения или библиотеки, а также метаданные, описывающие этот код. Во время компиляции проекта в сборку исходный текст, написанный на языке высокого уровня, транслируется в IL-код. Благодаря такому преобразованию свободно взаимодействуют программы на разных языках. Например, можно написать на Visual C# приложение, которое вызывает DLL, разработанную с применением языка Visual Basic .NET. Перед исполнением оба компонента преобразуются в IL-код, что устраняет проблемы с совместимостью языков высокого уровня.
Кроме того, модули содержат типы. Тип — это шаблон кода, инкапсулирующего некоторые данные и обладающего определенной функциональностью. Видов типов два: ссылочные типы, или классы, и типы значений, или структуры. Более подробно о них рассказано на занятии 3. Для каждого типа в декларации сборки содержится описание, понятное CLR. У типа есть поля, свойства и методы, так или иначе участвующие в реализации его функциональности. Например, у класса, представляющего банковский счет, должны быть поля, свойства и методы, представляющие все функции, необходимые для реализации банковского счета. Поля предоставляют память для хранения определенного типа данных. Классу банковского счета, скорее всего, понадобится поле для хранения имени вкладчика. Свойства напоминают поля, но в отличие от них обычно проверяют значения при их установке и извлечении. В нашем примере у класса может быть свойство, хранящее остаток средств на счете. При попытке изменить значение это свойство проверит, не превышают ли изменения заданный предел, и, если это так, запретит выполнение операции. Методы представляют поведение классов, например действия, которые они выполняют над хранимыми данными, либо изменения пользовательского интерфейса. Продолжая пример, можно предположить, что у класса банковского счета будет метод Transfer
, который переносит остаток со счета до востребования на депозит, а также метод Alert
, извещающий пользователя о снижении остатка средств до критического уровня.
Все книги представлены на сайте исключительно для ознакомления с содержанием. |