Лекция № 1

Тема: «Знакомство с платформой . NET Framework»

 

План

1. Характеристика платформы . NET Framework

2. Обзор языка C#

3. Работа в среде Visual Studio

 

1. Характеристика технологии .NET

Одной из основных задач разработки программного обеспечения  является создание платформ независимых приложений, которые могли бы работать на разном «железе» и под разными операционными системами.

Одно из решений предложила компания Sun MicroSystem, которая разработала и выпустила на рынок язык Java. Данный язык позволял создавать программы, откомпилированные в так называемый промежуточный машинный код, который при запуске на конкретном устройстве под конкретной операционной системой выполняется с помощью виртуальной Java-машины (JVM)JVM – специальное ПО, которое устанавливается на устройстве, на котором планируется выполнять Java- код.

 Идея была подхвачена компанией Microsoft и на рынке даже появилась среда программирования Microsoft Java. Но после судебного запрета, компания Microsoft была вынуждена отказаться от развития своей версии языка Java, но на основании этой технологии разработала свою платформу –  .NET Framework , которая также основана на создании промежуточного машинного кода, использовании некоторой виртуальной машины (CLR), но в отличие от Java,  ориентирована только на операционную систему Windows. Под платформенной независимостью здесь подразумевается возможность запуска программы на любом «железе», где установлена одна из версий ОС Windows (современные версии платформы поддерживаются, начиная в ОС Windows XP, а лучше Windows 7.

Обычно, при программировании под процессоры на разной платформе приходится «пересобирать» программы. Например, программа, скомпилированная для x64, не будет корректно работать на x86, а программа, собранная для x86 не сможет полностью показать свой потенциал работы на x64 системе. .Net Framework – это набор уже скомпилированных библиотек, откуда берутся методы и функции для запуска и разработки приложений. При создании программ разработчик просто вызывает нужные ему функции, при этом большинство методов и функций, необходимых программисту, уже скомпилировано и лежит в .NET Framework внутри операционной системы. Каждая библиотека с функциями лежит в двух вариантах – для x86 и для x64, так что о «пересборке» программы под разные платформы можно забыть. Созданная вами программа будет показывать свой полный потенциал на любой аппаратной («железе») и программной (операционной системе) платформе.

Особенности компиляции кода .NET

Как известно, процесс компиляции – это перевод кода, понятного человеку, в бинарный код, понятный компьютеру.

В программировании на .NET компиляция и запуск приложений происходит следующим образом:

- код, написанный на языке программирования высокого уровня, преобразовывается в промежуточный код, написанный на общем языке (Common Intermediate Language или CIL). Этот язык является языком низшего уровня, похожего по синтаксису на язык ассемблера;

- после, этот код передаётся так называемой исполняющей среде (Common Language Runtime или CLR), которая «вызывает» нужные функции и методы из .NET Framework;

- после этого конечный результат передаётся на процессор и программа выполняется.

Также такая схема сборки приложений очень удобна тем, что происходит «компиляция на лету». То есть, не компилируя программу до конца, среда разработки может указать Вам на Ваши ошибки, а это заметно ускоряет процесс разработки.

CLR – это некая «виртуальная машина», которая собственно и управляет нашими приложениями, написанными для .NET. Одной из ее особенностей является встроенный сборщик мусора (Garbage Collector). Он подчищает всё ненужное, оставленное программой в оперативной памяти во время выполнения самой программы. То есть, если мы использовали, например, переменную всего один раз в программе, то после обращения к этой переменной, если она больше нигде не задействована – автоматический сборщик мусора её удаляет из оперативной памяти. Это абсолютно безопасно, а главное – это даёт огромный прирост в производительности масштабных и ресурсоёмких приложений.

Таки образом, платформа .NET FrameWork имеет ряд преимуществ:

-  относительная лёгкость освоения и работы с языками программирования, так как большинство .NET языков – языки высокого уровня;

- быстрота выполнения конечных исполняемых файлов, так как промежуточный код, выполняемый виртуальной CLR машиной на конкретном устройстве, оптимизирует программу под характеристики этого устройства (процессор, память и т.п.). Поэтому первый запуск программы происходит дольше, так как идет оптимизация кода под «железо» устройства;

- приложения, написанные на .NET, сами «чистят себя» в оперативной памяти, благодаря автоматическому сборщику мусора;

- приложение нужно создать всего один раз, и оно будет работать на всех платформах процессоров и операционных системах семейства Windows  (кроме старых версий ОС).

 

2. Обзор языка C#

Как было сказано выше, программа, написанная под платформу .NET Framework компилируется в промежуточный CIL код, готовый к исполнению виртуальной CLR машиной.

Одним из преимуществ .NET программирования является то, что в распоряжении разработчика имеется огромной количество сред, поддерживающих разработку для данной платформы. При этом исходным языком высокого уровня может быть абсолютно любой язык, который изучал или использовал разработчик ранее. Такие языки разработки называют «Языками программирования» .NET или «Языки с поддержкой CLI или CLI-языки». Отличительной особенностью таких языков является наличие слова «NET» в названии их версий: VB.NET, Delphi.NET, Fortran.NET, PHP.NET и т.д. Они по своему синтаксису полностью похожи на свои обычные версии, могут использовать типы, подпрограммы и методы из библиотек FrameWork, а также компилируют код программы в промежуточный CLI-код.

Несмотря на большое количество языков программирования, адаптированных под разработку для .NET, основным языком разработки является язык C# (си шарп). Данный язык разрабатывался специально под платформу .NET на базе синтаксиса языка C++. Что касается возможностей языка для создания визуальных приложений, то в их разработке принимал участие один из авторов сред Delphi и C-Builder. Учитывая, что данные среды являются одними из лучших по разработке виртуальных приложений, то это позволило привнести в язык C# все самое лучшее из их возможностей, усовершенствовать некоторые визуальные компоненты и дополнить новыми компонентами.

Структура проекта на C#

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

Проект C# представляет собой набор файлов:

- Program.cs – главный файл кода;

- *.cs – код класса формы или другого класса проекта;

- *.Designer.cs – внешний вид формы;

- *.csproj – файл проекта;

- Properties\Settings.settings – файл параметров проекта.

Проект находится внутри решения – контейнер для одного или нескольких связанных проектов вместе с информацией о сборке, параметрами окна среды разработки и любыми прочими файлами, которые не относятся к какому-либо конкретному проекту. Используются два типа файлов для хранения параметров, связанных с решениями:

- *.sln – файл сборки (сборка – контейнер для нескольких проектов);

- *.suo – файл параметров пользователя решения.

После компиляции проекта готовый исполняемый файл будет находиться в папке bin\Debug или bin\Release.

 

 

3. Работа в среде Visual Studio

Microsoft Visual Studio – линейка продуктов компании Microsoft, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств.

Visual Studio включает в себя редактор исходного кода с поддержкой технологии IntelliSense (технология автодополнения при вводе), визуальный редактор форм для упрощения создания графического интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы базы данных.

При запуске среды по центру экрана вы увидите окно «Начальная страница». В этом окне можно создать новый проект, открыть проект с диска или выбрать из списка проект, с которым Вы работали ранее.

После создания или открытия проекта по центру окна будут на разных закладках отображаться файлы проекта. Слева и справа будут отображаться вспомогательные панели.

Каждую панель можно перетащить в любое место экрана. При этом будут появляться вспомогательные окна с возможностью указания позиции, на которой вы хотите поместить перетаскиваемую панель. Если какой-то из панелей нет на экране, то отобразить ее можно с помощью команды меню «Вид» или с помощью специальных кнопок на панели задач.

На панели «Обозреватель решений» отображаются все файлы, входящие в проект. Двойным щелчком можно открыть любой файл для редактирования. В контекстном меню любого файла имеются стандартные команды переименования, удаления и т.п. На этой же панели в контекстном меню проекта имеются команды для добавления новых или существующих на диске элементов проекта (форм, классов, библиотек и т.п.)

На панели «Свойства» отображаются свойства выделенного компонента. При этом в нижней части панели отображается краткое описание выбранного свойства. На этой же панели можно задать тип группировки свойств (по категориям, в алфавитном порядке), а также переключиться на отображение списка событий. Обратите внимание, что если Вы находитесь в режиме редактирования кода, то на данной панели никаких свойств или событий не отображается.

На панели «Панель элементов» отображается список компонентов, которые можно разместить на форме проекта. Компоненты могут быть видимыми и невидимыми. Если Вы наносите на форму невидимый элемент, то под формой автоматически создается отдельная область, на которой размещаются все невидимые элементы. Обратите внимание, что если Вы находитесь в режиме редактирования кода, то на данной панели никаких компонентов не отображается.

На панели «Список ошибок» будут отображаться ошибки или предупреждения, обнаруженные компилятором. Двойным щелчком по нужной строке вы сможете автоматически перейти в ту часть кода, где данная ошибка возникла.

Если Вы находитесь в режиме редактирования кода, то компилятор автоматически проверяет правильность кода при вводе. При обнаружении ошибки ее место будет подчеркнуто красной линией. При вводе функций, методов, редактор автоматически «подсказывает» правильность написания. Если функция или метод имеет несколько вариантов вызова, то стрелками вверх/вниз можно перейти на нужный вариант вызова.

Для запуска программы на выполнение используйте специальную кнопку на панели инструментов «Начать отладку» или нажмите F5. Если компилятор обнаружит ошибку, то он выдаст запрос, выполнить ли программу без учета ошибки. Если ответить «Да», то программа выполнит последнюю успешную версию до внесенных изменений, но ошибочный код работать не будет. Если ответить «Нет», то программа не выполняется.

Для сохранения проекта рекомендуется всегда использовать команду "Файл – Сохранить все" или кнопку на панели инструментов «Сохранить все». Только так вы можете быть уверены, что сохранили все файлы проекта.

Если Вы выполняете программу с помощью кнопки «Начать отладку» или нажатием клавиши F5, то на выходе получается исполняемый файл в папке bin\Debug, который не является до конца оптимизированным, так как содержит в себе вспомогательную информацию, предназначенную для дальнейшей отладки проекта.

Если ваша программа полностью готова, то для ее окончательной компиляции используйте команду меню "Построение - Построить" или клавишу F6. В этом случае Вы получите полностью оптимизированный исполняемый файл и размещаться он будет в папке bin\Release.

 

Вопросы для самопроверки

1. Как появилась платформа .NET Framework?

2. Нужно ли в .NET «собирать» версии программ для разных типов процессоров (x86 и x64)? Почему?

3. Как происходит компиляция кода в .NET?

4. Что означают такие аббревиатуры как CLI и CLR при программировании для .NET?

5. Какие преимущества для разработчика предоставляет платформа .NET?

6. Что означает понятие «языки программирования .NET»? В чем их особенности?

7. Дайте характеристику языку программирования C#.

8. Из каких фалов состоит проект C# в среде Visual Studio?