• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Основные компоненты .NET Framework (CLR и Framework Class Library)

Wise

Green Team
19.01.2018
32
11
BIT
0
В первой статье Вы узнали, что платформа .NET Framework состоит из 2 основных компонентов, это общеязыковая исполняющая среда (CLR) и библиотека классов платформы (FCL).

Сегодня мы более подробно рассмотрим, каждый из этих компонентов.
CLR

Ядром платформы .NET Framework является общеязыковая исполняющая среда (Common Language Runtime) или сокращенно CLR.

На компьютере храниться в виде файла динамической библиотеки mscoree.dll, в проекте данная сборка подключается автоматически.

osnovnye-komponenty-net-framework-clr-i-framework_1.png


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

osnovnye-komponenty-net-framework-clr-i-framework_2.png


Какие задачи решает CLR?

  1. Загрузка пользовательских сборок
  2. Управление памятью
  3. Работа с потоками
  4. Безопасность выполнения кода
  5. Очистка памяти (сборщик мусора)
  6. и многое другое

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

osnovnye-komponenty-net-framework-clr-i-framework_3.png


На рисунке видно, что версии среды 3.0, 3.5 — не существует. Поэтому важно понимать, что версия платформы и версия среды — это разные вещи.

Кроме двух компонентов, которыми часто описывают всю платформу, существует ещё два не мало важных компонента, которые составляют основу платформы .NET
CTS

CTS (Common Type System) – система общих типов.

Это детальное описание (спецификация) всех типов данных и программных конструкций, поддерживаемых исполняющей средой.

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

Важно знать то, что CTS предоставляет разработчикам 5 типов. О них я уже писал ранее, но повторюсь ещё раз.

Типы: класс, интерфейс, делегат, структура, перечисление. Каждый тип может содержать любое количество членов.

Какие задачи решает CTS?

  1. Обеспечивает многоязыковую поддержку
  2. ООП
  3. Описывает характеристики членов. Например: доступность: public, private, protected
  4. Определяет правила, которых нужно придерживаться языкам, чтобы типы и объекты написанные на разных языках мог бы взаимодействовать между собой

Ещё одним важным моментом, связанным с CTS, является, то, что она содержит набор фундаментальных типов данных.

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

Например: в CTS описан тип Int32, который храниться в библиотеки mscorlib.dll. И хотя в языке c# он будет иметь ключевое слово int, а допустим в Visual Basic — Integer. Все эти ключевые слова, всего лишь псевдонимы, к одному и тому же типу Int32.

И ещё важно понимать, что, не смотря на то, что для c# указано ключевое слово int, мы так же можем использовать и Int32.

// int a = 5;
// System.Int32 b = 10;
CLS

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

Напомню, что для каждого языка в мире .NET используется свой компилятор (csc.exe — c# , vbc.exe — Visual Basic), но, не смотря на то, что компилятор для каждого языка свой, в результате образуется промежуточный код, на языке IL.

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

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

В итоге мы получаем примерно вот такую структуру:

osnovnye-komponenty-net-framework-clr-i-framework_4.png

Библиотеки

На самом деле в .NET существует два типа библиотек:

  1. BCL (Base Class Library) библиотека базовых классов
  2. FCL (Framework Сlass Library) библиотека классов платформы
Base Class Library (BCL)

Base Class Library (BCL) — это стандартная библиотека для всех языков платформы .NET, которая содержит набор пространств имен. Внутри которых содержится набор базовых типов, которые обеспечивают: файловый и консольный ввод-вывод, безопасность, XML, сетевой доступ, многопоточную обработку и многое другое.

Основной или главной сборкой данной библиотеки является файл динамической библиотеки — mscorlib.dll

osnovnye-komponenty-net-framework-clr-i-framework_5.png


Данная библиотека подключается автоматически во время создания проекта, так же стоит понимать, что существуют и другие файлы сборки базовых библиотек.
Framework Class Library (FCL)

Вторым типом библиотек платформы .NET Framework является библиотека классов платформы (FCL). Она является вторым основным компонентом платформы .NET, которая упрощают работу программиста, предоставляя ему, более расширенные библиотеки, такие как: ASP.NET, ADO.NET, Windows Forms, WPF.

В принципе можно сказать, что Framework Class Library включает в себя библиотеку базовых классов BCL, которая, по сути, является её ядром.

Тогда на вопрос, из каких основных компонентов состоит платформа .NET? Можно ответить так:

.NET Framework = CLR + FCL

Такую официальную формулировку так же приводят: MSDN, Wiki и многие другие авторы книг.

«The key components of the .NET Framework are the common language runtime (CLR) and the .NET Framework class library». MSDN

Но мы знаем, что FCL включает в себя библиотеки базовых классов. И правильнее формулировка должна звучать так:

.NET Framework = CLR + Libraries (FCL, BCL)
Но тут конечно можно долго спорить.

osnovnye-komponenty-net-framework-clr-i-framework_6.png
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!