Microsoft выпускает .NET Core 3.0
Недавно Microsoft объявила о выпуске .NET Core 3.0 одновременно на .NET Conf 2019 и в своем блоге по разработке. Новый выпуск включает поддержку приложений Windows Desktop, использующих Windows Forms и Windows Presentation Framework (WPF), новые API-интерфейсы JSON, поддержку Linux ARM64 и общие улучшения производительности. F # 4.7 и C # 8.0 также представлены как часть этого выпуска.
В этой новой версии .NET Core полностью поддерживает разработку приложений для рабочего стола Windows с использованием Windows Forms, WPF и UWP XAML. Это одна из самых важных функций этого выпуска: Microsoft представила его как главное событие .NET Core 3 в начале этого года на Microsoft Build Live. В прошлом году были открыты Windows Forms и WPF, а также библиотека XAML пользовательского интерфейса Windows (WinUI). С тех пор усилия по разработке были сосредоточены на обеспечении совместимости .NET Framework, что включало простоту переноса с .NET Framework на .NET Core.
Хотя перенос настольных приложений на .NET Core является важной функцией, новые функции также включают новые шаблоны и инструменты. Конструктор XAML в Visual Studio был обновлен, и теперь он включает функцию под названием XAML Hot Reload. Эта новая функция позволяет разработчику вносить изменения в код XAML, пока приложение еще работает. Конструктор Windows Forms также был обновлен, но он все еще находится в предварительном просмотре (доступен для отдельной загрузки для Visual Studio). Важно отметить, что приложения Windows Forms и WPF работают только в Windows.
Другие важные функции, связанные с разработкой рабочего стола Windows, относятся к использованию и развертыванию различных версий .NET Core. Приложения Windows Desktop теперь могут распространяться как автономные приложения: они могут использовать свою собственную версию .NET Core независимо от среды, в которой они развернуты. Существует также возможность распространять их как однофайловые исполняемые файлы, что важно, учитывая, что в прошлых выпусках настольные приложения нужно было запускать с помощью команды dotnet. Интересной функциональностью, связанной с однофайловыми исполняемыми файлами, является усечение зависимостей: оно удаляет все сборки, не используемые приложением, делая сгенерированный файл меньше. Эта функциональность, однако, все еще считается «экспериментальной»: она была продемонстрирована на .NET Conf 2019, и создание единого исполняемого файла при обрезке сборок из примера приложения заняло несколько минут.
.NET Core 3.0 также включает новые API-интерфейсы JSON, предназначенные для сценариев чтения / записи, произвольного доступа с объектной моделью документа (DOM) и сериализатора. Новые API соответствуют планам Microsoft по удалению зависимости от ASP.NET Core до среды Json.NET. В эти планы также входит создание высокопроизводительных API-интерфейсов JSON, которые в конечном итоге повысят производительность Kestrel (веб-сервер по умолчанию, включенный в шаблоны ASP.NET Core). По словам Иммо Ландверта, менеджера программ в команде .NET в Microsoft:
“Требования к стеку .NET немного изменились с момента появления .NET Core. Исторически .NET ценил удобство и простоту использования. В .NET Core мы сделали упор на производительность и сделали значительные инвестиции для удовлетворения потребностей в высокой производительности. [...] Мы считаем, что для поддержки синтаксического анализа JSON нам потребуется предоставить новый набор API-интерфейсов JSON, специально предназначенных для высокопроизводительных сценариев.”
Новая версия SqlClient (первоначально являющаяся частью сборки System.Data.dll в .NET Framework) также была представлена в новом выпуске. Помимо возможности предварительного просмотра в виде пакета NuGet, новая версия также имеет поддержку Always Encrypted, Data Classification и UTF-8.
Поддержка Linux ARM64 является частью усилий по разработке IoT. По словам Ричарда Ландера, руководителя программы .NET Team в Microsoft:
“В этом выпуске мы добавили поддержку Linux ARM64, добавив поддержку ARM32 для Linux и Windows в .NET Core 2.1 и 2.2 соответственно. В то время как некоторые рабочие нагрузки IoT используют наши существующие возможности x64, многие пользователи обращались за поддержкой ARM. Это уже готово к использованию, и мы работаем с клиентами, которые планируют крупные развертывания”.
В число улучшений входит сборщик мусора - Garbage Collector (GC), который по умолчанию использует меньше памяти (за счет уменьшения размеров кучи), и уменьшение .NET Core SDK до 25% -30% от исходного размера (на диске, в зависимости от операционной системы). ). Другие функции включают поддержку ограничений ресурсов Docker и поддержку TLS 1.3 и OpenSSL 1.1.1 в Linux. C # 8.0 и F # 4.7 также включены как часть выпуска .NET Core 3.0 из-за их значимости. Базовая библиотека F # теперь нацелена на .NET Standard 2.0, а C # 8.0 добавляет асинхронные потоки и обнуляемые ссылочные типы.
Интересная характеристика этого релиза связана с процессом разработки. Microsoft объявляет .NET Core 3.0 как «проверенный в бою», так как он уже несколько месяцев размещается на dot.net и Bing.com. Все новые функции были последовательно доступны для публичного тестирования с декабря 2018 года до конца июля этого года, когда .NET Core вступил в период замораживания. Это было также отмечено сообществом - как указывает пользователь Manigandham на HackerNews:
“.Net 3.0 прошел около десятка предварительных выпусков, а последние 4 получили лицензию на запуск. Он гораздо лучше протестирован, чем старый .NET Framework с его монолитными выпусками”.
Согласно официальному плану .NET Core 3.1 Long Term Support (LTS) будет выпущен в конце этого года, в ноябре. .NET Core 3.0 поддерживается в Windows 7+, Windows Server 2012 R2 SP1 +, macOS 10.13+ и других дистрибутивах Linux. Последняя версия Visual Studio 2019 (16.3 в Windows, 8.3 в macOS) требуется для использования .NET Core 3.0. Кроме того, Visual Studio App Center уже был обновлен для поддержки приложений, разработанных в новой версии .NET Core.