Хабрахабр

[Перевод] Представляем .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. 0 с помощью . NET Core 3. 8 дополняется большинством недостающих возможностей, благодаря ему стали доступны Windows Forms, WPF и Entity Framework 6. NET Framework 4. NET 5 перенял эстафету, в его основу легли . . NET-кода. NET Core и всё лучшее из проекта Mono, в результате чего получилась единая платформа, которую можно использовать для всего вашего современного .

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. Благодаря .NET 5 ваш код и файлы проектов будут выглядеть единообразно, вне зависимости от типа создаваемого приложения. Из каждого приложения у вас будет доступ к той же исполняющей среде, тем же API и возможностям языка, включая новые улучшения производительности, которые внедряются в corefx практически ежедневно.

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 Core 3.0 будет доступен в сентябре этого года, а .NET 5 — в ноябре 2020-го. После этого мы собираемся выпускать основные версии .NET раз в год, каждый ноябрь:

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

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

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

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

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

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

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

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

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

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

NET Core, проявившиеся в результатах бенчмарков TechEmpower, являются хорошим примером возможностей JIT и являются нашим вкладом в CoreCLR. Наши усилия по ускорению работы ASP. 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), и при необходимости жертвуют производительностью ради своего запуска.

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

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

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

Mono AOT поддерживает оба типа. AOT первого типа нужны для iOS и некоторых игровых приставок, в основном это обусловлено требованиями к безопасности. Решения второго типа более предпочтительны, поскольку они обладают всеми преимуществами AOT без его недостатков.

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

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

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

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

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

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

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

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

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

NET 5. C# будет развиваться вместе с . 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 поднимает важные вопросы. Каким будет конечный фреймворк? Останутся ли прежними правила совместимости с пакетами NuGet? Какую нагрузку будет поддерживать из коробки .NET 5 SDK? Как нужно писать код для специфической архитектуры? Нужен ли нам .NET Standard? Сейчас мы работаем над всем этим и скоро сможем поделиться с вами проектной документацией, чтобы вы могли ее прочитать и дать отзывы.

Заключение

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

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

Показать больше

Похожие публикации

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

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

Кнопка «Наверх»