- PVSM.RU - https://www.pvsm.ru -

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

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

Мы также работали [1] над этими выпусками, чтобы завершить перенос моделей приложений из .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 Preview 1 - 1

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

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

Читайте обновления ASP.NET Core в .NET 5 Preview 1 [3], чтобы узнать о сегодняшнем выпуске 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» или качество кода. В большинстве случаев эти улучшения также применяются к коду, созданному для готовых к запуску образов.

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

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

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

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

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

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

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

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

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

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

  • dotnet/runtime [12] (были dotnet/corefx, dotnet/coreclr, и dotnet/core-setup)
  • dotnet/aspnetcore [13] (было множество репозиториев в aspnet org)
  • dotnet/sdk [14] (были dotnet/sdk, dotnet/cli)

Автор: Александр Гуреев

Источник [15]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/c-2/350680

Ссылки в тексте:

[1] Мы также работали: https://devblogs.microsoft.com/dotnet/net-core-is-the-future-of-net/

[2] .NET 5.0 Preview 1 SDK: https://dotnet.microsoft.com/download/dotnet-core/5.0

[3] обновления ASP.NET Core в .NET 5 Preview 1: https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-5-preview-1/

[4] Улучшения для фолдинга null checks: https://github.com/dotnet/runtime/pull/1735

[5] Настройка общего подвыражения (CSE): https://github.com/dotnet/runtime/pull/1463

[6] Оптимизация «constant_string».Length: https://github.com/dotnet/runtime/issues/5310

[7] JIT: создание базовых списков блоков перед морфингом: https://github.com/dotnet/runtime/pull/1309

[8] Fusion Log Viewer: https://docs.microsoft.com/dotnet/framework/tools/fuslogvw-exe-assembly-binding-log-viewer

[9] dotnet-trace: https://docs.microsoft.com/dotnet/core/diagnostics/dotnet-trace

[10] Trace Assembly Loading with Event Pipe: https://github.com/richlander/testapps/tree/master/trace-assembly-loading

[11] сократили количество репозиториев на GitHub: https://github.com/dotnet/runtime/issues/13688

[12] dotnet/runtime: https://github.com/dotnet/runtime

[13] dotnet/aspnetcore: https://github.com/dotnet/aspnetcore

[14] dotnet/sdk: https://github.com/dotnet/sdk

[15] Источник: https://habr.com/ru/post/493390/?utm_source=habrahabr&utm_medium=rss&utm_campaign=493390