* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна!
Компиляция и исполнение .NET-приложений
7 февраля 2009
Как уже говорилось, во время компиляции .NET-приложений вместо двоичных ма- шинных кодов генерируется IL-код, который представляет собой набор низкоуров- невых команд, интерпретируемых CLR. Приложения развертываются в виде одной или нескольких сборок, которые состоят из исполняемых файлов и DLL, содержа- щих IL-код. По крайней мере одна из этих сборок должна содержать исполняемый файл, помеченный как входная точка приложения.
После запуска программы в память загружается первая сборка. Анализируя ее декларацию, СLR определяет требования для работы программы. В частности, CLR анализирует разрешения, запрашиваемые сборкой, и сравнивает их с системной политикой безопасности. Если системная политика безопасности не дает програм- ме запрошенные разрешения, приложение не запускается, в противном случае CLR приступает к исполнению кода. Сначала CLR создает процесс, в котором будет ра- ботать приложение, и начинает исполнять его код. При этом первая порция испол- няемого кода (в виде команд языка IL) загружается в память и компилируется JIT- компилятором (Just-In-Time compiler) в машинные коды, специфичные для данно- го компьютера. Машинный код исполняется и остается в памяти, поэтому каждый фрагмент кода компилируется не более одного раза во время исполнения приложе- ния. Каждый раз, когда программа вызывает новую часть кода, которая не испол- нялась ранее, ЛТ-компилятор заблаговременно компилирует ее и сохраняет полу- ченный двоичный код в памяти. Такой подход позволяет достичь максимальной производительности приложения, поскольку компилируются только те части про- граммы, которые исполняются.
Инфраструктура .NET Framework представляет собой основу для разработки программного обеспечения. Она состоит из общеязыковой исполняющей среды (CLR), поддерживающей основные сервисы, необходимые для исполнения про- грамм, и библиотеки базовых классов .NET со множеством готовых классов, что значительно облегчает разработку программ. Общеязыковая спецификация (CLS) определяет минимальный набор правил, которых должны придерживать- ся все языки, использующие .NET Framework, а общая система типов (CTS) га- рантирует совместимость типов в компонентах, написанных на разных языках. • Основной единицей .NET-приложений считается сборка, непременным компо- нентом которой является декларация. Декларация описывает сборку, а также один или несколько модулей с исходным кодом приложения. • Исполняемые файлы в .NET содержат команды языка IL. При загрузке сборки запрошенные ею разрешения проверяются на соответствие системной политике безопасности локального компьютера. Если исполнение приложения разреша- ется, первая сборка загружается в память и компилируется .ЦТ-компилятором в двоичный код, непосредственно для данного компьютера; этот код остается в памяти до окончания исполнения программы.