La Casa di Redmond ha reso disponibile la terza versione preview di .NET 8. Si tratta della futura LTS (Long Term Support) del progetto il cui rilascio sotto forma di stabile è fissato per novembre 2023. Sono previste nuove funzionalità rilevanti tra cui anche la compilazione AOT (Ahead Of Time) in ASP.NET Core.
La compilazione AOT
La compilazione AOT fa in modo che un'applicazione possa essere compilata in codice nativo prima del deploy. Essa si differenzia quindi dalla compilazione JIT (Just In Time) che viene effettuata in fase di esecuzione. L'AOT determina dimensioni più contenute, un minor consumo di memoria e un avvio più rapido, mentre dal punto di vista delle prestazioni non si dovrebbero osservare particolari differenze.
Date le sue caratteristiche essa risulta ideale per gli ambienti serverless così come per quelli containerizzati, dove le nuove istanze di un'applicazione vengono distribuite a seguito di aggiornamenti o esigenze di scalabilità.
Stando a quanto dichiarato dai portavoce di Microsoft, i test dell'ultima preview avrebbero ridotto le dimensioni di un'applicazione dell'87% e i tempi di boot dell'80%.
I limiti della compilazione AOT
La generazione del codice tramite la compilazione a runtime viene utilizzata da diverse librerie e framework, ASP.NET Core AOT potrebbe quindi presentare alcuni problemi di compatibilità. Non sono inoltre supportati ASP.NET MVC, il framework Blazor, la libreria di comunicazione SignalR e l'autenticazione ASP.NET. Quasi sicuramente l'autenticazione via JWT (JSON Web Token) e i driver ADO.NET per SQLite e PostgreSQL saranno integrati nelle prossime preview, ma alcune funzionalità potrebbero mancare dalla versione definitiva.
La procedura necessaria per convertire le librerie in modo che siano compatibili con .NET AOT potrebbe non risultare semplice. Basti pensare al codice destinato alla serializzazione JSON che deve essere adattato per la generazione di quest'ultimo.
A tal proposito è utile ricordare che di solito i framework ORM (Object-Relational Mapping) utilizzano le funzionalità dinamiche di .NET, per questa ragione gli sviluppatori dell'Entity Framework Core di Redmond starebbero già lavorando sul supporto per AOT.