Что такое .NET? Введение и обзор

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

Облачные приложения

Кроссплатформенные клиентские приложения

Приложения для Windows

Другие типы приложений

Компоненты

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

Использование .NET

Приложения и библиотеки .NET создаются из исходного кода и файла проекта с помощью интерфейса командной строки .NET или интегрированной среды разработки (IDE), например Visual Studio.

Ниже приведен пример минимального приложения .NET:

Файл проекта:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net7.0</TargetFramework>
  </PropertyGroup>
</Project>

Исходный код:

Console.WriteLine("Hello, World!");

Приложение можно создать и запустить с помощью .NET CLI:

% dotnet run
Hello, World!

Его также можно создать и запустить как два отдельных шага. Следующий пример предназначен для приложения с именем app:

% dotnet build
% ./bin/Debug/net6.0/app 
Hello, World!

Двоичные распределения

  • Пакет SDK для .NET — набор средств, библиотек и сред выполнения для разработки, создания и тестирования приложений.
  • Среды выполнения .NET — набор сред выполнения и библиотек для запуска приложений.

.NET можно скачать по следующей ссылке:

Бесплатный и открытый код

.NET предоставляется бесплатно, открытый код и является проектом .NET Foundation. Платформа .NET поддерживается корпорацией Майкрософт и сообществом на сайте GitHub в нескольких репозиториях.

Исходные и двоичные файлы .NET лицензируются с помощью лицензии MIT. Дополнительные лицензии применяются в Windows для двоичных дистрибутивов.

Поддержка

Корпорация Майкрософт поддерживает .NET в операционных системах Android, Apple, Linux и Windows. Его можно использовать в архитектурах Arm64, x64 и x86. Она также поддерживается в эмулированных средах, таких как macOS Rosetta 2.

Новые версии .NET выпускаются ежегодно в ноябре. Выпуски .NET в нечетные годы — это выпуски Long-Term поддержки (LTS) и поддерживаются в течение трех лет. Выпуски в четные годы являются выпусками Standard-Term поддержки (STS) и поддерживаются в течение 18 месяцев. Уровень качества, политики критических изменений и все остальные аспекты выпусков одинаковы. Дополнительные сведения см. в разделе Выпуски и поддержка.

Команда .NET корпорации Майкрософт работает совместно с другими организациями для распространения и поддержки .NET различными способами.

Red Hat поддерживает .NET в операционной системе Red Hat Enterprise Linux (RHEL).

Samsung поддерживает .NET на платформах Tizen.

Среда выполнения

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

  • сборка мусора;
  • Безопасность памяти и безопасность типов.
  • Высокоуровневая поддержка языков программирования.
  • Кроссплатформенный дизайн.

.NET иногда называют средой выполнения управляемого кода. Он называется управляемым главным образом потому, что использует сборщик мусора для управления памятью и обеспечивает безопасность типа и памяти. Среда CLR виртуализирует (или абстрагирует) различные понятия операционной системы и оборудования, такие как память, потоки и исключения.

Среда CLR была разработана как кроссплатформенная среда выполнения с самого начала. Он был перенесен в несколько операционных систем и архитектур. Кроссплатформенный код .NET обычно не требует повторной компиляции для выполнения в новых средах. Вместо этого необходимо просто установить другую среду выполнения для запуска приложения.

Среда выполнения предоставляет различные службы диагностики и API для отладчиков, дампов и средств трассировки , а также наблюдаемости. Реализация наблюдаемости в основном основана на OpenTelemetry, что обеспечивает гибкий мониторинг приложений и проектирование надежности сайта (SRE).

Среда выполнения предлагает низкоуровневые функции взаимодействия в стиле C, благодаря сочетанию P/Invoke, типов значений и возможности разбиения значений в пределах собственного или управляемого кода.

Языки

Среда выполнения предназначена для поддержки нескольких языков программирования. Языки C#, F# и Visual Basic поддерживаются корпорацией Майкрософт и разрабатываются совместно с сообществом.

  • C# — это современный объектно-ориентированный и типобезопасный язык программирования. Она имеет свои корни в семействе языков C и будет сразу же знакома программистам C, C++, Java и JavaScript.

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

  • В Visual Basic используется более подробный синтаксис, который ближе к обычному человеческому языку. Это может быть более простым языком для людей, не знакомых с программированием.

Компиляция

Приложения .NET (написанные на высокоуровневом языке, например C#), компилируются в промежуточный язык (IL). IL — это компактный формат кода, который может поддерживаться в любой операционной системе или архитектуре. Большинство приложений .NET используют API, поддерживаемые в нескольких средах, для выполнения которых требуется только среда выполнения .NET.

Для выполнения на ЦП, например Arm64 или x64, il должен быть скомпилирован в машинный код. .NET поддерживает модели компиляции "вперед и время" (AOT) и JIT-компиляции.

  • В Android, macOS и Linux JIT-компиляция используется по умолчанию, а AOT является необязательным (например, при использовании ReadyToRun).
  • В iOS AOT является обязательным (за исключением случаев, когда выполняется в симуляторе).
  • В средах WebAssembly (Wasm) AOT является обязательным.

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

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

Библиотеки среды выполнения.

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

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

Подробнее см. в статье Общие сведения о библиотеках среды выполнения.

Диспетчер пакетов NuGet

NuGet — это диспетчер пакетов для .NET. Это позволяет разработчикам обмениваться скомпилированными двоичными файлами друг с другом. NuGet.org предлагает множество популярных пакетов от сообщества.

Инструменты

Пакет SDK для .NET — это набор библиотек и средств для разработки и запуска приложений .NET. Он включает подсистему сборки MSBuild , компилятор Roslyn (C# и Visual Basic) и компилятор F# . Большинство команд выполняются с помощью dotnet команды . Средства CLI можно использовать для локальной разработки и непрерывной интеграции.

Семейство СЕТЕЙ Visual Studio обеспечивает отличную поддержку для .NET и языков C#, F# и Visual Basic.

Функции безопасности GitHub Codespaces и GitHub поддерживают .NET.

Записные книжки

.NET Interactive — это группа средств и интерфейсов командной строки, которые позволяют пользователям создавать интерактивные возможности в веб-приложениях, разметке и записных книжках.

Дополнительные сведения см. в следующих ресурсах:

CI/CD

MSBuild и .NET CLI можно использовать с различными средствами и средами непрерывной интеграции, например:

Дополнительные сведения см. в статье Использование пакета SDK для .NET в средах непрерывной интеграции (CI).

Модели развертывания

Приложения .NET можно публиковать в двух разных режимах:

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

По умолчанию приложения .NET запускаются с собственным исполняемым файлом. Исполняемый файл зависит от операционной системы и архитектуры. Приложения также можно запускать с помощью dotnet команды .

Приложения можно развертывать в контейнерах. Корпорация Майкрософт предоставляет образы контейнеров для различных целевых сред.

Журнал .NET

В 2002 году корпорация Майкрософт выпустила .NET Framework, платформу разработки для создания приложений Windows. Сегодня платформа .NET Framework версии 4.8 и по-прежнему полностью поддерживается корпорацией Майкрософт.

В 2014 году корпорация Майкрософт начала создавать кроссплатформенный преемник платформы .NET Framework с открытым кодом. Эта новая реализация .NET носит имя .NET Core до версии 3.1. Следующая версия после .NET Core 3.1 — .NET 5.

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

Экосистема .NET

Существует несколько вариантов .NET, каждый из которых поддерживает разные типы приложений. Причиной для нескольких вариантов является часть историческая, часть техническая.

Реализации .NET (исторический порядок):

  • платформа .NET Framework — предоставляет доступ к широким возможностям Windows и Windows Server. Также широко используется для облачных вычислений на основе Windows. Исходная .NET.
  • Mono — кроссплатформенная реализация платформа .NET Framework. Исходное сообщество и открытый код .NET. Используется для приложений Android, iOS и Wasm.
  • .NET (Core) — кроссплатформенная и открытый код реализация .NET, переоформенная для облачной эпохи, при этом она остается значительно совместимой с платформа .NET Framework. Используется для приложений Linux, macOS и Windows.

Дальнейшие действия