Найти в Дзене

Отработка СТП(01.04)

Программная платформа .NET, .NET Core

В 1995 году была задумана новая модель, призванная заменить COM и связанные с ним нежелательные эффекты, особенно версии и использование реестра Windows, от которого COM зависит для определения доступных интерфейсов или контрактов; поврежденный или измененный фрагмент реестра может указывать на то, что компонент был недоступен во время выполнения. Кроме того, для установки приложений требовались повышенные разрешения, поскольку реестр Windows является важной частью системы.

К концу 2000 года были выпущены первые бета-версии .NET framework, а первая версия появилась 13 февраля 2002 года. С тех пор .NET всегда согласовывалась с новыми версиями IDE (Visual Studio).

Альтернативный .NET впервые появился в 2015 году. Microsoft объявила о создании и доступности другой версии .NET под названием .NET Core.

.NET Core позволяет языкам взаимодействовать друг с другом (однако, количество поддерживаемых языков ограничено ). Что еще более важно, эта новая структура больше не ограничивается работой в операционной системе Windows, но также может работать (и разрабатываться) в iOS и Linux.

.NET Core дал разработчикам Windows возможность поставлять свое программное обеспечение на различные платформы. Linux и macOS больше не являются проблемой для разработчиков C# . Следовательно, необходимо обеспечить производительность и поддержку нескольких платформ - два общих нефункциональных требования в нескольких системах.

И консольные приложения, и веб-приложения, разработанные с помощью .NET Core в Windows, также почти полностью совместимы с Linux и macOS. Это означает, что не нужно заново создавать приложение, чтобы запустить его на этих платформах. Кроме того, поведение, очень зависящее от платформы, теперь имеет многоплатформенную поддержку, как, например, класс System.IO.Ports.SerialPort, который, начиная с .NET Core 3.0, находится в Linux.

.NET Core framework - это программная платфформа для создания веб-приложений и систем служб в операционных системах Windows, iOS и Linux, а также приложений WinForms и WPF в операционных системах Windows. Краткое изложение некоторых основных функций .NET Core:

1) Существующее программное обеспечение .NET framework может взаимодействовать с новым программным обеспечением .NET Core и наоборот через .NET Standard.

2) Поддержка множества языков программирования: приложения .NET Core могут быть созданы с использованием языков программирования C # ,F # и VB.NET (при этом C # является основным направлением для ASP.NET Core).

3) Общая среда выполнения, общая для всех языков .NET Core. Одним из аспектов этой машины является четко определенный набор типов, понятных каждому языку .NET Core.

4) Обширная библиотека базовых классов: эта библиотека предоставляет тысячи предопределенных типов, которые позволяют создавать библиотеки кода, простые терминальные приложения, графические настольные приложения и веб-сайты корпоративного уровня.

5) Расширенная поддержка командной строки. Интерфейс командной строки .NET Core (CLI) - это кроссплатформенная цепочка инструментов для разработки и упаковки приложений .NET Core. Дополнительные инструменты могут быть установлены (глобально или локально) помимо стандартных инструментов, поставляемых с .NET Core SDK.

CLR и CIL являются основными компонентами .NET Core.

Common Language Runtime(CLR)

Чтобы решить некоторые проблемы COM и представить кучу новых возможностей, которые были запрошены как часть новой платформы, команда Microsoft начала развивать предыдущие идеи (а также названия, связанные с платформой). Таким образом, фреймворк вскоре был переименован в Component Object Runtime (COR) перед первой публичной бета-версией, когда ему наконец было присвоено имя Common Language Runtime, чтобы объяснить тот факт, что новая платформа не была связана с одним языком.

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

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

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

Common Intermediate Language(CIL)

Большая часть кода (если не весь), написанная для CLR, содержит не машинный код, а промежуточный язык, называемый Common Intermediate Language (CIL), или просто Intermediate Language (IL).

CLR никогда не выполняет CIL напрямую. Вместо этого CIL всегда транслируется в машинный код перед его выполнением с помощью техники, называемой JIT-компиляцией (Just-In-Time). Это означает, что процесс JIT всегда адаптирует полученный исполняемый код к целевой машине (независимо от разработчика). Существует несколько режимов выполнения JIT-процесса.

Таким образом, CLR - это то, что можно назвать фреймворком, ориентированным на типы. Для CLR все является типом, объектом или значением.

Помимо инструкций CIL, сборка .NET Core содержит полные и точные метаданные, которые описывают каждый тип (например, класс, структуру, перечисление), определенный в двоичном файле, а также члены каждого типа (например, свойства , методы, события). К счастью, компилятор (а не программист) всегда создает самые свежие и самые лучшие метаданные типа.

Метаданные используются во многих аспектах среды выполнения .NET Core, а также в различных инструментах разработки. Например, функция IntelliSense, предоставляемая такими инструментами, как Visual Studio, становится возможной благодаря чтению метаданных сборки во время разработки. Метаданные также используются различными утилитами просмотра объектов, инструментами отладки и самим компилятором C # . Безусловно, метаданные являются основой множества технологий .NET, включая отражение, позднее связывание и сериализацию объектов.

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

Важно отметить, что язык C # можно использовать только для создания программного обеспечения, размещенного в среде выполнения .NET Core. Официально термин, используемый для описания кода, ориентированного на среду выполнения .NET Core, - это управляемый код. Двоичный блок, содержащий управляемый код, называется сборкой . И наоборот, код, который не может быть размещен непосредственно в среде выполнения .NET Core, называется неуправляемым кодом.

.NET Core может работать в различных операционных системах. Таким образом, вполне возможно создать приложение C # на компьютере под ОС Windows и запустить программу на телефоне с iOS, используя среду выполнения .NET Core. Кроме того можно создать приложение C # в Linux с помощью Visual Studio Code и запустить программу в Windows. С помощью Visual Studio для Mac можно создавать приложения .NET Core на Mac для запуска в Windows, macOS или Linux. К неуправляемому коду по-прежнему можно получить доступ из программы на C # , но затем он привязывается к определенной цели разработки.