Paranoid - курс от Codeby Security School

Представляем вашему вниманию курс от команды codeby - "Комплекс мер по защите персональных данных, анонимности в интернете и не только" Подробнее ...


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

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

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

CLR

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

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

mscoree.dll

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

CLR и управляемый код

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

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

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

версии среды

На рисунке видно, что версии среды 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.


Codeby Security School от Сodeby

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


И ещё важно понимать, что, не смотря на то, что для 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 требуется в основном разработчикам компиляторов, рядовым разработчикам данная информация вряд ли пригодиться.

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

cls

Библиотеки

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

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

Base Class Library (BCL)

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

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

файл сборки

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

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)
Но тут конечно можно долго спорить.

состав платформы

Читайте также:


Безопасная сделка с гарантом Сodeby

Гарант является доверенным посредником между Участниками при проведении сделки.​ Услуга сайта «Проведение сделок через Гаранта» предоставляется всем зарегистрированным пользователям codeby.net Подробнее ...


Похожие темы

c# DataGridView свойство ColumnCount Свойство ColumnCount элемента управления DataGridView Свойство ColumnCount элемента управления DataGridView обычно используется для решения следующих...
c# Как программно добавить контрол на форму... c# Как программно добавить контрол на форму В этой статье рассмотрим процесс программного добавления визуального элемента управления (Control) на фор...
Как удалить параметр реестра Windows, используя яз... Как удалить параметр реестра Windows В этом уроке научимся удалять параметры реестра, используя язык c#. Параметры будем удалять, как по одиночке, та...
Матричный метод решения СЛАУ. Распараллеливание с ... Цель работы: приобретение навыков разработки параллельных программ с использованием OpenMP. Задание: Разработать последовательную и параллель...
WebBrowser основные свойства для работы с контенто... WebBrowser работа с контентом И так, html страница была полностью загружена в control webBrowser, и теперь можно переходить к обработке полученных да...