Представляем .NET 5 Preview 1

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

В конце прошлого года мы выпустили .NET Core 3.0 и 3.1. В этих версиях добавлены модели настольных приложений Windows Forms (WinForms) и WPF, ASP.NET Blazor для создания одностраничных приложений и gRPC для кроссплатформенного обмена сообщениями на основе контрактов. Мы также добавили шаблоны для создания сервисов, крутое генерирование клиентского кода для общения с gRPC, сервисы REST API и многое другое. Мы рады, что .NET Core 3 стала самой быстро-принятой версией .NET, и за последний год у нас появился еще миллион пользователей.

Мы также работали над этими выпусками, чтобы завершить перенос моделей приложений из .NET Framework. В .NET Core 3 мы перенесли все наиболее используемые модели приложений, а также представили новые кроссплатформенные инфраструктуры вместо тех, которые не были портированы.

В ожидании следующего основного выпуска .NET 5 мы продолжим объединять .NET в единую платформу, включив нашу модель приложения для мобильных устройств .NET (Xamarin) в .NET 5. .NET 5 будет включать ASP.NET Core, Entity Framework Core, WinForms, WPF, Xamarin и ML.NET. Впервые вся платформа будет использовать унифицированный BCL (библиотеки базовых классов) для всех моделей приложений. Наличие версии 5, которая выше, чем у .NET Core и .NET Framework, также дает понять, что .NET 5 — это будущее .NET, единой унифицированной платформы для создания приложений любого типа.

Мы говорили это много раз, но мы еще раз повторим; .NET Core, а затем .NET 5 — это .NET, с помощью которого вам стоит создавать все свои новые приложения. .NET Framework будет поддерживаться до тех пор, пока поддерживается сама Windows. Мы будем продолжать обеспечивать безопасность и исправлять ошибки, а также обновлять сетевые и крипто API. Он будет оставаться безопасным и поддерживаться для работы ваших старых приложений на .NET Framework.



Установка .NET 5.0 Preview 1


Сегодня мы выпускаем первую Preview .NET 5, полноценный выход которой запланирован на конец этого года в ноябре.

  • .NET 5.0 Preview 1 SDK
  • .NET 5.0 Preview 1 Runtime

Читайте обновления ASP.NET Core в .NET 5 Preview 1, чтобы узнать о сегодняшнем выпуске ASP.NET Core.

В Preview 1 впервые включена поддержка Windows ARM64. Сегодняшняя версия также включает в себя runtime .NET Core. Мы ожидаем, что в Preview 2 будет добавлен SDK (ядро ASP.NET, но не WPF или Windows Forms). Более поздний предварительный просмотр будет включать в себя WPF и Windows Forms. Поддержка Windows ARM64 также будет перенесена в .NET Core 3.1. Мы поделимся более подробной информацией об этом в посте о Preview 2.

Обновление существующих проектов


Вы можете обновить существующие проекты, обновив целевую платформу следующим образом:

<TargetFramework>netcoreapp5.0</TargetFramework>

Топ-цели .NET 5


  • Унифицированный опыт .NET SDK:
    • Один BCL (библиотека базовых классов) для всех приложений .NET 5. Сегодня приложения Xamarin используют Mono BCL, но перейдут на использование .NET Core BCL, улучшая совместимость между нашими моделями приложений.
    • Мобильная разработка (Xamarin) интегрирована в .NET 5. Это означает, что .NET SDK будет поддерживать mobile. Например, вы можете использовать «dotnet new XamarinForms» для создания мобильного приложения.
  • Нативные приложения, поддерживающие несколько платформ: проект «Одно устройство», который поддерживает приложение, которое может работать на нескольких устройствах, например Window Desktop, Microsoft Duo (Android) и iOS, с использованием собственных элементов управления, поддерживаемых на этих платформах.
  • Веб-приложения, поддерживающие несколько платформ: один проект Blazor, который поддерживает приложение, которое может работать в браузерах, на мобильных устройствах и как собственное настольное приложение (например, Windows 10x).
  • Собственные облачные приложения: высокопроизводительные микросервисы с одним файлом (.exe) <50 МБ и поддержка создания нескольких проектов (API, веб-интерфейсов, контейнеров) как локально, так и в облаке.
  • Непрерывные улучшения, такие как: ускорение алгоритмов в BCL, улучшения поддержки контейнеров во время выполнения, поддержка HTTP3.

Preview 1 еще не содержит результатов всех этих целей, но мы будем продолжать анонсировать больше возможностей в будущих превью.

Улучшения в Preview 1


Следующие улучшения в Preview 1:

Улучшения производительности регулярных выражений


Мы вложили значительные средства в движок Regex. Во многих протестированных нами выражениях эти улучшения обычно приводят к повышению производительности в 3-6 раз, а в некоторых случаях и к гораздо большему. В скором времени у нас будет пост в блоге, в котором эти улучшения будут описаны более подробно.

Улучшение качества кода в RyuJIT


Каждый релиз включает набор улучшений производительности для кода, который генерирует JIT. Мы называем этот тип улучшений «CQ» или качество кода. В большинстве случаев эти улучшения также применяются к коду, созданному для готовых к запуску образов.

  • Улучшения для фолдинга null checks – Удалите необходимость генерировать null checks в большем количестве случаев, наблюдая больше шаблонов, где null checks, вероятно, не нужны.
  • Настройка общего подвыражения (CSE) – JIT ищет и сворачивает дублирующиеся выражения, которые нужно оценивать только один раз.
  • Оптимизация «constant_string».Length – Оптимизация этого шаблона и свертывание кода до правильного целочисленного значения.
  • JIT: создание базовых списков блоков перед морфингом – Переупорядочевание фазы в JIT, чтобы раньше можно было использовать ключевые оптимизации, что привело к лучшему качеству кода и меньшему количеству работы для следующих фаз, что увеличивает пропускную способность JIT («TP» в ссылочном PR).

Диагностика нагрузки сборки добавлена в event pipe


Мы добавили информацию о загрузке сборки в event pipe. Это улучшение — начало доступности аналогичных диагностических функций, которые являются частью .NET Framework с Fusion Log Viewer. Теперь вы можете использовать dotnet-trace для сбора этой информации, используя следующую команду:

dotnet-trace collect --providers Microsoft-Windows-DotNETRuntime:4:4 --process-id [process ID]

Рабочий процесс описан в разделе Trace Assembly Loading with Event Pipe. Вы можете увидеть информацию о загрузке сборки для простого тестового приложения.



API для профилирования событий (Event Pipe)


Event Pipe — это новая подсистема и API, которые мы добавили в .NET Core 2.2, чтобы сделать возможным выполнение диагностик производительности и других в любой операционной системе. В .NET 5.0 Event Pipe был расширен, чтобы профилировщики могли записывать события Event Pipe. Этот сценарий важен для инструментов профилировщиков, которые ранее использовали ETW для мониторинга поведения и производительности приложений.

Консолидация репозиториев GitHub


Как часть выпуска .NET 5, мы сократили количество репозиториев на GitHub, которые использовались для создания и упаковки .NET. Границы репозитория оказывают значительное влияние на многие аспекты проекта, включая сборку и управление проблемами. С .NET Core 1.0 у нас было более 100 репозиториев в ASP.NET, EF и .NET Core. Теперь все изменилось. Мы также перенесли почти все репозитории в dotnet org.

Ознакомьтесь с новыми, консолидированными репозиториями:

  • dotnet/runtime (были dotnet/corefx, dotnet/coreclr, и dotnet/core-setup)
  • dotnet/aspnetcore (было множество репозиториев в aspnet org)
  • dotnet/sdk (были dotnet/sdk, dotnet/cli)
Источник: https://habr.com/ru/company/microsoft/blog/493390/


Интересные статьи

Интересные статьи

Скотт Хансельман — ключевой человек для .NET-сообщества: например, на конференции Microsoft Build он ведёт презентацию для разработчиков, а у его микроблога в Twitter около 250 000 подп...
Много всякого сыпется в мой ящик, в том числе и от Битрикса (справедливости ради стоит отметить, что я когда-то регистрировался на их сайте). Но вот мне надоели эти письма и я решил отписатьс...
Релиз .NET Core 3.1 — хороший повод мигрировать свой проект с Framework на Core. Во-первых, это отполированная версия с долгосрочной поддержкой (LTS), т.е. её можно смело использовать в продакш...
Photo by Kevin Horvat Все 12 лет своей карьеры я работал с .NET и был крепко привязан к Windows и проприетарным инструментам разработки. Но, спасибо Microsoft, .NET Core все изменил и теперь р...
Эта статья для тех, кто собирается открыть интернет-магазин, но еще рассматривает варианты и думает по какому пути пойти, заказать разработку магазина в студии, у фрилансера или выбрать облачный серви...