62 .NET Framework Слова .NET и ASP.NET происходят от названия .NET Framework ("общая структура .NET") - набор объектов и планов (Blueprints), созданный компанией Microsoft для разработки приложений. ASP.NET работает благодаря .NET Framework. У всех приложений, разработанных в .NET Framework, и в том числе у приложений ASP.NET, есть некоторые общие возможности, обеспечивающие им совместимость, безопасность и стабильность. Рассмотрим эти возможности по одной. Common Language Runtime (CLR) означает "среда выполнения общего языка", среда, которая управляет выполнением кода. Другими словами, в ней запускается и поддерживается любой написанный код. Традиционно при создании приложений пишется код на одном из языков программирования (таком, например, как Visual Basic), компилируется в формат, понятный для компьютера (в единицы и нули), а затем отправляется откомпилированный код на выполнение. Обратите внимание, что компьютеры разных типов (например, PC и Macintosh) "говорят" на разных языках. Это значит, что для использования приложения на компьютере другого типа приложение необходимо перекомпилировать на язык этого компьютера. Но на .NET Framework дело обстоит несколько по-другому. Конечно, при использовании .NET Framework и CLR все равно приходится писать код и заниматься его компиляцией. Однако вместо того, чтобы компилировать его в то, что понимает компьютер, вы компилируете его в код языка, который называется Microsoft Intermediate Language (MS1L) - промежуточный язык от Microsoft. Такой язык является удобным средством представлять весь написанный вами код. Страницы ASP.NET также компилируются в код MSIL. При компиляции в этот код приложение создает так называемые метаданные. Они являются информацией, которая описывает само приложение. Метаданные рассказывают, что оно может делать, кому принадлежит и так далее. Вместе с MSIL и метаданными появился новый класс языков программирования: С#, Cobol, Perl и так далее. Эти языки похожи на те, что были до них, но их выводом может быть код, такой как MSIL или обычный компилированный. Затем, когда нужно выполнять программу, за дело берется Common Language Runtime (CLR) и заново компилирует код — на этот раз на родной язык компьютера. Таким образом, код MSIL может выполняться на компьютере любого типа. CLR говорит на языках многих компьютеров и делает за вас всю компиляцию на эти языки. Так что, откомпилировав свое приложение одни раз, можно передавать его на любой другой компьютер. На рисунке 2.1 показано, в чем состоит разница между традиционным процессом компиляции и тем, что выполняется в .NET Framework. Используя метаданные, CLR ищет, каким образом следует запускать приложение. Благодаря этому установка программ становится очень легкой. Дело в том, что при традиционной установке информацию о приложении необходимо помещать в системный реестр или в центральное хранилище данных о приложениях. К сожалению, системный реестр можно вывести из строя любым изменением в приложении (перемещением его каталога, установкой нового компонента и так далее), и тогда приложение может и не работать так, как положено. Благодаря метаданным системный реестр становится ненужным. Вся необходимая информация хранится вместе с файлами приложения, так что все сделанные изменения вступают в силу автоматически. Код, который работает вместе с CLR, называется управляемым кодом. Такое название объясняется тем, что CLR управляет выполнением этого кода и дает определенные преимущества (такие, например, как управление ресурсами), и при этом разработчику не нужно делать ручную настройку. В спою очередь, код, который выполняется вне CLR, называется неуправляемым. Кроме того, CLR может выполнять обработку ошибок, поддерживать (шзопасность, поддерживать согласованность версий (versioning) и рювертывание приложений, а также интеграцию с различными платформами. А что означает, что для написания приложений .NET (и в том числе приложений ASP.NET) можно выбрать любой язык программирования.