Учебники

.NET Core — выполнение кода

В этой главе мы разберем процесс выполнения .NET Core и сравним его с .NET Framework. Процесс управляемого выполнения включает в себя следующие этапы.

  • Выбор компилятора
  • Компиляция вашего кода в MSIL
  • Компиляция MSIL в нативный код
  • Запуск кода

Выполнение кода

Выбор компилятора

  • Это многоязычная среда исполнения, среда выполнения поддерживает широкий спектр типов данных и языковых функций.

  • Чтобы получить преимущества, предоставляемые общеязыковой средой исполнения, вы должны использовать один или несколько языковых компиляторов, предназначенных для среды исполнения.

Это многоязычная среда исполнения, среда выполнения поддерживает широкий спектр типов данных и языковых функций.

Чтобы получить преимущества, предоставляемые общеязыковой средой исполнения, вы должны использовать один или несколько языковых компиляторов, предназначенных для среды исполнения.

Компиляция вашего кода в MSIL

  • Компиляция переводит ваш исходный код на язык Microsoft Intermediate Language (MSIL) и генерирует необходимые метаданные.

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

  • Среда выполнения находит и извлекает метаданные из файла, а также из библиотек классов инфраструктуры (FCL) по мере необходимости во время выполнения.

Компиляция переводит ваш исходный код на язык Microsoft Intermediate Language (MSIL) и генерирует необходимые метаданные.

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

Среда выполнения находит и извлекает метаданные из файла, а также из библиотек классов инфраструктуры (FCL) по мере необходимости во время выполнения.

Компиляция MSIL в нативный код

  • Во время выполнения компилятор JIT преобразует MSIL в собственный код.

  • Во время этой компиляции код должен пройти процесс проверки, который проверяет MSIL и метаданные, чтобы выяснить, можно ли определить, что код безопасен по типу.

Во время выполнения компилятор JIT преобразует MSIL в собственный код.

Во время этой компиляции код должен пройти процесс проверки, который проверяет MSIL и метаданные, чтобы выяснить, можно ли определить, что код безопасен по типу.

Запуск кода

  • Общеязыковая среда выполнения обеспечивает инфраструктуру, которая позволяет выполнять выполнение, и службы, которые можно использовать во время выполнения.

  • Во время выполнения управляемый код получает такие службы, как сборка мусора, безопасность, взаимодействие с неуправляемым кодом, поддержка отладки на нескольких языках и расширенная поддержка развертывания и управления версиями.

Общеязыковая среда выполнения обеспечивает инфраструктуру, которая позволяет выполнять выполнение, и службы, которые можно использовать во время выполнения.

Во время выполнения управляемый код получает такие службы, как сборка мусора, безопасность, взаимодействие с неуправляемым кодом, поддержка отладки на нескольких языках и расширенная поддержка развертывания и управления версиями.

Процесс выполнения кода .NET Core

Теперь давайте рассмотрим, как код выполняется с .NET Core по сравнению с .NET Framework. В .NET Core есть много замен этих компонентов, которые являются частью .NET Framework.

В .NET Core появилась новая серия компиляторов, как у Roslyn для C # и VB.

Вы также можете использовать новый компилятор F # 4.1, если вы хотите использовать F # с .NET Core.

На самом деле эти инструменты разные, и мы можем использовать Roslyn с .NET Framework, если мы используем C # 6 или более позднюю версию, потому что компилятор C # может поддерживать только до C # 5.

В .NET Core у нас нет библиотек классов инфраструктуры (FCL), поэтому используется другой набор библиотек, и теперь у нас есть CoreFx.

CoreFx — это переопределение библиотек классов для .NET Core.

У нас также есть новая среда выполнения с .NET Core, известная как CoreCLR, и использующая JIT-компилятор.

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

Таким образом, ответ тот же, что и для Microsoft .NET Core.