- Un backend basado en Avalonia permite que las aplicaciones .NET MAUI se ejecuten en escritorio Linux y en el navegador (WebAssembly)
- Manteniendo la base de código existente de MAUI, se reemplaza la capa de renderizado por Avalonia para lograr al mismo tiempo mejor rendimiento y expansión de plataformas
- Funciona con el mismo motor de renderizado en Linux de escritorio como Ubuntu, Debian y Fedora, además de Linux embebido y entornos WebAssembly
- También se observa una mejora de rendimiento de más del doble en Windows y macOS, con una UI consistente sin diferencias entre plataformas
- Un proyecto que ofrece a los desarrolladores de MAUI soporte para Linux y web, además de un ciclo de desarrollo predecible, y que sirve como base para expandir el ecosistema de Avalonia
Resumen de Avalonia MAUI Backend
- Avalonia MAUI Backend es una arquitectura que mantiene la base de código de MAUI mientras reemplaza la capa de renderizado por Avalonia
- Permite ampliar las apps MAUI existentes a plataformas adicionales como Linux y el navegador
- Mejora el rendimiento en escritorio y garantiza consistencia entre plataformas
- La demo real es una app MAUI basada en WebAssembly, que puede ejecutarse en el navegador sin plugins
- Aunque es una compilación inicial, demuestra que MAUI puede funcionar en los principales sistemas operativos de escritorio y en el navegador
Soporte principal de plataformas
- Soporte para Linux de escritorio
- Se ejecuta como una app de escritorio de primera clase en Ubuntu, Debian, Fedora y más
- Usa el renderizador de Avalonia para ofrecer calidad al nivel de apps de escritorio de alto rendimiento
- Soporte para Linux embebido
- Se ejecuta con el mismo backend que Avalonia en dispositivos embebidos como paneles Raspberry Pi y HMI industriales
- Soporte para WebAssembly
- Hace posible una app MAUI que corre en el navegador sin dependencias nativas
- Más adelante se espera que evolucione hasta permitir despliegue en navegador a nivel de producción
- Soporte para Windows y macOS
- Integración con la madura arquitectura de renderizado de escritorio de Avalonia
- En macOS se observó una mejora de rendimiento de más del doble frente a Mac Catalyst
Eficiencia y consistencia en el desarrollo
- El equipo de Avalonia desarrolla apuntando solo a una plataforma única (Avalonia)
- No hace falta una implementación separada para iOS, Android, Windows, macOS, Linux y WebAssembly
- Se reducen los bugs y las diferencias de renderizado entre plataformas
- Como se usa el mismo motor de renderizado, hay una misma representación de UI en todas las plataformas
- Al agregar funciones o corregir errores, los cambios se reflejan de inmediato en todas las plataformas
- Se acorta el ciclo de desarrollo y se logra una calidad más predecible
Por qué Avalonia está construyendo un backend para MAUI
- Prioriza el apoyo a los desarrolladores cliente de .NET, para que los usuarios de MAUI puedan obtener soporte para Linux y navegador, además de mejoras de rendimiento
- A través de este proyecto, Avalonia aprende sobre compatibilidad móvil, problemas de API y mejoras de tooling
- Se espera un efecto de incorporación al ecosistema al permitir que los desarrolladores de MAUI experimenten el renderizador y las funciones de Avalonia
- El objetivo no es reemplazar MAUI, sino dar más opciones a los desarrolladores actuales de MAUI
Qué significa para los desarrolladores de MAUI
- Ofrece el soporte para Linux y un modelo de UI consistente basado en drawing que los desarrolladores de MAUI han pedido de forma continua
- Avalonia ofrece funciones como:
- Renderizado con aceleración por hardware
- Sistema consistente de layout y estilos
- Animaciones de alta tasa de refresco
- Renderizado personalizado y efectos visuales
- Amplia cobertura de plataformas
- Una plataforma con inversión y soporte continuos
- Ya se usa en entornos comerciales como Unity, JetBrains y Schneider Electric
- Manteniendo el código MAUI existente, permite conseguir al mismo tiempo mejoras de rendimiento en Linux, web y escritorio
Rendimiento y renderizado de próxima generación
- Una pila de UI de drawing orientada a GPU permite obtener mayor rendimiento que los toolkits nativos
- En colaboración con el equipo de Google Flutter, se está llevando el renderizador GPU Impeller a .NET
- Cuando esta tecnología se aplique, el backend de MAUI también heredará más velocidad de renderizado, ahorro de batería y animaciones más fluidas
Próximos planes
- Seguir mejorando la calidad del backend mediante colaboración con los ingenieros de MAUI
- Cuando el soporte para Linux y navegador alcance madurez, MAUI podrá completarse como un verdadero framework de UI multiplataforma
- Tras la estabilización, se planea publicar como open source bajo licencia MIT
- Se seguirán compartiendo avances de desarrollo, benchmarks y previews
1 comentarios
Opiniones en Hacker News
Es realmente interesante llevar este tipo de funcionalidad a la web
Pero al probar el demo, no se siente “como web”
No funciona
Ctrl+F, tampoco se puede seleccionar texto ni copiar la dirección de los enlacesEn móvil tampoco se puede mantener presionada una imagen para compartirla, y los lectores de pantalla no funcionan
Todo eso se acumula y deja la impresión de que “esto no es web de verdad”
Se siente como contenido enriquecido aislado del navegador, como una isla, al estilo de los applets de Java de finales de los 90 o Flash y Silverlight de inicios de los 2000
Sin esas funciones, por definición no puede llamarse “web real”
Al final lleva a la pregunta filosófica de “qué es la web”
Hace pensar si es solo un medio de transmisión o algo más grande
Hoy mucha gente está cansada de la appificación de la web y extraña la web abierta de antes
Intenté usar el demo con lector de pantalla y no funcionó para nada
Tampoco era esa la dirección que Microsoft pretendía
Como Avalonia soporta WASM, si pones MAUI encima de eso, simplemente funciona
Pero eso equivale a renderizar un toolkit de GUI de escritorio en WASM
Es genial, pero se siente más como una versión moderna de Silverlight que como una app web
Aun así, poder apuntar a escritorios Linux es una gran ventaja
Seguramente habrá mucha gente que prefiera, como en Avalonia, un renderizado visual uniforme en lugar de usar los controles nativos de cada plataforma como hace MAUI
Con solo CSS/JS/HTML de navegadores modernos ya se puede hacer casi todo
Me gusta XAML, pero JSX es un concepto parecido y compila a HTML real
Pensaba lo mismo en la época de Silverlight: no entiendo por qué siguen intentando recrear Flash
Los builds web de Unity ya son un mejor “Flash en C#”
Ctrl+Fni seleccionar texto, se me quitaron las ganasSi ni siquiera tiene esas funciones básicas, para mí es un non-starter
Un MAUI sin soporte para escritorio Linux nunca fue una opción a considerar desde el inicio
Con esto mejora un poco, pero sigo pensando que es mejor usar Avalonia directamente
Aun así, da gusto que exista esta opción para proyectos ya existentes
Por fin ya se pueden hacer en Linux apps con “UX estilo teléfono” lentas y con animaciones raras, además de Kotlin Multiplatform o Electron
Pero decepciona que el set de widgets sea poco más que botones y casillas de verificación
Me pregunto por qué los demos de toolkits de UI hoy en día se ven peor que los demos de la época de Delphi 1
Ya soporta Windows/Mac/Linux/WASM
Parece que este trabajo está pensado para quienes quieren extender apps MAUI ya existentes hacia Linux/WASM
El progreso puede verse en el blog de Avalonia
Una de las razones por las que la gente evita MAUI en el ecosistema .NET es que ni Microsoft lo usa
Incluso Teams está basado en Electron
Surge la duda de “si MS ni lo usa, ¿por qué deberíamos usarlo nosotros?”
El área de Windows se encarga de WinUI/Win32, Office de React y el área de desarrolladores de WPF y MAUI
Cada división se mueve por su lado y el resultado es una fragmentación de toolkits de UI
Al final, todos los toolkits reciben solo soporte a medias
Teams también terminó así al pasar de Angular a React
Pero sigue siendo cierto que no usan MAUI
Hay un ambiente de preferencia por tecnologías ya probadas como Avalonia o WinForms
No está claro qué va a impulsar MS a largo plazo
También está Blazor, pero eso se siente más orientado a crear apps internas que a reemplazar React
Y, por cierto, también queda la duda de si Google realmente usa Flutter de forma agresiva en sus propias apps
Teams se lanzó en 2017 y MAUI se presentó en 2022
El cambio a React también ocurrió antes de MAUI
Aun así, preocupa que MS no haga suficiente dogfooding con MAUI
También ha habido noticias recientes de recortes de personal relacionado con MAUI, y eso hace ver poca confianza interna
También hay que tomar en cuenta que Flutter arrancó 5 años antes
Pero aun así es difícil quitarse la impresión de que MS no está realmente comprometido con MAUI
Siempre termina en fin de soporte
Usar tecnologías web estándar es mejor para la salud mental
(No es una defensa de MAUI)
Por si alguien está confundido, lo resumo
.NET MAUI es originalmente un framework para crear apps para Android, iOS, macOS y Windows con una sola base de código
Esta vez se añadieron Linux y el navegador
Probé hacer una app Hello World en Mac y la configuración fue bastante compleja
Aun así, fue agradable volver a usar XAML después de tanto tiempo
Estaba buscando una GUI multiplataforma mientras desarrollaba software para desarrollo
Primero probé MAUI, pero la instalación fue una pesadilla desde el arranque
Ni siquiera soportaba funciones básicas de UI
Luego probé AvaloniaUI y fue una experiencia totalmente opuesta
La instalación fue sencilla y, con una búsqueda mínima, pude implementar fácilmente cosas como una ventana transparente sin bordes
La integración con Visual Studio queda un poco a deber, pero aun así está muy por delante de MAUI
Esto se siente como el regreso de Silverlight
Referencia: Microsoft Silverlight wiki
En Chrome el demo casi no funciona
El rompecabezas deslizante responde lento y la flecha de retroceso se congela
Si recargas, vuelve a la pantalla inicial
El selector de hora y el selector de fecha también están desalineados y son incómodos de usar
En general está bastante mal
Hilo relacionado
Probé el demo “Word puzzle” en la sección “Launch MAUI in your browser”
Si presionas “Randomize”, las fichas se mezclan, pero si vuelves con la flecha superior, la pantalla queda completamente bloqueada
El rompecabezas se queda en el fondo y el menú queda superpuesto arriba, sin que se pueda hacer clic en nada
Pasa igual en varios navegadores
Enlace al demo
El clic y arrastre es inestable y no hay retroalimentación visual
Las fichas no se mueven, se teletransportan
Habría sido mejor un solo clic o un movimiento animado
Otro usuario señaló el mismo problema
En la calculadora RPN ni siquiera se pueden meter números en la pila
Hace mucha falta un toolkit de UI con el que realmente se puedan hacer programas CAD
Ya me cansé de apps que parecen webviews
Odio mucho las tendencias de UI web de los últimos 10 años
Todo se volvió más grande, centrado en touch, con demasiado espacio en blanco y animaciones inútiles
Quiero volver a las interfaces de antes, centradas en la densidad de información y la usabilidad
Eso es algo que me gusta de los sitios web japoneses
Si ves el demo reel de Avalonia, también se pueden hacer cosas como editores de video o herramientas de análisis de mapas con el stack GUI de .NET
Avalonia Showcase
Si solo sirve para apps simples del clima o de tareas, no tiene mucho sentido
WPF y WinForms también siguen existiendo