Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция3.doc
Скачиваний:
1
Добавлен:
03.01.2020
Размер:
669.7 Кб
Скачать

Лекция №3 Тема: Среда Microsoft Visual c # 2008 Express Edition. Структура программы в языке c#.

Технология .NET представляет собой способ разработки и развёртывания программного обеспечения, который с помощью таких широко используемых стандартов как HTTP и XML реализует взаимодействие программ и обеспечивает с помощью Internet доступ к многочисленным программным сервисам.

Технология включает .NET Framework – платформу для разработки и исполнения приложений, которая упрощает и ускоряет разработку, поддерживает полноценное объектно-ориентированное программирование для web, устраняет многие типы наиболее распространённых программных ошибок, предоставляет общий API для всех языков.

Любой программный код, написанный под новую платформу, называется управляемым (managed code) и компилируется в бинарный вид, понятный .NET runtime. Этот формат называется Microsoft Intermediate Language (MSIL, IL, CIL). В связи с этим появляется возможность легкой интеграции кодов, написанных на разных языках программирования, т.к. платформа более низкого уровня у них одна.

Далее, с помощью утилиты al.exe (см. п. 4.) исполняемые модули и другие файлы проекта объединяются в сборку. Следовательно, для создания приложения используя разные языки необходимо лишь откомпилировать каждый отдельный файл в исполняемый модуль, а затем создать из них сборку.

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

Microsoft .NET Framework

.NET Framework – среда для создания и запуска приложений. Все приложения не просто используют библиотеки .NET Framework, но и выполняются под управлением ее компонент.

Её основные компоненты:

  • общеязыковая исполняющая среда (Common Language Runtime) – динамический компонент;

  • библиотека классов .NET Framework Class Library – статический компонент.

  1. Общеязыковая исполняющая среда (Common Language Runtime)

Common Language Runtime (CLR) – это набор утилит и служб, которые включают в себя все необходимые средства для создания и запуска приложений.

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

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

Код на CIL начинает выполняться под управлением CLR (по этой причине код называется управляемым). Исполнительную среду можно рассматривать, как своеобразную виртуальную IL-машину. Эта машина транслирует «на лету» требуемые для исполнения участки кода в команды реального процессора, который в действительности и выполняет код.

Другими словами, команды на языке CIL компилируются в машинный код соответствующего типа процессора по запросу (just-in-time) в период выполнения. Обычно компиляция метода происходит один раз во время его первого вызова. Затем результат кэшируется в памяти, чтобы избежать задержек при повторных вызовах. JIT-компилятор выполняет оптимизацию кода специально для процессора, на котором исполняется этот код.

Преобразуя команды CIL в команды процессора, JIT-компилятор выполняет верификацию кода на предмет безопасности типов.

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

Ресурсы, выделяемые управляемым кодом, освобождаются сборщиком мусора (Garbage Collector). Иначе говоря, программист только выделяет память, но не освобождает её – это делает CLR. Сборщик мусора отслеживает все ссылки на объекты, создаваемые программой, и уничтожает эти объекты, когда занимаемая ими память требуется где-то ещё. Таким образом, в приложениях с управляемым кодом разрешается проблема утечек памяти.

Верификация кода также является основой способности CLR выполнять несколько приложений внутри одного процесса. Процесс разделяется на виртуальные отсеки – домены приложений (application domain). Таким образом, повышается эффективность использования памяти, выделяемой процессам. Домены приложений не менее безопасны, чем процессы, так как их границы не могут быть нарушены управляемыми приложениями.

Для того чтобы классы, разработанные на разных языках, мирно уживались в рамках одного приложения, для их бесшовной отладки, возможности построения разноязычных потомков, они должны удовлетворять некоторым ограничениям. Эти ограничения задаются набором общеязыковых спецификаций – CLS (Common Language Specification). Класс, удовлетворяющий спецификациям CLS, называется CLS-совместимым. Он доступен для использования в других языках, классы которых могут быть клиентами или наследниками совместимого класса.

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

Все компоненты, входящие в CLR представлены на рис.1.2., а именно:

  • Class loader – управляет загрузкой классов,

  • MS Intermediate Language – специальный язык независимый от платформы,

  • Code manager – управляет запуском кода,

  • Garbage Collector – сборщик мусора, для освобождения неиспользуемых ресурсов памяти,

  • Security Engine – обеспечивает механизм защиты приложений,

  • Debugger – позволяет пользователю отлаживать приложение и отслеживать выполнение запущенного приложения,

  • Type checker – гарантирует правильное приведение типов данных,

  • Exception manager – обеспечивает механизм передачи исключений,

  • Thread support – отвечает за поддержку классов для создания многопоточных приложений,

  • COM marshaler – обеспечивает взаимодействие с СОМ – компонентами.

Base Class Library Support

Thread Support

COM Marshaler

Type Checker

Exception Manager

Security Engine

Debug Engine

MSIL to Native

Compilers

Code

Manager

Garbage

Collector

Class Loader

Рис.1.2. Компоненты CLR.

Сама CLR состоит из двух главных компонентов:

  • ядра (mscoree.dll),

  • библиотеки базовых классов (mscorlib.dll).

Наличие этих файлов на диске – верный признак того, что на компьютере, по крайней мере, была предпринята попытка установки платформы .NET. Ядро среды выполнения реализовано в виде библиотеки mscoree.dll.

При компоновке сборки в неё встраивается специальная информация, которая при запуске приложения (файла с расширением EXE) или при загрузке библиотеки (обращение к DLL из неуправляемого модуля – вызов функции LoadLibrary для загрузки управляемой сборки) приводит к загрузке и инициализации CLR.

После загрузки CLR в адресное пространство процесса, ядро среды выполнения реализует следующие действия:

  • находит местонахождение сборки,

  • загружает сборку в память,

  • производит анализ содержимого сборки (выявляет классы, структуры, интерфейсы),

  • производит анализ метаданных,

  • обеспечивает компиляцию кода на промежуточном языке (CIL) в платформозависимые инструкции (ассемблерный код). Фактически создается так называемый управляемый модуль – переносимый исполняемый файл (Portable Executable или PE-файл)1,

  • выполняет проверки, связанные с обеспечением безопасности,

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

Ниже представлена схема выполнения .NET приложения в среде CLR.

Рис. 1. Схема выполнения .NET приложения в среде CLR

2..NET Framework Class library (FCL)

В .NET включены сборки библиотеки классов .NET Framework Class library (FCL), содержащие определения нескольких тысяч типов, каждый из которых предоставляет некоторую функциональность. Наборы «родственных» типов собраны в отдельные пространства имён.

К примеру, пространство имён System содержит базовый класс Object, из которого в конечном счёте порождаются все остальные типы. Таким образом, всякая сущность в .NET является объектом со своими полями и методами.

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

Таблица 1. Основные пространства имён FCL

Пространство имён

Содержание

System

Фундаментальные типы данных и вспомогательные классы

System.Collections

Хэш-таблицы, массивы переменной размерности и другие контейнеры

System.Data

Классы ADO.NET для доступа к данным

System.Drawing

Классы для вывода графики (GDI+)

System.IO

Классы файлового и потокового ввода-вывода

System.Net

Классы для работы с сетевыми протоколами, например, с HTTP

System.Reflection

Классы для чтения и записи метаданных

System.Runtime.Remoting

Классы для распределённых приложений

System.ServiceProcess

Классы для создания служб Windows

Sustem.Threading

Классы для создания и управления потоками

System.Web

Классы для поддержки HTTP

System.Web.Services

Классы для разработки web-сервисов

System.Web.Services.Protocols

Классы для разработки клиентов web-сервисов

System.Web.UI

Основные классы, используемые ASP.NET

System.Web.UI.WebControls

Серверные элементы управления ASP.NET

System.Windows.Forms

Классы для приложений с графическим интерфейсом пользователя

System.Xml

Классы для чтения и ввода данных в формате XML

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]