Спонсор: Microsoft
Опубликован: 30.01.2013 | Доступ: свободный | Студентов: 1198 / 140 | Длительность: 17:23:00
Теги: .net, ajax, asp, www, интранет
Лекция 2:

Введение в платформу .NET Framework и ASP.NET

Аннотация: Эта лекция содержит общие сведения о платформе .NET Framework и ASP.NET. В ней расскрываются особенности платформы с точки зрения разработки и функционирования приложений.

Что такое .NET Framework?

Microsoft .NET Framework – мощная платформа для построения приложений. Первые упоминания о.NET Framework появились в конце 90-х годов, когда компания Microsoft объявила о своей намеренности работать над этой платформой (в то время этот продукт именовался Next Generation Windows Services – NGWS).

После выпуска бета-версии NGWS, в 2000 году была выпущена первая бета-версия .NET Framework 1.0. Финальная версия .NET 1.0 вышла только в январе 2002 года. После этого, в апреле 2003 года, появился .NET 1.1, затем в ноябре 2005 года – 2.0. Через год, в ноябре 2006 года, появился ряд библиотек (под общим названием WinFX), расширяющий возможности .NET 2.0, который впоследствии стал называться .NET 3.0. Через год после этого, в ноябре 2007 года, была выпущена версия .NET 3.5, а в августе 2008 года – ряд обновлений, которые получили название .NET 3.5 SP1. Эта версия .NET Framework остается актуальной и на сегодняшний день, а выход следующей версии .NET 4.0 запланирован на весну 2010 года. Из приведенной выше схемы видно, что версии .NET 3.0, .NET 3.5 и .NET 3.5 SP1 работают в рамки одной среды исполнения (из .NET 2.0) и просто увеличивают функциональность всей платформы за счет добавления новых библиотек. При этом .NET 1.0, .NET 1.1, .NET 2.0 и .NET 4.0 имеют различную среду исполнения.

Что же такое .NET Framework? Одной из основных идей .NET Framework является совместимость программного кода написанного на различных языках программирования. Так, например, в рамках идеологии .NET Framework приложение, разрабатываемое на языке программирования C#, может с легкостью использовать программный код, который разработан на основе Visual Basic .NET. Точно также программный код на Visual Basic .NET может использовать программный код на Delphi .NET и т.д.

Также .NET Framework решает проблему совместимости версий библиотек. Каждая библиотека .NET (сборка, assembly) содержит сведения о своем имени и версии. Из этой информации складывается строгое имя сборки. Таким образом, когда из одной сборки делается ссылка на другую сборку, указывается не только имя этой сборки, но и её версия. Такой подход позволяет устранить возможные конфликты между разными версиями сборок.

При компиляции приложений .NET на выходе получается не исполняемый машинный код, а промежуточный код на специальном языке, который называется MSIL (Microsoft Intermediate Language) или просто IL (Intermediate Language). Своим внешним видом MSIL напоминает язык Ассемблера, но является более высокоуровневым и по своей природе является объектно-ориентированным. Давайте рассмотрим следующий пример: мы создадим консольное приложение и напишем элементарный код для вывода строки на консоль.


После этого, из полученной сборки получим код на языке IL (путем дизассемблирования). Это можно сделать при помощи утилиты Ildasm.exe, которая поставляется в составе .NET Framework. Код на языке IL для приведенной выше программы будет выглядеть следующим образом.


Такой подход, при котором компиляция осуществляется не в машинный код (в виде инструкций центральному процессору), а в код на промежуточном языке программирования решает несколько задач. Во-первых он позволяет организовать процесс разработки одного и того же приложения одновременно на нескольких языках программирования. Это означает, что в одном проекте может содержаться код на различных языках программирования. Поскольку существует промежуточный язык IL, то код, который получается на этом языке программирования, теоретически не зависит от исходного языка программирования. Второй задачей, которую решает этот подход, является возможность создавать приложения независящие от разрядности операционной системы (32 бита или 64 бита). Как известно, системы команд 32- и 64-разрядных операционных систем имеют свои особенности. По этой причине разработчики программного обеспечения вынуждены создавать две версии приложения. Приложения на базе .NET Framework не нуждаются в этом, поскольку промежуточный код компилируется в машинные инструкции в момент первого запуска ("на лету") и может адаптироваться к той системе команд, которая используется в данный момент (см. ниже). Наконец, третья задача, которую решает приведенный подход – это теоретическая возможность запускать программный код, без перекомпиляции на разных платформах. Это означает, что исполняемый файл содержит только код на промежуточном языке, который может быть преобразован в машинный код для той платформы, на которой он исполняется в данный момент. Таким образом, тот же самый исполняемый файл можно запустить не только в операционной системе Windows, но и, например, в Linux или MAC OS X.Для этого существует отдельный проект, поддерживаемый компанией Novel, который называется Mono.

Идеология .NET Framework способствует внедрению новых языков программирования в общую инфраструктуру, поскольку разработчику этого языка программирования нужно лишь позаботиться о трансформации языковых конструкций в язык IL – все остальное сделает среда исполнения. Благодаря этому в последнее время появляется огромное количество языков программирования для платформы .NET – F#, Boo, IronPython, IronRuby, Haskell, Nemerle, JScript.NET и др.


Кроме этого, .NET Framework содержит огромный набор классов, реализующих различную базовую функциональность. Этот набор классов называется Framework Class Library (FCL) и поставляется совместно с .NET Framework. В рамках BCL реализована базовая функциональность, которая нужна буквально в каждом приложении (работа со строками, числами, массивами, коллекциями, файлами, графикой, сетевыми подключениями, XML, СУБД и т.д.). Вся функциональность BCL доступна в рамках программного кода независимо от того, какой язык программирования используется в данный момент.

Работа приложений .NET обеспечивается за счет наличия такого механизма как общеязыковая среда исполнения (Common Language Runtime, CLR). Общеязыковая среда исполнения позволяет запускать приложения .NET на разных платформах. В момент запуска приложения происходит преобразование кода IL приложения в соответствии с теми машинными инструкциями, где это приложение запускается. Этот процесс называется "компиляцией на лету" (just-in-time). После компиляции кода IL в машинный код, последний сохраняется в системных временных папках для последующего запуска и используется вплоть до того времени, пока исходный код IL не изменится. Более подробные сведения о компиляции приложений .NET содержаться в следующей лекции "Компиляция приложений .NET".

Другой важной особенностью среды исполнения .NET Framework является наличие встроенного механизма сборки мусора (Garbage Collector). Этот механизм берет на себя заботы по удалению из памяти тех объектов, которые использовались ранее и в данный момент не нужны. Традиционно, забота по освобождению памяти от ненужных данных ложилась на плечи разработчиков приложений и в некоторых ситуациях несли в себе серьезные трудности. Для этого в языки программирования были встроены специальные операторы (например, такие как delete в C++). Если разработчик забывал удалить какие-либо ненужные объекты происходила утечка памяти, т.е. складывалась ситуация, когда приложению уже не требуется какой-либо участок памяти в операционной системе, но он остается занятым вплоть до завершения работы приложения. Подобные ошибки разработчика могут быть достаточно легко допущены в процессе разработки приложения, но обнаружить их крайне трудно. Более того, в этой ситуации разработчики вынуждены каждый раз заботится об очистке памяти, вместо того, чтобы думать над логикой приложения.

Работа сборщика мусора строится следующим образом. Как только объект выходит из текущей зоны видимости, он помечается на удаление. Например, если в методе класса объявляется переменная и ей присваивается новый объект, этот объект будет помечен на удаление, когда исполнение этого метода будет завершено. Кроме того, если в процессе работы метода переменной будет присвоено новое значение, то объект будет также помечен на удаление (если на этот объект нет ссылок в других переменных). Кроме того, если в коде содержатся блоки, то объект будет существовать только в рамках этого блока. При выходе из этого блока объект будет помечен на удаление.

Давайте рассмотрим несколько примеров. В следующем примере создается новый объект Array, который будет удален при выходе из метода CreatePerson.


В этом примере объект Array будет удален в середине выполнения метода, поскольку переменной list присвоено другое значение.


В следующем примере объект Array будет создан и доступен только внутри блока обработки условия. За рамками этого блока объект Array будет недоступен.


Видно, что сборщик мусора позволяет разработчику думать о логике приложения и не заботиться об очистке памяти при создании объектов.

Таким образом, .NET Framework представляет собой комплексную платформу для разработки приложений, которая позволяет разрабатывать на различных языках программирования, может работать в рамках разных платформ, позволяет оптимизировать код под конкретную платформу, имеет богатую библиотеку базовых классов и автоматически управляет сборкой мусора. Поэтому разработка приложений в рамках .NET Framework зачастую происходит более эффективно, а разработчик может думать о логике приложения, а не об особенностях среды исполнения.

Краткие итоги

Платформа Microsoft .NET Framework – это мощная среда для разработки приложений, которая первый раз увидела свет в 2000 году. В рамках этой платформы существует общеязыковая среда исполнения, которая позволяет запускать программный код на промежуточном языке – MSIL. Этот язык необходим для абстрагирования от конкретной платформы и создания единого приложения, не зависящего от конкретных условий пользователя. В составе .NET Framework содержится мощная библиотека базовых классов, которая реализует наиболее типичные задачи. Также для приложений, работающих в составе .NET Framework выполняется автоматическая сборка мусора, что позволяет разработчику не заботиться об удалении устаревших объектов.

Марина Воробьева
Марина Воробьева
Виктория Ткаченко
Виктория Ткаченко

Проигрыватель не работает. После нажатия кнопки Play ничего не происходит.

Андрей Коробейников
Андрей Коробейников
Россия, Новосибирск, Сибирский государственный университет телекоммуникаций и информатики, 1999
Вадим Трунов
Вадим Трунов
Россия