Funciones de .NET 7 - Implementación con Native AOT
(dotnetstuffs.com)- ¿Qué es .NET AOT?
- Implementación de Native AOT
.NET 7 ahora puede generar código nativo pequeño, de alrededor de 2 MB, como aplicación de consola para Windows, Linux y macOS sin el runtime de .NET, y puede ejecutarse sin dependencias.
5 comentarios
macOS, que no era compatible en .NET 7, pasará a contar con soporte oficial en .NET 8.
https://learn.microsoft.com/en-us/dotnet/…
Si revisas la documentación oficial de Microsoft, además de las limitaciones fundamentales que vienen de compilar de forma nativa por adelantado, esta función también tiene algunas restricciones adicionales por estar todavía en una etapa temprana de desarrollo. Aún no se puede aplicar a apps de ASP.NET Core, requiere soporte a nivel de bibliotecas, y todavía hay limitaciones en depuración y perfilado. Además, como la arquitectura de CPU solo admite x64 y ARM64, no se pueden crear apps para Windows de 32 bits. Y algo llamativo es que, mediante esta función, se pueden crear bibliotecas estáticas que pueden usarse desde apps que no sean .NET.
Cuando Microsoft anunció .NET 7, dijo que era una "plataforma para apps cloud-native". Para eso, también añadió la función de desplegar apps como contenedores Docker. Da la impresión de que el soporte de AOT también se añadió como una herramienta para optimizar el tamaño de imagen y el tiempo de arranque de estas apps contenedorizadas. Pero como el soporte para ASP.NET Core sigue todavía en desarrollo, parece que pasará algo más de tiempo antes de que esta función realmente brille en apps cloud-native.
Referencia:
Muchas gracias por la amable respuesta.
Las aplicaciones de consola ya superaron la etapa de vista previa y están en una fase de lanzamiento oficial, por lo que se pueden desarrollar aplicaciones reales.
Como mencionaste, al estar todavía en una etapa inicial, aún no hay soporte para ASP.NET Core, WPF, Windows Forms ni WinUI.
Además, no encaja con la necesidad de desplegarlo en contenedores Docker. Todavía no es compatible con ASP.NET Core.
Del mismo modo, como mencionaste, al compilarse a código nativo no se puede usar la mayor parte de las funciones de Reflector. Esta parte parece deberse menos a una limitación propia de la etapa inicial y más a las diferencias de naturaleza entre el código IL y el código nativo.
Parece que el significado actual de NativeAOT es que permite desplegar muy bien código nativo puro, sin dependencias, en Windows, Linux y macOS, al menos a nivel de aplicaciones de consola.
No en macOS. Si revisas la documentación de Microsoft Learn que enlacé, verás que por ahora las plataformas compatibles con esta función son solo Windows y Linux. Probablemente macOS se agregue más adelante.
Con el tiempo eso se resolverá, pero creo que por ahora hay muchos casos en los que esta función todavía no es fácil de usar en entornos de producción.
Es correcto que macOS todavía no es compatible.