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

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

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

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

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

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

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

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

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

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

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

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

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

Запуск кода

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

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

Процесс выполнения кода .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.