Con Native AOT l'applicazione viene compilata in codice macchina al momento della pubblicazione. Non serve il runtime installato, l'avvio è quasi immediato e la memoria occupata si riduce: ideale per servizi in container, funzioni serverless e strumenti da riga di comando.
Attivarlo
<PropertyGroup>
<PublishAot>true</PublishAot>
</PropertyGroup>
dotnet publish -c Release -r linux-x64
Cosa cambia nel codice
Il compilatore AOT deve conoscere in anticipo tutto il codice che verrà eseguito. Per questo la reflection dinamica, il caricamento di assembly a runtime e la generazione di codice al volo sono limitati. Il compilatore lo segnala con avvisi specifici: vanno presi sul serio.
Per la serializzazione JSON si usa la generazione del codice a compilazione:
[JsonSerializable(typeof(Ordine))]
[JsonSerializable(typeof(List<Ordine>))]
internal partial class AppJsonContext : JsonSerializerContext { }
var json = JsonSerializer.Serialize(ordine, AppJsonContext.Default.Ordine);
ASP.NET Core e AOT
Le Minimal API supportano Native AOT; il template dedicato usa WebApplication.CreateSlimBuilder, che include solo i servizi essenziali. MVC e Razor Pages invece non sono compatibili con AOT.
Quando non usarlo
Applicazioni con plugin caricati a runtime, ORM o librerie basate su reflection non compatibili, o progetti dove il tempo di avvio non è un problema: in questi casi la pubblicazione tradizionale resta la scelta più semplice.
Commenti (0)
Nessun commento ancora.