loading experience

.NET

Native AOT in .NET 10: avvio istantaneo e binari compatti

Compilare un'applicazione .NET direttamente in codice nativo: vantaggi, limiti e come prepararla.

Native AOT in .NET 10: avvio istantaneo e binari compatti

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.

Native AOT scambia flessibilità a runtime con avvio rapido e memoria ridotta.
Native AOT scambia flessibilità a runtime con avvio rapido e memoria ridotta.

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.

Lascia un commento