Сегодня мы объявляем, что следующим релизом после .NET Core 3.0 станет .NET 5. Это будет следующий крупный релиз в серии .NET.
В будущем будет только один .NET, с помощью которого вы сможете разрабатывать Windows, Linux, macOS, iOS, Android, tvOS, watchOS и WebAssembly, среди прочих.
Мы внедряем новые .NET API, функции выполнения и языковые функции в .NET 5.
Начиная с проекта .NET Core, мы добавили около пятидесяти тысяч 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 года и запустить первый превью в первой половине 2020 года. Он будет поддерживаться в будущих обновлениях для Visual Studio 2019, Visual Studio для Mac и Visual Studio Code.
.NET 5 = .NET Core vNext
.NET 5 — следующий шаг в .NET Core. Проект направлен на улучшение . NET:
- Создайте .NET runtime и фреймворк, которые можно использовать где угодно, с единым поведением во время выполнения и опытом разработчика.
- Полностью используя .NET Core, . NET Framework, Xamarin и Mono для расширения возможностей .NET.
- Создавая продукт на основе единой кодовой базы, разработчики (Microsoft и сообщество) могут работать вместе и расширять проект для улучшения всех сценариев.
Этот новый проект и направление стали важным поворотным моментом для .NET. С .NET 5 ваш код и файлы проекта будут одинаковыми, независимо от типа приложения, которое вы создаёте. Каждое приложение имеет доступ к одинаковым функциям выполнения, API и языкам. Также включены улучшения производительности CoreFX, которые реализуются почти ежедневно.
Всё, что вы любите в .NET Core, будет существовать:
- Открытый исходный код и ориентированный на сообщество на GitHub.
- Кроссплатформенная реализация.
- Поддержка использования специфических для платформы функций, таких как Windows forms и WPF на Windows, а также нативных привязок для каждой нативной платформы Xamarin.
- Высокая производительность.
- Устанавливайте рядом.
- Небольшие файлы проектов (в стиле SDK).
- Совместим с интерфейсами командной строки (CLI).
- Visual Studio, Visual Studio для Mac и интеграция Visual Studio Code.
Есть и некоторые новые вещи:
- У вас будет больше вариантов для вашего опыта выполнения (подробнее об этом ниже).
- Совместимость Java будет доступна на всех платформах.
- Несколько операционных систем будут поддерживать совместимость Objective-C и Swift.
- CoreFX будет расширен с поддержкой AOT для .NET, меньшего пространства и поддержки большего числа операционных систем.
Мы выпустим .NET Core 3.0 в сентябре этого года, .NET 5 — в ноябре 2020 года, а затем планируем выпустить крупную версию . NET:
Мы пропустили четвёртую версию, потому что она могла бы запутать пользователей, знакомых с .NET Framework, который существует уже давно в серии 4.x. Кроме того, мы хотим чётко донести, что .NET 5 — это будущее платформы .NET. Назвать её .NET 5 — это самая высокая версия, которую мы когда-либо выпускали.
Мы также используем эту возможность, чтобы упростить наименование. Мы считаем, что если лучший только один .NET, нам не нужен уточняющий термин вроде «Core». Короткое название является упрощением и также передаёт сообщение о том, что .NET 5 обладает единообразной функциональностью и поведением. Конечно, вы можете продолжать использовать название «.NET Core», если хотите.
Опыт работы во время выполнения
Mono — это оригинальная кроссплатформенная реализация .NET. Изначально он был открытой альтернативой .NET Framework, а с ростом популярности устройств iPhone/iOS и Android перешёл к мобильному формату. Моно — это время выполнения, используемое в составе Xamarin.
CoreCLR — это среда выполнения, используемая в составе .NET Core. Он в первую очередь используется для поддержки облачных приложений, включая крупнейший сервис Microsoft, а теперь также применяется в приложениях Windows на рабочем столе, IoT и машинном обучении.
В итоге, у .NET Core и Mono много общего (в конце концов, оба — это .NE runtime), но также обладают ценными уникальными особенностями. Очень логично сделать возможным выбор нужного вам опыта выполнения. Мы делаем CoreCLR и Mono взаимозаменяемыми друг с другом. Сделаем всё так просто, как создать коммутатор для выбора между разными вариантами выполнения времени.
В следующих разделах описывается основной фокус, который мы планируем использовать для .NET 5. Они дают чёткое представление о том, как мы планируем развивать эти два времени выполнения по отдельности и вместе.
Высокая пропускная способность и высокая производительность
С самого начала .NET полагался на компиляторы just-in-time (JIT) для преобразования промежуточного кода (IL) в оптимизированный машинный код. С тех пор мы создали ведущую в отрасли управляемую среду выполнения на базе JIT с очень высокой пропускной способностью и улучшением опыта разработчиков, делая программирование быстрым и простым.
JIT идеально подходит для долгосрочных облачных и клиентских сценариев. Они способны генерировать код, настроенный для конкретных машин, включая конкретные инструкции процессора. JIT также может восстанавливать методы во время выполнения — техника, которая ускоряет JIT, при этом сохраняя возможность генерировать высокооптимизированные версии кода, если метод становится часто используемым.
Наши усилия по ускорению ASP.NET Core на бенчмарке Techpower — отличный пример мощи JIT и наших инвестиций в CoreCLR. Наши усилия по усилению .NET Core для контейнеров также свидетельствуют о способности среды выполнения динамически адаптироваться к ограниченным средам.
Инструменты для разработчиков — ещё один отличный пример того, насколько JIT действительно хорош, например, dotnet watch tools или редактирование и продолжение. Инструментам часто приходится компилировать и загружать код несколько раз за один процесс без перезапуска, и делать это очень быстро.
Разработчики, использующие .NET Core или .NET Framework, в основном полагаются на JIT. Поэтому опыт должен быть знакомым.
В большинстве рабочих сценариев .NET 5 по умолчанию используется JIT-среда выполнения CoreCLR. Два заметных исключения — iOS и клиентский Blazor (веб-ассемблер), поскольку оба требуют нативной компиляции заранее (AOT).
Быстрый запуск, небольшой участок и низкое использование памяти
Большая часть проекта Mono была сосредоточена на мобильных устройствах и консолях. Ключевой особенностью и результатом проекта является компилятор .NET AOT, основанный на ведущем в отрасли проекте компилятора LLVM. Компилятор Mono AOT позволяет встраивать .NET-код в нативный исполняемый файл, который может работать на компьютере, аналогично коду C++. Приложения, скомпилированные в AOT, могут эффективно работать в небольших помещениях и обмениваться пропускной способностью для запуска при необходимости.
Проект Blazor уже использует Mono AOT. Это будет один из первых проектов, перейдущих на .NET 5. Мы используем это как один из вариантов подтверждения этого плана.
Существует два типа AOT-решений:
- Требуется решение, скомпилированное на 100% AOT.
- Большая часть кода — это решение, скомпилированное на AOT, но для шаблонов, не подходящих для AOT (например, дженериков) могут использоваться JIT или интерпретаторы. Mono AOT поддерживает оба случая. Apple требует первый AOT для iOS и некоторых консолей по соображениям безопасности. Второй способ — лучший вариант, так как он предлагает преимущества AOT и избегает некоторых недостатков.
.NET Native — это наш компилятор AOT для приложений Windows UWP, а также пример первого типа AOT, перечисленного выше. В этой конкретной реализации мы ограничиваем .NET API и функции, которые вы можете использовать. Мы узнали из этого опыта, что решения AOT должны охватывать все аспекты .NET API и паттернов.
Компиляция AOT всё ещё требуется на iOS, веб-ассемблере и некоторых консолях. Для приложений, требующих более быстрого запуска или низкого присутствия, мы сделаем компиляцию AOT опцией.
Рождение проекта
Мы начали этот проект в декабре 2018 года с технической командой в Бостоне. Руководители дизайна из команды .NET (Mono/Xamarin и .NET Core) и Unity представили различные технические возможности и архитектурные направления.
Сейчас мы продвигаем этот проект вперёд как команда, имея ряд результатов. С декабря мы добились значительного прогресса по ряду проектов:
- Определяется минимальный слой, который определяет управляемый уровень кода во время выполнения <-> с целью достижения >99% публичного кода CoreFX.
- MonoVM теперь может использовать CoreFX и его библиотеки классов.
- Запускайте все тесты CoreFX на MonoVM с реализацией CoreFX.
- Запускайте ASP.NET приложения Core 3.0 с помощью MonoVM.
- Запустите MonoDevelop на CoreCLR, затем Visual Studio для Mac.
Перейти на одиночную . Реализация .NET вызывает важные вопросы: каким будет целевая структура? Одинаковы ли правила совместимости пакетов NuGet? Какие нагрузки должен поддерживать .NET 5 SDK? Как мне писать код для конкретной архитектуры? Нам всё ещё нужен .NET Standard? Сейчас мы работаем над этими вопросами и вскоре поделимся для вас дизайн-документом, чтобы вы могли прочитать и дать обратную связь.
Эпилог
Проект .NET 5 — это важное и захватывающее новое направление для .NET. Вы увидите, что .NET становится проще, но при этом с более широким спектром функций и полезностей. Все новые разработки и функции будут частью .NET 5, включая новые версии на C#.
Мы видим светлое будущее, в котором вы сможете использовать одни и те же .NET-API и языки для охватки широкого спектра типов приложений, операционных систем и кремниевых архитектур. В Visual Studio, Visual Studio для Mac, Visual Studio Code, Azure DevOps или в командной строке легко изменить конфигурацию сборки для создания разных приложений.
Оригинальная ссылка:Вход по гиперссылке виден.
|