- •4.Основные принципы проектирование приложений
- •5.Схема типовой архитектуры приложения назначение компонентов схем.
- •6.Сквозная функциональность
- •9.Сочетание архитектурных стилей.
- •10.Клиент-серверная и трехуревневая архитектура.
- •11.Компонентная и многослойная архитектура.
- •12. Многослойная архитектура
- •13.Рекомендаций по проектирование слоев типовой архитек прилож.
- •Архитектура .Net Framework
- •14.Платформа .Нет чем отличот других платформа.
- •15. Процесс компиляции на платформе .Net
- •Управляемый код против неуправляемого
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 не может контролировать такой тип кода, но в тоже время это мощная возможность, потому что вы получаете доступ к низкоуровневым системным функциям, что может быть полезно при некоторых обстоятельствах.
