Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1-15.docx
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

15. Процесс компиляции на платформе .Net

.NET Framework компилируеткодвсех .NET языков( таких, как Visual Basic .NET, Visual C++.NET and Visual C#.NET ) вкод Microsoft Intermediate Language ( промежуточныйязык Microsoft, MSIL ), используя MSIL-компилятор. Помните, мы сказали, что высокоуровневые языки используют компилятор, чтобы преобразовать код в машинный код операционной системы, и только эта операционная система поймет такой код. Но когда мы компилируем .NET-код в MSIL-код, мы получаем не характерный для какой-либо операционной системы код. Итак, нам нужно совершить еще один шаг - преобразовать MSIL-код в код, специфичный для каждой операционной системы. Это выполняет Just-In-Time компилятор (дословно: только-во-время, то есть компилятор времени исполнения, примеч. перев., JIT). .NET Framework использует JIT-компилятор, чтобы преобразовать код промежуточного языка ( MSIL ) в машинный язык, специфичный для данной операционной системы, и только теперь .NET-приложение может выполнятся на этой системе. Итак, вот эти два шага компиляции C#-кода: сначала мы преобразуем C#-код в MSIL-код ( неспецифичный для какой-либо операционной системы код, это код для .NET Framework и только она может понять его), а затем JIT-компилятор преобразует MSIL-код в машинный. 

Почему 2 шага, а не один? Существует несколько причин компиляции .NET-приложений в 2 шага. Cейчас мы узнаем некоторые из них. Код всех .NET-языков компилируется сначала в MSIL, (это называется межъязыковое взаимодействие) понятный .NET. Я имею ввиду, что .NET.-Framework понимает и обрабатывает MSIL-код, а не операционная система. Например, представьте, что вы работаете в компании C#-программистом. Другие разработчики используют Visual C++ .NET, а я работаю с VisualBasic .NET. Поскольку код всех этих языков будет скомпилирован в MSIL (первый шаг) мы можем вместе работать над одним проектом, и каждый из нас сможет использовать свой любимый язык программирования. Нет нужды изучать другие языки. После того, как работа над проектом будет завершена VisualStudio .NET скомпилирует код на трех разных языках в MSIL-код. Затем будет использоваться JIT-компилятор, преобразующий MSIL-код в машинный.  Если бы не существовал MSIL, тогда мы бы не смогли работать вместе, поскольку компилятор каждого языка программирования не понял бы кода на другом языке. Но MSIL-компилятор понимает код любого .NET-языка. 

Управляемый код против неуправляемого

Когда мы пишем .NET-код, который использует сервисы, функции и возможности библиотеки классов .NET-Framework (FCL) мы называем такой код "управляемым", потому что он управляется общеязыковой средой выполнения (CLR). Как вы знаете CLR управляет выполнением .NET-приложений. Когда мы пишем управляемый код, нас не интересует управление памятью, обращение к низкоуровневым системным функциям, так как CLR избавляет нас от этих деталей. Разрабатывая управляемый код, мы улучшаем производительность приложений.  Вы также можете писать и "неуправляемый код". Это такой код, который не управляется CLR и в ваши обязанности входит управление памятью и множеством других ресурсов. CLR не может контролировать такой тип кода, но в тоже время это мощная возможность, потому что вы получаете доступ к низкоуровневым системным функциям, что может быть полезно при некоторых обстоятельствах.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]