Эксперт
Сергей
Сергей
Задать вопрос
Мы готовы помочь Вам.

Цель:

Усвоение основных базовых понятий технологии .NET

Задачи:

Дополнить глоссарий терминов базовыми понятиями технологии .NET.

Содержание темы:

Разработчику знакомство с технологией .NET необходимо начать с разбора основных базовых понятий технологии .NET. К ним относятся:

проект;

пространство имен; решение;

сборка; модуль; язык IL;

декларация (манифест) сборки.

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

Проект (Project) – это основная единица, с которой имеет дело разработчик. Сначала он должен выбрать тип проекта, после чего Visual Studio создает каркас проекта в соответствии с выбранным типом. Visual Studio.Net предлагает большое разнообразие возможных типов проектов.

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

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

С точки зрения разработчика конечным результатом его работы, получаемым после компиляции исходного программного кода, является решение, а с точки зрения среды исполнения – сборка (assembly), содержащая PE-файл, т.е. модуль в формате исполняемого файла PE (Portable Executable) для 32-разрядной ОС Windows либо DLL (Dynamic Link Library) файл.

В результате компиляции решения создается исполняемый файл в формате PE (PE-файл), который называется сборкой (assembly).

Таким образом, программист работает с решением, а среда исполнения – со сборкой.

Сборка – это двоичный файл (DLL или ЕХЕ), который содержит в себе номер версии, метаданные, а также типы (классы, интерфейсы, структуры и т. п.) и дополнительные ресурсы (изображения, таблицы строковых данных и т.д.).

Сборка (самоописываемый набор кода, ресурсов и метаданных) является основным блоком .NET-приложений.

Сборки .NET содержат не платформенно-зависимые инструкции, а код на так называемом промежуточном языке Microsoft (Microsoft Intermediate Language, MSIL или просто IL). Этот язык не зависит ни от платформы, ни от типа центрального процессора. Код IL компилируется в платформенно-зависимые инструкции только во время выполнения.

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

Причиной появления понятия сборки можно считать трудности установки Windows- приложений. Обычное Windows-приложение состоит из множества файлов – запускаемые модули, библиотеки, дополнительные файлы и т.п. Помимо этого, при установке некоторых приложений (особенно COM-компонент) необходимо записывать в реестр Windows сведения о нахождении и способе вызова. Наконец, многие приложения использовали разделяемые DLL, что зачастую приводило к проблемам при установке более новых версий этой DLL. Понятие сборки было введено для того, чтобы решить эти проблемы.

Сборка состоит из четырех компонентов:

  •  декларация сборки или манифест (ее метаданные) – сведения о сборке, необходимые CLR;
  • метаданные типов сведения о типах, хранящихся в данной сборке;
  • код на промежуточном языке;
  • ресурсы – неисполняемые данные, логически связанные с приложением и внедренные в приложение. Пример – различные наборы строк или изображений, отображаемых пользовательским интерфейсом в зависимости от назначенной ему культуры. Упаковав подобные данные в ресурсный файл, можно заменять их без перекомпиляции приложения. Термин ресурс (resource) относится к любым материалам (за исключением кода), которые используются сборкой. Ресурсы могут включать графические материалы (пиктограммы, растровые изображения и т.п.) или то, что программа может использовать для выполнения своей работы (например, текст или двоичные файлы).

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

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

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

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

Приложения .NET создаются путем объединения любого количества сборок.

Содержимое сборки описано в ее декларации (manifest), которая включает следующие сведения:

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

Как правило, разработчику не требуется разбираться в структуре декларации сборки – она создается и используется CLR автоматически. Тем не менее, ему придется явно определить метаданные, которые описывают идентифицирующие сборку сведения.

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

У каждой сборки имеется только одна декларация, которая содержит все сведения, описывающие эту сборку. Декларация сборки хранится в отдельном файле либо в одном из модулей сборки. Обычно данные содержатся в файле AssemblyInfo.vb (AssemblyInfo.cs), который входит в состав проекта. Он включает ряд атрибутов, идентифицирующих сборку, которые по умолчанию содержат Null-значения.

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

Сборка также содержит один или несколько модулей. Модуль (module) хранит код приложения или библиотеки, а также метаданные, описывающие этот код. Во время компиляции проекта в сборку исходный текст, написанный на языке высокого уровня, транслируется в IL-код. Благодаря такому преобразованию свободно взаимодействуют программы на разных языках. Например, можно написать на Visual С# приложение, которое вызывает DLL, разработанную с применением языка Visual Basic .NET. Перед исполнением оба компонента преобразуются в IL-код, что устраняет проблемы с совместимостью языков высокого уровня.

Была ли полезна данная статья?
Да
65.95%
Нет
34.05%
Проголосовало: 185

или напишите нам прямо сейчас:

Написать в WhatsApp Написать в Telegram