.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.