Microsoft.NET Framework

Продукт
Разработчики: Microsoft
Дата последнего релиза: 2023/11/17
Технологии: Средства разработки приложений

Содержание

.NET Framework — программная технология от компании Microsoft, предназначенная для создания обычных программ и веб-приложений.

2023: Выпуск .NET 8

17 ноября 2023 года стало известно о том, что компания Microsoft представила выпуск открытой платформы .NET 8, созданной благодаря унификации продуктов .NET Framework, .NET Core и Mono. На основе .NET 8 можно создавать многоплатформенные приложения для браузера, облачных систем, рабочего стола, IoT-устройств и мобильных платформ, используя единые библиотеки и общий процесс сборки, не зависящий от типа приложения. Сборки .NET SDK 8, .NET Runtime 8 и ASP.NET Core Runtime 8 сформированы для Linux, macOS и Windows. .NET Desktop Runtime 8 поставляется только для Windows. Ветка .NET 8 отнесена к категории LTS и будет сопровождаться в течение трёх лет до ноября 2026 года. Связанные с проектом наработки распространяются под лицензией MIT.

.NET 8

Как сообщалось, в состав .NET 8 входит Runtime с JIT-компилятором RyuJIT, спецификации API, библиотеки WPF, Windows Forms, WinUI, Entity Framework, интерфейс командной строки dotnet, а также инструменты для разработки микросервисов, библиотек, серверных, графических и консольных приложений. Отдельно опубликованы стек для разработки web-приложений ASP.NET Core 8.0, ORM-прослойка Entity Framework Core 8.0 (драйверы имеются, в том числе, для SQLite и PostgreSQL), библиотека WPF 8 (Windows Presentation Foundation), фреймворк Windows Forms 8 для разработки GUI, платформа Aspire 8 для создания приложений Cloud Native, фреймворк MAUI 8 для разработки многоплатформенных интерфейсов пользователя, а также выпуски языков C# 12 и F# 8. Поддержка .NET 8.0 и C# 12 включена в свободный редактор кода Visual Studio Code.

Возможности выпуска:

  • Проведена оптимизация производительности. Включён по умолчанию обновленный генератор кода, поддерживающий динамическую оптимизацию на основе профилирования выполнения кода (Dynamic Profile-Guided Optimization). Использование обновленного генератора кода обеспечивает прирост производительности приложений до 20%. Кроме того, в данной версии добавлена поддержка инструкций AVX-512, позволяющих оптимизировать производительность параллельных операций над векторными данными. Для примитивных типов реализован обновлен интерфейс, позволяющий напрямую без перекодирования разбирать и форматировать данные в формате UTF-8. В тестах TechEmpower производительность работы с JSON API увеличилась на 18%, а с Fortunes на 24%.
  • Добавлен стек .NET Aspire, предназначенный для разработки облачных приложений (cloud-native), используя технологии .NET. В .NET Aspire предоставляется большой набор компонентов, которые могут потребоваться при создании приложений, запускаемых в облачных окружениях, включая средства для сбора телеметрии, настройки, проверки работоспособности и обеспечения отказоустойчивости.
  • Расширены инструменты для упаковки приложений в изолированные контейнеры. По умолчанию обеспечена публикация образов контейнеров без Dockerfile и без пользователя root. Сокращён размер базового образа контейнера с компонентами платформы .NET. Добавлен минималистичный вариант образа для запуска приложений, скомпилированных в исполняемые файлы (Native AOT). Добавлен более защищённый вариант образов на базе Chiseled Ubuntu.
  • Оптимизирована эффективность компиляции в самодостаточные исполняемые файлы (Native AOT), в которых весь проект изначально скомпилирован в машинный код целевой платформы без использования промежуточного кода и без применения JIT.
  • Расширены возможности программных интерфейсов, которые можно использовать в системах машинного обучения. Например, в библиотеке System.Numerics оптимизирована совместимость с генеративными AI-системами. Добавлены примеры для создания чат-ботов, генерации контента и обращения к сервисам Azure AI.
  • В Blazor, платформе для создания web-приложений на языке C#, сокращено время загрузки страниц, оптимизирована масштабируемость, разрешено использование в одном приложении Blazor Server и Blazor WebAssembly для создания программ, сочетающих функции сервера и клиента. Добавлен Jiterpreter, более быстрый WebAssembly runtimе, позволивший оптимизировать отрисовку интерфейса на 20%. Расширены возможности аутентификации, авторизации и идентификации.
  • Расширен фреймворк MAUI для разработки многоплатформенных интерфейсов пользователя, в котором предоставлена возможность использования одной кодовой базы для сборки интерфейсов для Windows, macOS, iOS и Android. Добавлена экспериментальная поддержка компиляции (Native AOT). Добавлена поддержка платформ Xcode 15 и Android API 34. Модернизированы графические элементы и кнопки, оптимизирована обработка щелчков мышью и событий от клавиатуры.
  • В языке C# 12 добавлена поддержка измененного синтаксиса для создания первичных конструкторов в любых классах и структурах, а также оптимизировано создание массивов, span и других типов коллекций. Предоставлены средства для задания значений по умолчанию для параметров лямбда-выражений. Упрощена обработка необязательных аргументов. Добавлена возможность создания псевдонимов любых типов при помощи директивы "alias".


// Создание списка
List<int> a = [1, 2, 3, 4, 5, 6, 7, 8];
// Создание span-массивов
Span<char> b = ['a', 'b', 'c', 'd', 'e', 'f', 'h', 'i'];
// Use the spread operator to concatenate
int[] array1 = [1, 2, 3];
int[] array2 = [4, 5, 6];
int[] array3 = [7, 8, 9];
int[] fullArray = [..array1, ..array2, ..array3]; // содержимое будет [1, 2, 3, 4, 5, 6, 7, 8, 9]

  • В ASP.NET Core для одностраничных (SPA: single-page application) и web-приложений (Blazor) реализована поддержка аутентификации на основе Cookie и токенов. Предложен обновленный интерфейс пользователя для прохождения аутентификации. Усилена защита от атак XSRF/CSRF.
  • В Entity Framework Core предоставлены дополнительные сложные типы, которые можно использовать как объекты. Добавлена поддержка иерархических данных в SQL Server.
  • В пакетном менеджере NuGet оптимизирован аудит пакетов в проектах и обеспечено информирование о наличии известных уязвимостей.
  • В .NET Runtime добавлен режим упреждающей компиляции (AOT) для платформ WebAssembly (WASM) и Android.
  • WPF добавлен диалог открытия каталога (OpenFolderDialog) и включена поддержка аппаратного ускорения в RDP.
  • В отладчике обеспечен показ сводных отладочных данных и реализованы отладочные прослойки для обычно используемых типов .NET[1].

2022: Выпуск .NET 7

10 ноября 2022 года стало известно о том, что компания Microsoft представила значительный выпуск открытой платформы .NET 7, созданной благодаря унификации продуктов .NET Framework, .NET Core и Mono. На основе .NET 7 можно создавать многоплатформенные приложения для браузера, облачных систем, рабочего стола, IoT-устройств и мобильных платформ, используя единые библиотеки и общий процесс сборки, не зависящий от типа приложения. Сборки .NET SDK 7, .NET Runtime 7 и ASP.NET Core Runtime 7 сформированы для Linux, macOS и Windows. .NET Desktop Runtime 6 поставляется только для Windows. Связанные с проектом наработки распространяются под лицензией MIT. Сопровождение ветки .NET 7 будут осуществляться в течение 18 месяцев до 14 мая 2024 года.

.NET 7

Как сообщалось, в состав .NET 7 входит Runtime с JIT-компилятором RyuJIT, спецификации API, библиотеки WPF, Windows Forms, WinUI, Entity Framework, интерфейс командной строки dotnet, а также инструменты для разработки микросервисов, библиотек, серверных, графических и консольных приложений. Отдельно опубликованы стек для разработки web-приложений ASP.NET Core 7.0, ORM-прослойка Entity Framework Core 7.0 (драйверы имеются, в том числе, для SQLite и PostgreSQL), библиотека WPF 7 (Windows Presentation Foundation), фреймворк Windows Forms 7 для разработки GUI, платформа Orleans 7 для создания приложений Cloud Native, фреймворк MAUI 7 для разработки многоплатформенных интерфейсов пользователя, а также выпуски языков C# 11 и F# 7. Поддержка .NET 7.0 и C# 11 включена в свободный редактор кода Visual Studio Code.

Возможности обновленного выпуска:

  • Проведена унификация базовой библиотеки классов (BCL, Base Class Library) для использования в различных типах приложений, включая программы для настольных систем, web-приложений, облачных платформ, мобильных приложений, игр, встраиваемых программ и систем машинного обучения. Для разработки различных типов приложений можно использовать один общий SDK, Runtime и набор библиотек.
  • Предоставлена возможность привязки приложения к API, соответствующему выпуску .NET 7, через определение целевой платформы "net7.0", например, "<TargetFramework>net7.0</TargetFramework>". Для привязки к специфичным для каких-то платформ API при определении цели можно детализировать тип платформы, например, указав "net7.0-android".
  • Оптимизироана поддержка архитектуры ARM64 и продолжена работа по достижению паритета в производительности приложений .NET при выполнении на архитектурах x86 и ARM64. В runtime оптимизирована эффективность использования кэша третьего уровня на системах ARM64. Задействованы инструкции LSE для разграничения доступа к памяти из параллельных потоков, что привело к снижению задержек на 45%. В библиотеке добавлены обработчики, использующие векторные типы Vector64, Vector128 и Vector256, а также на базе векторных инструкций переписаны функции EncodeToUtf8 и DecodeFromUtf8, что обеспечило увеличение их производительности до 60% (для функций NarrowUtf16ToAscii и GetIndexOfFirstNonAsciiChar прирост производительности достигает 35%). В целом скорость прохождение тестов на платформе ARM64 выросла на 10-60%.
  • Оптимизирована поддержка платформы Linux, в том числе в штатные репозитории Ubuntu 22.04 добавлены пакеты с .NET 6 и предоставлен оптимизированный, компактный и готовый к использованию docker-образ для быстрого развёртывания контейнеров с приложениями на базе .NET.
  • Добавлена поддержка 64-разрядной архитектуры IBM Power (ppc64le).
  • Предложен инструментарий .NET Upgrade Assistant для оптимизации перевода старых приложений на ветки .NET 6 или .NET 7. В обновленной версии расширена поддержка миграции приложений с ASP.NET на ASP.NET Core, добавлены анализаторы и корректировщики кода для WinForms, WPF и библиотеки классов, реализована поддержка анализа исполняемых файлов, добавлена поддержка платформы UWP (Universal Windows Platform).
  • Расширены возможности по созданию приложений для облачных систем (cloud-native) и платформ PaaS (платформа как услуга). Предоставлена возможность создания приложений, упакованных в изолированные контейнеры, при помощи команды "dotnet publish".
  • Расширены средства для отслеживания состояния приложений и сбора метрик об их работе. Добавлены события и методы для анализа активности и производительности приложения.
  • В языке C# 11 добавлена поддержка необработанных строковых литералов, которые могут включать спецсимволы без необходимости их экранирования (подобные литералы выделяются тремя кавычками). Предложены обобщённые интерфейсы (generic) для математических функций и предоставлена возможность определения статических элементов в виртуальных интерфейсах, что позволило применить методы обобщённого программирования для выполнения математических операций без точной информации о типе значений.
  • Расширены возможности стандартной библиотеки. Добавлен API System.Formats.Tar для работы с архивами в формате Tar. В функции работы со временем (TimeStamp, DateTime и т.п.) добавлена поддержка микросекунд и наносекунд. В System.Text.Json реализована возможность управления сериализацией и десериализацией типов .NET.
  • В интерфейсе командной строки "dotnet new" добавлена поддержка автодополнения шаблонов типовых проектов через нажатие клавиши Tab.
  • В .NET SDK реализована возможность ограничения применения поставляемых шаблонов проектов, например, можно определить в каких операционных системах допустим шаблон.
  • В NuGet добавлен режим централизованного управления пакетами, позволяющий управлять зависимостями сразу для нескольких проектов.
  • Оптимизирована производительность JIT-компилятора. Добавлена поддержка механизма OSR (On Stack Replacement) для изменения кода уже выполняемых методов, что позволяет вносить оптимизации в методы, выполнение которых занимает много времени, не дожидаясь завершения текущего вызова (в тесте TechEmpower отмечается оптимизация производительности обработки первых запросов на 10-30%).
  • Оптимизирована эффективность оптимизации на основе результатов профилирования кода (PGO - Profile-guided optimization), позволяющей учитывать особенности, определяемые во время выполнения программы.
  • Добавлена поддержка компиляции в самодостаточные исполняемый файлы (Native AOT), в которых весь проект изначально скомпилирован в машинный код целевой платформы без использования промежуточного кода и без применения JIT.

2017

Поддержка .NET Core 2.0 продуктами Red Hat

Компания Red Hat 25 августа 2017 года объявила о планах обеспечить поддержку .NET Core 2.0 в рамках своего семейства Open Source технологий. .NET Core 2.0 позволяет создавать приложения .NET для различных платформ и развертывать их как на Red Hat Enterprise Linux, Red Hat OpenShift Container Platform, так и на других платформах.

.NET Core 2.0

.NET Core 2.0 теперь входит в состав Red Hat Developer Program, поддерживает .NET Standard 2.0, что обеспечивает оптимизированную совместимость с платформами и переносимость при использовании любых сред исполнения и рабочих нагрузок .NET. Она также помогает оптимизировать упаковку приложений за счет более удобного доступа к стеку для разработки веб-приложений ASP.NET Core 2.0 и ORM-прослойке Entity Framework Core 2.0. Кроме того, при использовании с Red Hat Enterprise Linux или Red Hat OpenShift Container Platform .NET Core 2.0 позволяет создавать современные контейнеризированные приложения на языках программирования C#, F# и Visual Basic.Интервью TAdviser: Вячеслав Касимов, ИБ-директор МКБ — о применении DevSecOps при разработке веб-приложений 8.2 т

Поддержка в продуктах Red Hat

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

  • Red Hat Enterprise Linux
  • Red Hat Enterprise Linux Atomic Host
  • Red Hat OpenShift Container Platform
  • Red Hat OpenShift Online
  • Red Hat OpenShift Dedicated
  • Red Hat OpenStack Platform

Доступность

В ближайшее время .NET Core 2.0 станет доступна для соответствующих продуктов Red Hat в виде пакетов в репозитории (rpm) или в качестве контейнерных образов.

«
За счет поддержки .NET на платформе Red Hat Enterprise Linux мы можем предложить рынку полностью открытую платформу разработки, обеспеченную поддержкой корпоративного уровня и гарантирующую надежную промышленную эксплуатацию рабочих нагрузок .NET на системах, отличных от Windows, — заявил Гарри Моуэр (Harry Mower), директор направления Developer Programs, Red Hat.
»

Релиз .NET Core 2.0

14 августа 2017 года корпорация Microsoft анонсировала релиз .NET Core 2.0 — модульной платформы .NET с открытым исходным кодом. Данная версия обеспечивает значительное повышение производительности Runtime и Framework. Кроме этого реализована поддержка .NET Standard 2.0, которая более чем удваивает количество API, доступных для разработчиков. .NET Core 2.0 уже доступен в Azure Web Apps.[2]

Список основных изменений:

  • Runtime:
    • Значительные улучшения производительности Runtime и Framework;
    • Внедрён .NET Standard 2.0;
    • Обеспечена поддержка еще 6 платформ, включая Debian Stretch, macOS High Sierra и др.;
    • RyuJIT — это x86 JIT в .NET Core 2.0;
    • Обеспечена предварительная поддержка Linux ARM32.

  • SDK:

    • dotnet restore теперь является неявной командой;
    • Проекты NET Core и .NET Standard могут ссылаться на пакеты и проекты .NET Framework NuGet;
    • .NET Core SDK может быть собран из репозитория открытого исходного кода.

  • Visual Studio:

    • Live Unit Testing поддерживает .NET Core;
    • Реализованы улучшения навигации по коду;
    • C# Azure Functions поддерживаются «из коробки»;
    • Обеспечена поддержка CI/CD в контейнерах.

Разработчики могут установить .NET Core 2.0 вместе с .NET Core 1.0 и 1.1. Существующие .NET-приложения, при необходимости, могут продолжать использовать Runtime 1.0 и 1.1.

Исходные тексты компонентов .NET Core распространяются под лицензиями MIT и Apache 2, ASP.NET Core поставляется под лицензией Apache 2. Кроме Windows, заявлена поддержка Red Hat Enterprise Linux 7, CentOS 7, Debian 8/9, Fedora 25/26, SUSE Linux Enterprise Server 12 SP2+, openSUSE 42.2+, Oracle Linux 7, Ubuntu 14.04/16.04/17.04, Linux Mint 17/18, macOS 10.12/10.13.[3]

Презентация версии .NET Core 2.0, 14 августа 2017 года.

.NET Core является модульной платформой для создания веб-приложений и микросервисов, кроссплатформенным (Windows, Mac, Linux) аналогом .NET Framework с открытым исходным кодом. Он содержит среду CoreCLR — кросс-платформенную реализацию CLR, в которую входит JIT-компилятор — RyuJIT. Также .NET Core включает в себя CoreFX — набор библиотек, функциональность которых частично совпадает с BCL (Base Class Library).

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

2016: Выпуск .NET Core 1.0

27 июня 2016 года вышла .NET Core версии 1.0 — модульная платформа .NET с открытым исходным кодом. Вместе с релизом версии 1.0 стал доступен продукт Microsoft Visual Studio 2015 Update 3, в которой поддерживается разработка под .NET Core.

16 ноября 2016 года был выпущен .NET Core версии 1.1.

2014: Открыт исходный код серверной части .NET

13 ноября 2014 года Microsoft объявила об открытии полного доступа к исходному коду серверной части платформы .NET и расширила её возможности для работы с ОС Linux и Mac.

«Сегодня на рынке представлено множество устройств, поэтому разработчики нуждаются в универсальном инструменте, который подходит для работы с любой платформой и форм-фактором, - отметил Павел Бетсис, президент Microsoft в России. – Благодаря возможностям Visual Studio и .NET мы предлагаем комплексное решение для создания и управления приложениями на всех устройствах и платформах».

Кроссплатформенная разработка стала возможной посредством доступа к полному набору серверных технологий платформы .NET с открытым исходным кодом, в том числе к ASP.NET, компилятору .NET, .NET Core Runtime, инфраструктуре и библиотекам приложений.

2012: Выпуск .NET Framework 4.5

Версия .NET Framework 4.5 вышла 15 августа 2012 года .NET Framework 4.5 предлагает несколько принципиально новых возможностей, которые позволят разработчикам в разы увеличить личную производительность при создании приложений с управляемым кодом:

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

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

Сеть. .Net Framework 4.5 включает высококачественные сетевые библиотеки, что обеспечивает постоянную поддержку облачных сервисов на разных типах устройств. Благодаря возможности объединять современные библиотеки HTTP и веб-сокеты, обеспечивается высококачественная разработка сервисов.

Помимо указанных улучшений, .Net Framwork 4.5 предлагает улучшенную поддержку HTML5, новые возможности Entity Framework и разработки мобильных приложений с помощью ASP.Net, а также много других новых возможностей для разработчиков, создающих клиентские и облачные приложения.

2010: Релиз .NET Framework 4.0

Окончательная версия .NET Framework 4.0 была выпущена 12 апреля 2010 года вместе с окончательной версией Visual Studio 2010.

Дистрибутивный пакет платформы Microsoft .NET Framework версии 4.0 устанавливает среду CLR и связанные файлы, необходимые для работы приложений, разработанных для платформы .NET Framework 4.0. Microsoft .NET Framework 4.0 — содержит новый функционал и улучшения в базовых классах (BCL) в дополнение к тем, которые были представлены ранее в .NET 4 Beta 1. Многие эти улучшения были сделаны благодаря отзывам и рекомендациям от клиентов, полученным через Microsoft Connect.

По информации на апрель 2010 года одной из основных идей Microsoft .NET является совместимость различных служб, написанных на разных языках. Например, служба, написанная на C++ для Microsoft .NET, может обратиться к методу класса из библиотеки, написанной на Delphi; на C# можно написать класс, наследованный от класса, написанного на Visual Basic .NET, а исключение, созданное методом, написанным на C#, может быть перехвачено и обработано в Delphi. Каждая библиотека (сборка) в .NET имеет сведения о своей версии, что позволяет устранить возможные конфликты между разными версиями сборок.

.NET является патентованной технологией корпорации Microsoft. Тем не менее, после заключения договоренности с компанией Novell[1], технология Mono была признана как реализация .NET на Unix-подобных системах (GNU/Linux, Mac OS X). Однако договорённость касается Novell и клиентов Novell, также технологии ASP.NET, ADO.NET и Windows.Forms не были стандартизированы ECMA/ISO и использование их в Mono находится под угрозой претензий со стороны Microsoft (претензии возможны только в странах, где существуют патенты на программное обеспечение[2]). Mono предоставляет реализацию ASP.NET, ADO.NET и Windows.Forms, но в то же время рекомендует обходить эти API.[2]

Среды разработки .NET-приложений:

  • Microsoft Visual Studio (C#, Visual Basic .NET, Managed C++),
  • SharpDevelop,
  • MonoDevelop,
  • Eclipse,
  • Borland Developer Studio (Delphi for .NET, C#),
  • PascalABC.NET и т. д.

Приложения также можно разрабатывать в текстовом редакторе и использовать консольный компилятор.

Подобно технологии Java, среда разработки .NET создаёт байт-код, предназначенный для исполнения виртуальной машиной. Входной язык этой машины в .NET называется MSIL (Microsoft Intermediate Language), или CIL (Common Intermediate Language, более поздний вариант), или просто IL. Применение байт-кода позволяет получить кроссплатформенность на уровне скомпилированного проекта (в терминах .NET: сборка), а не только на уровне исходного текста, как, например, в С. Перед запуском сборки в среде исполнения CLR байт-код преобразуется встроенным в среду JIT-компилятором (just in time, компиляция на лету) в машинные коды целевого процессора. Также существует возможность скомпилировать сборку в родной (native) код для выбранной платформы с помощью поставляемой вместе с .NET Framework утилиты NGen.exe.

Следует отметить, что один из первых JIT-компиляторов для Java был также разработан фирмой Microsoft. Современная технология динамической компиляции позволяет достигнуть уровня быстродействия, аналогичного традиционным «статическим» компиляторам (например, C++), и вопрос быстродействия зачастую зависит от качества того или иного компилятора.

Примечания



ПРОЕКТЫ (10) ПРОЕКТЫ НА БАЗЕ (74) ИНТЕГРАТОРЫ (9)
РЕШЕНИЕ НА БАЗЕ (19) СМ. ТАКЖЕ (119) ОТРАСЛИ (21)


Распределение вендоров по количеству проектов внедрений (систем, проектов) с учётом партнёров

За всю историю
2021 год
2022 год
2023 год
Текущий год

  Microsoft (41, 47)
  Солар (ранее Ростелеком-Солар) (2, 46)
  Oracle (49, 26)
  Hyperledger (Open Ledger Project) (1, 23)
  IBM (33, 18)
  Другие (553, 270)