Здравствуйте, Разраб, Вы писали:
S>> Да AOT это хорошая штука, но в общем ограничена. Программистам нравятся деревья выражений и прочая динамическая компиляция. S>> Больший выхлоп я вижу для WASM https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-rc1/#wasmstripilafteraot-mode-on-wasm S>>В том числе и симбиоз AOT и интерпретатора.
Р>Ну аот это более быстрый старт и экономия памяти. Значит у гоу появился конкурент.
На самом деле есть еще фишка, это обфускация. Многие приложения на .Net не делают именно из-за того, что можно легко декомпилировать IL.
И да экономия памяти это хорошо для контейнеров. Меньше платить https://habr.com/ru/companies/T1Holding/articles/502510/
Не стоит выделять на ВМ больше памяти, чем это требуется. Очень часто пользователи облака конфигурируют ВМ эмпирически: «Ну примерно столько-то памяти нужно отсыпать и столько ядер». При этом именно оперативная память, как правило, — самый дорогой ресурс в облаке.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, nmd, Вы писали:
nmd>У ASP.NET Core в native AOT пока много ограничений, возможно к релизу исправят.
Подскажите, если разбирались (я просто наскоро просмотрел и не уверен, что понял правильно) — ASP.Net MVC Native это вообще-вообще другой тип приложения будет?
Т.е., условно, просто переключив опцию компилятора мы не сможем получить Native-сборку?
Ну и в целом для остальных типов приложений аналогично?
nmd>>У ASP.NET Core в native AOT пока много ограничений, возможно к релизу исправят. МР>Подскажите, если разбирались (я просто наскоро просмотрел и не уверен, что понял правильно) — ASP.Net MVC Native это вообще-вообще другой тип приложения будет? МР>Т.е., условно, просто переключив опцию компилятора мы не сможем получить Native-сборку?
МР>Ну и в целом для остальных типов приложений аналогично?
Здравствуйте, Михаил Романов, Вы писали: МР>Здравствуйте, nmd, Вы писали: nmd>>У ASP.NET Core в native AOT пока много ограничений, возможно к релизу исправят. МР>Подскажите, если разбирались (я просто наскоро просмотрел и не уверен, что понял правильн
о) — ASP.Net MVC Native это вообще-вообще другой тип приложения будет? МР>Т.е., условно, просто переключив опцию компилятора мы не сможем получить Native-сборку? МР>Ну и в целом для остальных типов приложений аналогично?
Посмотрел, как время было.
В SDK 8 RC1 есть шаблон AOT проекта только для Web API — webapiaot, для MVC, SPA (angular, react) шаблонов проектов нет, есть обычные шаблоны без AOT.
Попробовал собрать Native для разных проектов.
dotnet --version
8.0.100-rc.1.23455.8
mkdir test_webapiaot && cd test_webapiaot
dotnet new webapiaot && dotnet publish
Проект собрался и запустился без ошибок и предупреждений.
MVC:
mkdir test_mvc && cd test_mvc
dotnet new mvc && dotnet publish /p:PublishAot=true
Собрался с предупреждениями AOT, при запуске выдал ошибку:
Скрытый текст
Unhandled Exception: System.TypeLoadException: The type 'Microsoft.AspNetCore.Mvc.ApplicationParts.ConsolidatedAssemblyApplicationPartFactory' cannot be found in assembly 'Microsoft.AspNetCore.Mvc.Razor, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.
at System.Reflection.Runtime.Assemblies.RuntimeAssemblyInfo.GetTypeCore(String, Boolean, Boolean) + 0x6f
at System.Reflection.TypeNameParser.GetType(String, ReadOnlySpan`1, String) + 0xbd
at System.Reflection.TypeNameParser.NamespaceTypeName.ResolveType(TypeNameParser&, String) + 0x39
at System.Reflection.TypeNameParser.GetType(String, Func`2, Func`4, Boolean, Boolean, Boolean, String) + 0xb8
at Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartFactory.GetApplicationPartFactory(Assembly) + 0x68
at Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartManager.PopulateDefaultParts(String) + 0x93
at Microsoft.Extensions.DependencyInjection.MvcCoreServiceCollectionExtensions.GetApplicationPartManager(IServiceCollection, IWebHostEnvironment) + 0x57
at Microsoft.Extensions.DependencyInjection.MvcCoreServiceCollectionExtensions.AddMvcCore(IServiceCollection) + 0x29
at Microsoft.Extensions.DependencyInjection.MvcServiceCollectionExtensions.AddControllersCore(IServiceCollection) + 0xa
at Microsoft.Extensions.DependencyInjection.MvcServiceCollectionExtensions.AddControllersWithViewsCore(IServiceCollection) + 0xa
at Microsoft.Extensions.DependencyInjection.MvcServiceCollectionExtensions.AddControllersWithViews(IServiceCollection) + 0x11
at Program.<Main>$(String[] args) + 0x1b
at test_mvc!<BaseAddress>+0xa09400
Angular:
mkdir test_angular && cd test_angular
dotnet new angular && dotnet publish /p:PublishAot=true
Собрался с предупреждениями, запустился без ошибок.
AOT Warnings
MSBuild version 17.8.0-preview-23418-03+0125fc9fb for .NET
Determining projects to restore...
Restored d:\tmp\test_mvc\test_mvc.csproj (in 385 ms).
C:\Program Files\dotnet\sdk\8.0.100-rc.1.23455.8\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInferenc
e.targets(311,5): message NETSDK1057: You are using a preview version of .NET. See: https://aka.ms/dotnet-support-polic
y [d:\tmp\test_mvc\test_mvc.csproj]
d:\tmp\test_mvc\Program.cs(4,1): warning IL2026: Using member 'Microsoft.Extensions.DependencyInjection.MvcServiceColle
ctionExtensions.AddControllersWithViews(IServiceCollection)' which has 'RequiresUnreferencedCodeAttribute' can break fu
nctionality when trimming application code. MVC does not currently support trimming or native AOT. https://aka.ms/aspne
t/trimming [d:\tmp\test_mvc\test_mvc.csproj]
test_mvc -> d:\tmp\test_mvc\bin\Release\net8.0\win-x64\test_mvc.dll
Generating native code
d:\tmp\test_mvc\Program.cs(4): Trim analysis warning IL2026: Program.<Main>$(String[]): Using member 'Microsoft.Extensi
ons.DependencyInjection.MvcServiceCollectionExtensions.AddControllersWithViews(IServiceCollection)' which has 'Requires
UnreferencedCodeAttribute' can break functionality when trimming application code. MVC does not currently support trimm
ing or native AOT. https://aka.ms/aspnet/trimming [d:\tmp\test_mvc\test_mvc.csproj]
F:\Nuget\microsoft.aspnetcore.app.runtime.win-x64\8.0.0-rc.1.23421.29\runtimes\win-x64\lib\net8.0\Microsoft.AspNetCore.
Mvc.Core.dll : warning IL2104: Assembly 'Microsoft.AspNetCore.Mvc.Core' produced trim warnings. For more information se
e https://aka.ms/dotnet-illink/libraries [d:\tmp\test_mvc\test_mvc.csproj]
F:\Nuget\microsoft.aspnetcore.app.runtime.win-x64\8.0.0-rc.1.23421.29\runtimes\win-x64\lib\net8.0\Microsoft.AspNetCore.
Mvc.ViewFeatures.dll : warning IL2104: Assembly 'Microsoft.AspNetCore.Mvc.ViewFeatures' produced trim warnings. For mor
e information see https://aka.ms/dotnet-illink/libraries [d:\tmp\test_mvc\test_mvc.csproj]
F:\Nuget\microsoft.aspnetcore.app.runtime.win-x64\8.0.0-rc.1.23421.29\runtimes\win-x64\lib\net8.0\Microsoft.AspNetCore.
Components.Endpoints.dll : warning IL2104: Assembly 'Microsoft.AspNetCore.Components.Endpoints' produced trim warnings.
For more information see https://aka.ms/dotnet-illink/libraries [d:\tmp\test_mvc\test_mvc.csproj]
F:\Nuget\microsoft.aspnetcore.app.runtime.win-x64\8.0.0-rc.1.23421.29\runtimes\win-x64\lib\net8.0\Microsoft.AspNetCore.
Components.Endpoints.dll : warning IL3053: Assembly 'Microsoft.AspNetCore.Components.Endpoints' produced AOT analysis w
arnings. [d:\tmp\test_mvc\test_mvc.csproj]
F:\Nuget\microsoft.aspnetcore.app.runtime.win-x64\8.0.0-rc.1.23421.29\runtimes\win-x64\lib\net8.0\Microsoft.AspNetCore.
Components.dll : warning IL3053: Assembly 'Microsoft.AspNetCore.Components' produced AOT analysis warnings. [d:\tmp\tes
t_mvc\test_mvc.csproj]
F:\Nuget\microsoft.aspnetcore.app.runtime.win-x64\8.0.0-rc.1.23421.29\runtimes\win-x64\lib\net8.0\Microsoft.AspNetCore.
Mvc.Core.dll : warning IL3053: Assembly 'Microsoft.AspNetCore.Mvc.Core' produced AOT analysis warnings. [d:\tmp\test_mv
c\test_mvc.csproj]
ILC : warning IL3000: Microsoft.AspNetCore.Mvc.ApplicationParts.RelatedAssemblyAttribute.GetRelatedAssemblies(Assembly,
Boolean,Func`2<String,Boolean>,RelatedAssemblyAttribute.AssemblyLoadContextWrapper): 'System.Reflection.Assembly.Locati
on.get' always returns an empty string for assemblies embedded in a single-file app. If the path to the app directory i
s needed, consider calling 'System.AppContext.BaseDirectory'. [d:\tmp\test_mvc\test_mvc.csproj]
ILC : warning IL3000: Microsoft.AspNetCore.Mvc.ApplicationParts.RelatedAssemblyAttribute.GetRelatedAssemblies(Assembly,
Boolean,Func`2<String,Boolean>,RelatedAssemblyAttribute.AssemblyLoadContextWrapper): 'System.Reflection.Assembly.Locati
on.get' always returns an empty string for assemblies embedded in a single-file app. If the path to the app directory i
s needed, consider calling 'System.AppContext.BaseDirectory'. [d:\tmp\test_mvc\test_mvc.csproj]
F:\Nuget\microsoft.aspnetcore.app.runtime.win-x64\8.0.0-rc.1.23421.29\runtimes\win-x64\lib\net8.0\Microsoft.AspNetCore.
Mvc.Abstractions.dll : warning IL2104: Assembly 'Microsoft.AspNetCore.Mvc.Abstractions' produced trim warnings. For mor
e information see https://aka.ms/dotnet-illink/libraries [d:\tmp\test_mvc\test_mvc.csproj]
F:\Nuget\microsoft.aspnetcore.app.runtime.win-x64\8.0.0-rc.1.23421.29\runtimes\win-x64\lib\net8.0\Microsoft.AspNetCore.
Mvc.Abstractions.dll : warning IL3053: Assembly 'Microsoft.AspNetCore.Mvc.Abstractions' produced AOT analysis warnings.
[d:\tmp\test_mvc\test_mvc.csproj]
F:\Nuget\microsoft.aspnetcore.app.runtime.win-x64\8.0.0-rc.1.23421.29\runtimes\win-x64\lib\net8.0\Microsoft.AspNetCore.
Mvc.DataAnnotations.dll : warning IL2104: Assembly 'Microsoft.AspNetCore.Mvc.DataAnnotations' produced trim warnings. F
or more information see https://aka.ms/dotnet-illink/libraries [d:\tmp\test_mvc\test_mvc.csproj]
F:\Nuget\runtime.win-x64.microsoft.dotnet.ilcompiler\8.0.0-rc.1.23419.4\framework\System.Linq.Expressions.dll : warning
IL3053: Assembly 'System.Linq.Expressions' produced AOT analysis warnings. [d:\tmp\test_mvc\test_mvc.csproj]
F:\Nuget\microsoft.aspnetcore.app.runtime.win-x64\8.0.0-rc.1.23421.29\runtimes\win-x64\lib\net8.0\Microsoft.AspNetCore.
Mvc.Razor.dll : warning IL2104: Assembly 'Microsoft.AspNetCore.Mvc.Razor' produced trim warnings. For more information
see https://aka.ms/dotnet-illink/libraries [d:\tmp\test_mvc\test_mvc.csproj]
F:\Nuget\microsoft.aspnetcore.app.runtime.win-x64\8.0.0-rc.1.23421.29\runtimes\win-x64\lib\net8.0\Microsoft.AspNetCore.
Components.dll : warning IL2104: Assembly 'Microsoft.AspNetCore.Components' produced trim warnings. For more informatio
n see https://aka.ms/dotnet-illink/libraries [d:\tmp\test_mvc\test_mvc.csproj]
F:\Nuget\microsoft.aspnetcore.app.runtime.win-x64\8.0.0-rc.1.23421.29\runtimes\win-x64\lib\net8.0\Microsoft.AspNetCore.
Mvc.ViewFeatures.dll : warning IL3053: Assembly 'Microsoft.AspNetCore.Mvc.ViewFeatures' produced AOT analysis warnings.
[d:\tmp\test_mvc\test_mvc.csproj]
F:\Nuget\microsoft.aspnetcore.app.runtime.win-x64\8.0.0-rc.1.23421.29\runtimes\win-x64\lib\net8.0\Microsoft.AspNetCore.
Mvc.Razor.dll : warning IL3053: Assembly 'Microsoft.AspNetCore.Mvc.Razor' produced AOT analysis warnings. [d:\tmp\test_