Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
программирование лекции.doc
Скачиваний:
32
Добавлен:
03.12.2018
Размер:
4.85 Mб
Скачать

2.2 Платформа .Nет Framework

Язык С# работает на платформе .NЕТ Framework и имеет с ней тесную связь. Во-первых, этот язык с самого начала был задуман в качестве языка написания кода для .NЕТ Framework, а во-вторых, он, в свою очередь, полностью ориентирован на библиотеки данной платформы.

Платформа .NЕТ Framework – это единая универсальная база программирования, предназначенная для построения систем широкого спектра. Вот только некоторые из них: Windows и Web-приложения, приложения баз данных, приложения для мобильных и переносных устройств, механизмы поддержки электронной почты и коммерции.

Платформа .NЕТ позволяет успешно решать не только указанные выше задачи межплатформенной переносимости и межъязыкового взаимодействия, но и другие очень важные для современных компьютерных технологий задачи, такие как: безопасность, надежность, использование готовых компонентов.

2.3 Интегрированная среда разработки Visual Studio

Данная платформа включает в себя, прежде всего, среду разработки для нескольких языков программирования, называемую Visual Studio.NET, которая предоставляет мощные и удобные средства написания, корректировки, компиляции, отладки и запуска приложений, исполь­зующих .NЕТ-совместимые языки. Это, прежде всего, языки С#, VВ.NЕТ, С++ и J#.

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

Платформа .NЕТ является открытой средой. Это значит, что компиляторы для нее могут поставляться и сторонними разработчиками. К настоящему времени разработаны десятки компиляторов для .NЕТ, например, Ada, COBOL, Delphi, Eiffel, Fortran, Lips, Oberon, Perl и Python.

Все .NЕТ-совместимые языки должны отвечать требованиям общеязыковой спецификации (Common Language Specification, CLS), в которой описываются общие для всех языков характеристики. Это позволяет использовать для разра­ботки приложения несколько языков программирования и вести полноценную межъязыковую отладку. Все программы независимо от языка используют одни и те же базовые классы библиотеки .NЕТ.

Среда разработки обычно содержит:

  • текстовый редактор, для ввода и корректировки текста программы;

  • компилятор, для перевода программы в машинные коды;

  • средства отладки и запуска программ;

  • библиотеки, для многократно используемых элементов программ;

  • справочную систему и другие элементы.

2.3.1Общеязыковая среда выполнения clr

Каждый язык, входящий в состав Visual Studio, имеет свой компилятор с одной важной специфической особенностью: для обеспечения переносимости такой компилятор переводит программу не в исполняемый код, а в набор машинно-независимых инструкций языка СIL (Common Intermediate Language – общий промежуточный язык). Этот язык не содержит команд, зависящих от исходного языка, опера­ционной системы и типа компьютера. Программа на языке СIL выполняется под управлением системы CLR (Common Language Runtime общеязыковой среды выполнения).

2.3.1.1 Исполнение кода

При запуске программы система CLR пере­водит код с языка СIL в машинно-зависимые инструкции конкретного процессора, которые немедленно выполняются. Указанные преобразования СIL-программы в исполняемый код осуществляет JIT-компилятор («just in time»), компилируя только те части программы, которые требует­ся выполнить в данный момент. Каждая часть программы компилируется один раз и сохраняется в кэше для дальнейшего использования.

Двухфазное кодирование (рис. 2.1) имеет два существенных преимущества.

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

Рисунок 2.1 Схема двухфазного кодирования

Код, выполняемый под контролем системы CLR, называется управляемым кодом. Причем, в управляемый код включается вся системная информация, необходимая для нормального функционирования программы – метаинформация, а следовательно, не требуется регистрация отдельных частей программы (объектов, динамических библиотек и т.д.) в системном регистре.

В ходе компиляции СIL-кода в нем и метаданных (сведениях об объектах, ис­пользуемых в программе, и о самой сборке) ищутся ненадежные фрагменты, плохо изолированные от других объектов, ненадежно защищенные от ошибочного или злонамеренного разрушения, проверяется правильность генерации машинного кода. Если встречается ненадежный код, то возбуждается исключение.

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

Помимо управляемого кода программист имеет возможность использовать большое количество программ, ранее написанных для Windows. Такой род программ относят к неуправляемому коду. В Visual Studio управляемый и неуправляемый коды могут, не мешая друг другу, работать совместно.

2.3.1.2 Общеязыковая инфраструктура

Набор спецификаций, определяющих правила функционирования технологии .NЕТ, называется общеязыковой инфраструктурой (Common Language Infrastructure, CLI). К таким спецификациям относятся:

  • Common Type System (CTS) – общая система типов, определяющая возможность межъязыкового взаимодействия программ;

  • Common Intermediate Language (CIL) – общий промежуточный язык программирования;

  • Extensible Metadata – расширяемые метаданные;

  • Framework Class Library – библиотека классов, которые должна использовать любая программа в рамках технологии .NЕТ;

  • Platform Invocation Service – служба согласования платформ, обеспечивающая взаимодействие .NЕТ Framework и операционной системы;

  • Extended Portable Executable (PE) File Format – стандартный формат исполняемых файлов в Win32, имеющий в заголовке бит, присущий только технологии .NЕТ; обнаружив его, загрузчик обращается к среде CLR.

2.3.1.3 Сборки

В процессе компиляции программы создается файл (сборка) с расширением ехе или dll, который содержит код на языке IL и метаданные. Сборка может состоять из нескольких модулей. Каждая сборка имеет уникальное имя. Во время выполнения управляемый код получает дополнительное обслуживание, такое как: сборка мусора, повышенная защита, взаимодействие с неуправляемым кодом, поддержка межъязыковой отладки и др.

Сборки – фундаментальные части программ для .NЕТ Framework, наделенные следующими функциями:

  • содержит CLR-код, связанный с манифестом сборки, имеющей только одну точку входа;

  • формирует границы защиты;

  • формирует границы типа;

  • определяет границы видимости ссылок;

  • определяет границы контроля версий;

  • определяет границу распространения;

  • является единицей, для которой поддерживается параллельное выполнение.

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