.NET 7: различия между версиями
Dzmuh (обсуждение | вклад) Нет описания правки |
Dzmuh (обсуждение | вклад) |
||
| Строка 3: | Строка 3: | ||
== Нововведения .NET 7 == | == Нововведения .NET 7 == | ||
Обзор нововведений .NET 7<ref>{{cite web | |||
|url = https://habr.com/ru/company/pvs-studio/blog/699706/ | |||
|title = Что нового в .NET 7? | |||
|lang = ru | |||
|date = 2022-11-16 | |||
|access-date = 2022-11-16 | |||
|website = [[Хабрахабр]] | |||
|archive-url = https://web.archive.org/web/20221116175921/https://habr.com/ru/company/pvs-studio/blog/699706/ | |||
|archive-date = 2022-11-16 | |||
}}</ref>. | |||
=== Native AOT === | |||
AOT (ahead-of-time) – компиляция приложения не в промежуточный, а сразу в машинный код. Native AOT использует ahead of time компилятор для компиляции IL в машинный код во время публикации self-contained<ref>{{cite web | |||
|url = https://learn.microsoft.com/en-us/dotnet/core/deploying/#publish-self-contained | |||
|title = .NET application publishing overview | |||
|lang = en | |||
|date = 2022-04-08 | |||
|access-date = 2022-11-16 | |||
|website = Microsoft Learn | |||
|archive-url = https://web.archive.org/web/20221027191646/https://learn.microsoft.com/en-us/dotnet/core/deploying/ | |||
|archive-date = 2022-10-27 | |||
}}</ref> приложения. Native AOT был переведён из статуса экспериментального. Основными преимуществами native AOT приложений являются: | |||
* время запуска; | |||
* использование памяти; | |||
* работа на платформах с ограничениями (JIT недоступен). | |||
Native AOT приложения имеют ряд ограничений: | |||
* нет динамической загрузки (например, Assembly.LoadFile); | |||
* нет генерации кода во время выполнения (например, System.Reflection.Emit); | |||
* нет C++/CLI; | |||
* и т. д. | |||
=== On Stack Replacement (OSR) === | |||
OSR<ref>{{cite web | |||
|url = https://devblogs.microsoft.com/dotnet/performance_improvements_in_net_7/#on-stack-replacement | |||
|title = Performance Improvements in .NET 7 - On-Stack Replacement | |||
|lang = en | |||
|date = 2022-08-31 | |||
|access-date = 2022-11-10 | |||
|website = Microsoft .NET Blog | |||
|archive-url = https://web.archive.org/web/20221110142309/https://devblogs.microsoft.com/dotnet/performance_improvements_in_net_7/ | |||
|archive-date = 2022-11-10 | |||
}}</ref> позволяет заменять машинный код, который выполняется в данный момент, на новый — более оптимизированный. Ранее такая возможность была только между вызовами метода. Подобный подход позволяет применять многоуровневую компиляцию ко всем методам. Благодаря этому можно добиться более быстрой компиляции и при этом стабильной производительности. Судя по тестам Microsoft, внедрение данной технологии помогло на 25 % ускорить запуск нагруженных приложений. OSR в .NET 7 включена по умолчанию для x64 и Arm64. | |||
=== Централизованное управление пакетами (CPM) === | |||
Управление зависимостями для многопроектных решений может оказаться сложной задачкой. Теперь же в ситуациях, когда требуется управление общими зависимостями для нескольких проектов, вы можете использовать централизованное управление NuGet пакетами<ref>{{cite web | |||
|url = https://learn.microsoft.com/en-us/nuget/consume-packages/Central-Package-Management | |||
|title = Central Package Management (CPM) | |||
|lang = en | |||
|date = 2022-08-11 | |||
|access-date = 2022-11-17 | |||
|website = Microsoft Learn | |||
|archive-url = https://web.archive.org/web/20221108220715/https://learn.microsoft.com/en-us/nuget/consume-packages/Central-Package-Management | |||
|archive-date = 2022-11-08 | |||
}}</ref>. Для централизованного управления зависимостями потребуется добавить файл Directory.Packages.props в корень решения. Благодаря CPM версия пакета указывается только в <code>Directory.Packages.props</code>, а в проектах требуется лишь сослаться на пакет. | |||
== Примечания == | == Примечания == | ||
Версия от 23:23, 16 ноября 2022
Это заготовка статьи. |
.NET 7 —
Нововведения .NET 7
Обзор нововведений .NET 7[1].
Native AOT
AOT (ahead-of-time) – компиляция приложения не в промежуточный, а сразу в машинный код. Native AOT использует ahead of time компилятор для компиляции IL в машинный код во время публикации self-contained[2] приложения. Native AOT был переведён из статуса экспериментального. Основными преимуществами native AOT приложений являются:
- время запуска;
- использование памяти;
- работа на платформах с ограничениями (JIT недоступен).
Native AOT приложения имеют ряд ограничений:
- нет динамической загрузки (например, Assembly.LoadFile);
- нет генерации кода во время выполнения (например, System.Reflection.Emit);
- нет C++/CLI;
- и т. д.
On Stack Replacement (OSR)
OSR[3] позволяет заменять машинный код, который выполняется в данный момент, на новый — более оптимизированный. Ранее такая возможность была только между вызовами метода. Подобный подход позволяет применять многоуровневую компиляцию ко всем методам. Благодаря этому можно добиться более быстрой компиляции и при этом стабильной производительности. Судя по тестам Microsoft, внедрение данной технологии помогло на 25 % ускорить запуск нагруженных приложений. OSR в .NET 7 включена по умолчанию для x64 и Arm64.
Централизованное управление пакетами (CPM)
Управление зависимостями для многопроектных решений может оказаться сложной задачкой. Теперь же в ситуациях, когда требуется управление общими зависимостями для нескольких проектов, вы можете использовать централизованное управление NuGet пакетами[4]. Для централизованного управления зависимостями потребуется добавить файл Directory.Packages.props в корень решения. Благодаря CPM версия пакета указывается только в Directory.Packages.props, а в проектах требуется лишь сослаться на пакет.
Примечания
- ↑ Что нового в .NET 7? Хабрахабр (16 ноября 2022). Дата обращения: 16 ноября 2022. Архивировано 16 ноября 2022 года.
- ↑ .NET application publishing overview (англ.). Microsoft Learn (8 апреля 2022). Дата обращения: 16 ноября 2022. Архивировано 27 октября 2022 года.
- ↑ Performance Improvements in .NET 7 - On-Stack Replacement (англ.). Microsoft .NET Blog (31 августа 2022). Дата обращения: 10 ноября 2022. Архивировано 10 ноября 2022 года.
- ↑ Central Package Management (CPM) (англ.). Microsoft Learn (11 августа 2022). Дата обращения: 17 ноября 2022. Архивировано 8 ноября 2022 года.