Эксперт
Сергей
Сергей
Задать вопрос
Мы готовы помочь Вам.

Цель:

Тема: Схема работы .NET Framework

Изучение модели выполнения приложения на платформе .NET Framework

Задачи:

1. Составить схему работы .NET Framework

2. Дополнить глоссарий терминов терминологией по изученной теме

3. Зафиксировать основные постулаты модели выполнения приложения на платформе .NET Framework

Содержание темы:

Рассмотрим в общих чертах, как работает технология .NET, за счет чего, каких новшеств достигаются все заявленные преимущества и новые возможности (рисунок 1).

Сначала разработчик выбирает среду разработки, компилятор которой обеспечивает создание промежуточного кода на языке MSIL. При помощи инструментов Microsoft разработчик может работать с языками С#, C++, Visual Basic.

Итак, разработчик выбрал инструментарий, разработал некое приложение и откомпилировал его. Код компилируется .NET-компилятором (компилятор, который генерирует код для среды .NET). Этот компилятор преобразует исходный код из соответствующего языка в формат IL (Intermediate Language – промежуточный язык) или как его еще называют MSIL (Microsoft Intermediate Language – промежуточный язык Microsoft), который не интерпретируется в машинные команды и который представляет собой набор низкоуровневых команд, интерпретируемых CLR.

Промежуточный язык не содержит команд, зависящих от языка, операционной системы и типа компьютера. Поэтому приложение .NET получается независимым от конкретных реализаций операционной системы и аппаратной платформы.

Программа на промежуточном языке выполняется не самостоятельно, а под управлением системы CLR.

Готовое приложение должно выполняться на компьютере, на котором установлена операционная среда .NET Framework. Код приложения взаимодействует только с операционной средой, абстрагируясь от уровня операционной системы.

Приложения развертываются в виде одной или нескольких сборок, которые состоят из исполняемых файлов и DLL, содержащих IL-код. По крайней мере, одна из этих сборок должна содержать исполняемый файл, помеченный как входная точка приложения.

При запуске приложения в дело вступает среда выполнения приложения CLR, которая при помощи загрузчика загружает сборки приложения и обеспечивает его выполнение. Но для этого необходимо преобразовать код MSIL в машинные команды процессора.

После запуска программы в память загружается первая сборка. Анализируя ее декларацию, СLR определяет требования для работы программы. В частности, CLR анализирует разрешения, запрашиваемые сборкой, и сравнивает их с системной политикой безопасности. Если системная политика безопасности не дает программе запрошенные разрешения, приложение не запускается, в противном случае CLR приступает к исполнению кода.

Рисунок 1 – Схема работы .NET Framework

Сначала CLR создает процесс, в котором будет работать приложение, и начинает исполнять его код. При этом первая порция исполняемого кода (в виде команд языка IL) загружается в память и компилируется JIT-компилятором (Just-In-Time compiler) в машинные коды, специфичные для данного компьютера.

JIT- компилятор, который выполняет преобразование кода MSIL в машинные команды по мере вызова подпрограмм. Как только в коде встречается вызов подпрограммы, загрузчик CLR находит и загружает необходимый фрагмент кода в компилятор JIT. В результате ненужная в данный момент часть кода приложения может быть вообще не откомпилирована.

Откомпилированный в ходе одного сеанса выполнения приложения код можно использовать многократно. Машинный код исполняется и остается в памяти, поэтому каждый фрагмент кода компилируется не более одного раза во время исполнения приложения. Каждый раз, когда программа вызывает новую часть кода, которая не исполнялась ранее, JIT-компилятор заблаговременно компилирует ее и сохраняет полученный двоичный код в памяти. Такой подход позволяет достичь максимальной производительности приложения, поскольку компилируются только те части программы, которые исполняются.

На выходе компилятора создается так называемый управляемый код, который затем исполняется в среде CLR. Код называется управляемым, т. к. он содержит метаданные, позволяющие CLR, кроме очевидной функции управлением компиляцией, выполнять и многие другие операции, к которым относятся проверка безопасности, проверка прав, контроль версий, сборка мусора и т. д. Напомним, что все это делается с помощью метаданных, содержащихся в сборке приложения .NET.

Таким образом, разработка приложений .NET выполняется в специализированных средах, а выполнение подразумевает использование операционной среды .NET Framework.

Таким образом, архитектура .NET базируется на «трех технологических китах»:

1. Исполняемые файлы компилируются в коды специального промежуточного языка MSIL.

2. Совместно с кодом программы исполняемые файлы содержат метаданные всю служебную информацию о приложении.

3. Приложения .NET компилируются в машинный код по мере необходимости и выполняются в платформенно-зависимой среде выполнения.

Была ли полезна данная статья?
Да
65.95%
Нет
34.05%
Проголосовало: 185

или напишите нам прямо сейчас:

Написать в WhatsApp Написать в Telegram