Net core 5 что нового
Перейти к содержимому

Net core 5 что нового

What’s new in .NET 5

.NET 5 is the next major release of .NET Core following 3.1. We named this new release .NET 5 instead of .NET Core 4 for two reasons:

  • We skipped version numbers 4.x to avoid confusion with .NET Framework 4.x.
  • We dropped "Core" from the name to emphasize that this is the main implementation of .NET going forward. .NET 5 supports more types of apps and more platforms than .NET Core or .NET Framework.

ASP.NET Core 5.0 is based on .NET 5 but retains the name "Core" to avoid confusing it with ASP.NET MVC 5. Likewise, Entity Framework Core 5.0 retains the name "Core" to avoid confusing it with Entity Framework 5 and 6.

.NET 5 includes the following improvements and new features compared to .NET Core 3.1:

.NET 5 doesn’t replace .NET Framework

.NET 5 and later versions are the main implementation of .NET going forward but .NET Framework 4.x is still supported. There are no plans to port the following technologies from .NET Framework to .NET 5, but there are alternatives in .NET:

Technology Recommended alternative
Web Forms ASP.NET Core Blazor or Razor Pages
Windows Workflow (WF) Elsa-Workflows

Windows Communication Foundation

The original implementation of Windows Communication Foundation (WCF) was only supported on Windows. However, there is a client port available from the .NET Foundation. It is entirely open source, cross platform, and supported by Microsoft. The core NuGet packages are listed below:

The server components that complement the aforementioned client libraries are available through CoreWCF. As of April 2022, CoreWCF is officially supported by Microsoft. However, for an alternative to WCF, consider gRPC.

.NET 5 doesn’t replace .NET Standard

New application development can specify the net5.0 target framework moniker (TFM) for all project types, including class libraries. Sharing code between .NET 5 workloads is simplified in that all you need is the net5.0 TFM.

For .NET 5 apps and libraries, the net5.0 Target Framework Moniker (TFM) combines and replaces the netcoreapp and netstandard TFMs. However, if you plan to share code between .NET Framework, .NET Core, and .NET 5 workloads, you can do so by specifying netstandard2.0 as your TFM. For more information, see .NET Standard.

C# updates

Developers writing .NET 5 apps will have access to the latest C# version and features. .NET 5 is paired with C# 9, which brings many new features to the language. Here are a few highlights:

Records: reference types with value-based equality semantics and non-destructive mutation supported by a new with expression.

Relational pattern matching: Extends pattern matching capabilities to relational operators for comparative evaluations and expressions, including logical patterns — new keywords and , or , and not .

Top-level statements: As a means for accelerating adoption and learning of C#, the Main method can be omitted and application as simple as the following is valid:

Function pointers: Language constructs that expose the following intermediate language (IL) opcodes: ldftn and calli .

For more information on the available C# 9 features, see What’s new in C# 9.

Source generators

In addition to some of the highlighted new C# features, source generators are making their way into developer projects. Source generators allow code that runs during compilation to inspect your program and produce additional files that are compiled together with the rest of your code.

F# updates

F# is the .NET functional programming language, and with .NET 5, developers have access to F# 5. One of the new features is interpolated strings, which is similar to interpolated string in C#, and even JavaScript.

In addition to basic string interpolation, there’s typed interpolation. With typed interpolation, a given type must match the format specifier.

This is similar to the sprintf function that formats a string based on type-safe inputs.

For more information, see What’s new in F# 5.

Visual Basic updates

There are no new language features for Visual Basic in .NET 5. However, with .NET 5, Visual Basic support is extended to:

Description dotnet new parameter
Console Application console
Class library classlib
WPF Application wpf
WPF Class library wpflib
WPF Custom Control Library wpfcustomcontrollib
WPF User Control Library wpfusercontrollib
Windows Forms (WinForms) Application winforms
Windows Forms (WinForms) Class library winformslib
Unit Test Project mstest
NUnit 3 Test Project nunit
NUnit 3 Test Item nunit-test
xUnit Test Project xunit

For more information on project templates from the .NET CLI, see dotnet new .

Net core 5 что нового

10 ноября вышел в долгожданный релиз фреймворк .NET 5 , который является развитием .NET Core в долгой эволюции фреймворка .NET. .NET 5.0 — это первый релиз на пути к унификации платформы .NET, который позволяет более плавно мигрировать с .NET Framework.

Некоторые ключевые моменты в .NET 5:

Однофайловые приложения (single file application). Все зависимости приложения теперь можно поместить в один файл с исполняемым файлом. Кроме того, на целевом компьютере теперь необязательно предварительно предустанавливать фреймворк .NET.

Улучшение поддержки и разработки десктоп-приложений (Windows Forms, WPF)

Новые возможности C# 9.0 и F# 5.0, например, records, программы верхнего уровня, улучшенные выражения switch и т.д.

Поддержка Windows ARM64

Улучшение производительности по сравнению с предыдущими версиями

Боле подробную информацию про релиз .NET 5 можно найти на официальном сайте Microsoft на странице https://devblogs.microsoft.com/dotnet/announcing-net-5-0/

Вместе с .NET 5 вышли в релиз ASP.NET Core 5.0 и Entity Framework Core 5.0.

Основные новвоведения и улучшения в ASP.NET Core 5.0:

Улучшения в привязке модели в MVC, добавлена поддержка для типов records в C# 9

Представлен .NET 5

6 мая было объявлено, что следующим после .NET Core 3.0 релизом будет .NET 5. Это будет следующий большой релиз в семействе .NET.

В будущем останется только один .NET, и вы сможете использовать его для разработки под Windows, Linux, macOS, iOS, Android, tvOS, watchOS, WebAssembly и другие платформы.

Мы представим новые .NET API, возможности исполняющей среды и возможности языка как части .NET 5.

С момента запуска проекта .NET Core мы добавили в платформу около 50 тысяч API .NET Framework. .NET Core 3.0 по возможностям вплотную подошел к .NET Framework 4.8, благодаря ему стали доступны Windows Forms, WPF и Entity Framework 6. .NET 5 перенял эстафету, в его основу легли .NET Core и всё лучшее из проекта Mono, в результате чего получилась единая платформа, которую можно использовать для всего вашего современного .NET-кода.

Мы намерены выпустить .NET 5 в ноябре 2020 года, а первая preview-версия станет доступной уже в первой половине 2020 года. Платформа станет доступна вместе с будущими обновлениями Visual Studio 2019, Visual Studio for Mac и Visual Studio Code.

.NET 5 = .NET Core vNext

.NET 5 — следующий шаг в .NET Core. Проект призван улучшить .NET в нескольких ключевых аспектах:

  • Создать единые исполняющую среду и фреймворк, которые можно использовать везде, с одинаковым поведением в runtime и опытом разработки.
  • Расширить возможности .NET за счёт лучших наработок из .NET Core, .NET Framework, Xamarin и Mono.
  • Собрать продукт из единой кодовой базы, над которой разработчики (из Microsoft и сообщества) могут вместе работать и расширять её, что позволит улучшить все возможные сценарии.

Сохранилось всё, что вам нравится в .NET Core:

  • Open source и ориентированность на сообщество GitHub.
  • Кроссплатформенная реализация.
  • Поддержка использования специфических платформозависимых возможностей, таких как Windows Forms и WPF под Windows, а также нативных привязок (bindings) к каждой нативной платформе из Xamarin.
  • Высокая производительность.
  • Side-by-side инсталляция.
  • Маленький размер файлов проектов (SDK-стиль).
  • Интерфейс командной строки (CLI) с широкими возможностями.
  • Интеграция с Visual Studio, Visual Studio for Mac и Visual Studio Code.
  • У вас будет больше возможностей исполняющей среды (подробнее об этом ниже).
  • Возможность вызова кода Java из .NET 5 будет доступна на всех платформах.
  • Вызов кода Objective-C и Swift из .NET 5 будет поддерживаться в нескольких операционных системах.
  • CoreFX будет расширен, чтобы поддерживать статическую компиляцию .NET (ahead-of-time – AOT), для уменьшения потребления ресурсов (footprints) и поддержки большего количества операционных систем.

Мы пропускаем четвёртую версию, потому что у пользователей может возникнуть путаница с .NET Framework, который уже давно выпускается в версии 4.x. Кроме того, мы хотели ясно дать понять, что .NET 5 — это будущее платформы .NET.

Также мы решили воспользоваться случаем и упростить порядок наименований. Мы считаем, что если развиваться будет только один .NET, то нам не понадобится поясняющий термин “Core”. Короткое название проще, оно говорит о том, что возможности и поведение .NET 5 унифицированы. Если хотите, то можете и дальше пользоваться названием “.NET Core”.

Исполняющие среды

Mono — первоначальная кроссплатформенная реализация .NET. Она начиналась как open-source альтернатива .NET Framework, и позднее, с ростом популярности iOS- и Android-устройств, мы переориентировали её на мобильный сегмент. Mono — это исполняющая среда, используемая как часть Xamarin.

CoreCLR — это исполняющая среда, используемая как часть .NET Core. Изначально была ориентирована на поддержку облачных приложений, включая крупнейшие сервисы в Microsoft, а сегодня она также используется для настольных Windows-приложений, IoT и машинного обучения.

У исполняющих сред .NET Core и Mono много общего (все же, обе они — исполняющие среды .NET), но у каждой есть и свои уникальные возможности. Поэтому имеет смысл дать вам возможность выбирать тот опыт использования, который вам нужен. Сейчас мы работаем над тем, чтобы сделать CoreCLR и Mono подключаемыми заменами друг для друга. Процесс будет таким же простым, как переключение сборки для выбора между разными опциями исполняющей среды.

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

Высокая производительность и продуктивность

С самого начала .NET опирался на JIT-компилятор для преобразования Intermediate Language кода в оптимизированный машинный код. Мы создали лучшую в отрасли среду исполнения с JIT, обладающую очень высокой производительностью, в то же время позволяющую разработчикам писать код легко и быстро.

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

Наши усилия по ускорению работы ASP.NET Core, проявившиеся в результатах бенчмарков TechEmpower, являются хорошим примером возможностей JIT и являются нашим вкладом в CoreCLR. Мы постарались подготовить .NET Core для использования контейнеров, это демонстрирует возможности исполняющей среды динамически адаптироваться к ограниченным средам.

Инструменты разработчиков — ещё одна сфера, в которой JIT прекрасно себя зарекомендовала, например, dotnet watch или режим “edit and continue”. Для работы инструментов часто требуется многократно компилировать и загружать код в одном и том же процессе без перезапуска, и делать это нужно очень быстро.

Разработчики, использующие .NET Core или .NET Framework, в первую очередь полагаются на JIT. Так что им это должно казаться привычным.

Стандартным подходом для большинства рабочих нагрузок .NET 5 будет использование CoreCLR исполняющей среды с JIT. Два важных исключения — iOS и клиентская Blazor (WebAssembly), они требуют нативной предварительной (ahead-of-time) компиляции.

Быстрый запуск, низкое потребление ресурсов процессора (footprint) и уменьшение потребления памяти

В рамках проекта Mono большинство усилий было нацелено на мобильный сегмент и игровые приставки. Главная возможность и результат этого проекта — AOT-компилятор для .NET, разработанный на основе компилятора LLVM. AOT-компилятор Mono позволяет собирать .NET-код в единый нативный исполняемый код, который может работать на любой машине, как и код на C++. Заранее скомпилированные (AOT) приложения могут эффективно исполняться при ограниченных ресурсах (small places), и при необходимости жертвуют производительностью ради своего запуска.

Проект Blazor уже использует Mono AOT и одним из первых перейдёт на .NET 5. Мы используем его как один из способов доказательства своих планов.

Есть два типа AOT-решений:

  • Требующие полной AOT-компиляции.
  • Решения, большая часть кода которых AOT-скомпилирована, но всё же позволяющие использовать JIT или интерпретатор для таких паттернов кода, которые не дружат с AOT (например, дженерики).

.NET Native — это AOT-компилятор, который мы используем для Windows UWP-приложений. Он относится к первому типу AOT-решений. В этой конкретной реализации мы ограничили .NET API и доступные вам возможности. Это помогло нам понять, что AOT-решения должны покрывать полный спектр .NET API и паттернов.

AOT-компиляция останется необходимой для iOS, WebAssembly и некоторых игровых приставок. Мы сделаем её опциональной для приложений, которые встраиваются в технику (appliance-like), для которых требуется быстрый запуск и/или низкое потребление ресурсов процессора.

Основы и схожие требования

Для нас критически важно продолжать развиваться как платформа со средствами управления запуском, производительностью, потреблением памяти, надёжностью и диагностики. В то же время целесообразно сосредоточить наши усилия. Мы станем больше работать над повышением производительности и надежности в CoreCLR, а также над улучшением запуска и снижением размера файлов компиляторе Mono AOT. Нам это кажется хорошим сочетанием. Производительность и надежность идут рука об руку, как и скорость запуска со снижением размера файлов.

В улучшение одних характеристик целесообразно вкладывать разные ресурсы, а в улучшение других — нет.

Возможности диагностики должны быть одинаковыми в рамках всего .NET 5, это касается и функциональности, и производительности. Также важно поддерживать одни и те же процессоры и ОС (за исключением iOS и WebAssembly).

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

Все .NET 5-приложения будут использовать фреймворк CoreFX. Мы удостоверимся, что CoreFX хорошо работает там, где он сегодня не используется, в основном это Xamarin клиентские Blazor-задачи.

Все .NET 5-приложения можно будет собирать с помощью .NET CLI, так что во всех проектах у вас будет единый инструментарий на основе командной строки.

C# будет развиваться вместе с .NET 5. Разработчики, пишущие .NET 5-приложения, получат доступ к самой свежей версии C# и его свойствам.

Рождение проекта

Как техническая команда мы собрались в декабре 2018-го в Бостоне, чтобы начать данный проект. Ведущие архитекторы из команды .NET (Mono/Xamarin и.NET Core) и Unity рассказали о различных технических возможностях и направлении развития архитектуры.

Теперь мы двигаем проект как единая команда. С декабря мы далеко продвинулись в нескольких проектах:

  • Определили минимальный уровень, который определяет взаимодействие среды исполнения и уровня управляемого кода (managed code layer), с целью сделать >99 % CoreFX общим кодом.
  • Теперь MonoVM может использовать CoreFX и его библиотеки классов.
  • Прогнали на MonoVM все тесты CoreFX, используя его реализацию.
  • Запустили приложения ASP.NET Core 3.0 на MonoVM.
  • Запустили MonoDevelop и Visual Studio for Mac на CoreCLR.

Заключение

Проект .NET 5 — важное и вдохновляющее новое направление для .NET. Вы увидите, что .NET станет проще, но при этом станет использоваться шире, обретёт более широкие возможности. Все новые возможности разработки станут частью .NET 5, в том числе новые версии C#.

Впереди у нас светлое будущее, в котором вы сможете использовать те же .NET API и языки для широкого спектра приложений, операционных систем и архитектур процессоров. Вы сможете легко менять конфигурацию сборки, собирая приложения как вам удобно — в Visual Studio, Visual Studio for Mac, Visual Studio Code, Azure DevOps или из командной строки.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *