.NET MAUI erweitert mit Avalonia-Unterbau die Unterstützung auf Linux und den Browser
(avaloniaui.net)- Durch ein Avalonia-basiertes Backend können .NET-MAUI-Anwendungen nun auf Linux-Desktops und im Browser (WebAssembly) ausgeführt werden
- Bei Beibehaltung der bestehenden MAUI-Codebasis wird die Rendering-Schicht durch Avalonia ersetzt, wodurch gleichzeitig bessere Performance und eine Erweiterung auf zusätzliche Plattformen erreicht werden
- Läuft mit derselben Rendering-Engine auf Desktop-Linux wie Ubuntu, Debian und Fedora sowie auf Embedded Linux und in WebAssembly-Umgebungen
- Auch unter Windows und macOS wurden mehr als doppelte Performancegewinne beobachtet, bei gleichzeitig konsistenter UI ohne plattformspezifische Unterschiede
- Ein Projekt, das MAUI-Entwicklern Linux- und Web-Unterstützung sowie einen planbaren Entwicklungszyklus bietet und zugleich die Grundlage für den Ausbau des Avalonia-Ökosystems schafft
Überblick über das Avalonia-MAUI-Backend
- Das Avalonia-MAUI-Backend ersetzt bei unveränderter MAUI-Codebasis die Rendering-Schicht durch Avalonia
- Bestehende MAUI-Apps lassen sich damit auf zusätzliche Plattformen wie Linux und Browser erweitern
- Verbessert die Desktop-Performance und sorgt für plattformübergreifende Konsistenz
- Die reale Demo ist eine WebAssembly-basierte MAUI-App, die ohne Plug-ins im Browser ausgeführt werden kann
- Es handelt sich noch um einen frühen Build, der aber belegt, dass MAUI auf den wichtigsten Desktop-Betriebssystemen und im Browser laufen kann
Wichtige Plattformunterstützung
- Unterstützung für Desktop-Linux
- Läuft unter Ubuntu, Debian, Fedora und anderen Distributionen als vollwertige Desktop-App
- Mit dem Avalonia-Renderer wird die Qualität eines performanten Desktop-Apps-Niveaus erreicht
- Unterstützung für Embedded Linux
- Läuft auf Embedded-Geräten wie Raspberry-Pi-Panels oder industriellen HMIs mit demselben Backend wie Avalonia
- WebAssembly-Unterstützung
- Ermöglicht MAUI-Apps, die im Browser ohne native Abhängigkeiten laufen
- Soll sich künftig bis zur Browser-Bereitstellung auf produktionsnahem Niveau weiterentwickeln
- Unterstützung für Windows und macOS
- Integriert sich in Avalonias ausgereifte Desktop-Rendering-Architektur
- Unter macOS wurde mehr als die doppelte Performance im Vergleich zu Mac Catalyst beobachtet
Entwicklungseffizienz und Konsistenz
- Das Avalonia-Team entwickelt nur noch für eine einzige Plattform (Avalonia)
- Separate Implementierungen für iOS, Android, Windows, macOS, Linux und WebAssembly sind nicht nötig
- Weniger plattformspezifische Bugs und Rendering-Unterschiede
- Da dieselbe Rendering-Engine verwendet wird, ist die UI-Darstellung auf allen Plattformen identisch
- Neue Funktionen oder Bugfixes werden sofort auf alle Plattformen übertragen
- Kürzere Entwicklungszyklen und besser planbare Qualität
Warum Avalonia ein MAUI-Backend entwickelt
- Vorrangig geht es um die Unterstützung von .NET-Client-Entwicklern, damit MAUI-Nutzer Linux-/Browser-Support und bessere Performance erhalten
- Durch dieses Projekt lernt Avalonia mehr über Mobile-Tauglichkeit, API-Probleme und Verbesserungen beim Tooling
- Wenn MAUI-Entwickler den Avalonia-Renderer und dessen Funktionen kennenlernen, wird ein Zufluss ins Ökosystem erwartet
- Ziel ist nicht, MAUI zu ersetzen, sondern bestehenden MAUI-Entwicklern mehr Auswahlmöglichkeiten zu geben
Bedeutung für MAUI-Entwickler
- MAUI-Entwickler erhalten die seit Langem geforderte Linux-Unterstützung und ein konsistentes, zeichnungsbasiertes UI-Modell
- Avalonia bietet unter anderem
- hardwarebeschleunigtes Rendering
- ein konsistentes Layout- und Stylesystem
- Animationen mit hohen Bildwiederholraten
- benutzerdefiniertes Rendering und visuelle Effekte
- breite Plattformabdeckung
- eine Plattform mit kontinuierlichen Investitionen und Support
- Wird bereits in kommerziellen Umgebungen von Unternehmen wie Unity, JetBrains und Schneider Electric eingesetzt
- Bei unverändertem bestehendem MAUI-Code lassen sich Linux-, Web- und Desktop-Performanceverbesserungen gleichzeitig erreichen
Performance und Rendering der nächsten Generation
- Ein GPU-freundlicher, zeichnungsbasierter UI-Stack sorgt für höhere Leistung als native Toolkits
- Gemeinsam mit dem Google-Flutter-Team wird der Impeller-GPU-Renderer nach .NET gebracht
- Mit dieser Technologie profitiert auch das MAUI-Backend von höherer Rendering-Geschwindigkeit, geringerem Akkuverbrauch und flüssigeren Animationen
Nächste Schritte
- In Zusammenarbeit mit MAUI-Ingenieuren soll die Qualität des Backends weiter verbessert werden
- Sobald Linux- und Browser-Unterstützung einen reifen Stand erreicht haben, könnte MAUI zu einem echten multiplattformfähigen UI-Framework werden
- Nach der Stabilisierung ist eine Veröffentlichung als Open Source unter MIT-Lizenz geplant
- Entwicklungsfortschritte, Benchmarks und Previews sollen fortlaufend geteilt werden
1 Kommentare
Hacker-News-Kommentare
Es ist wirklich interessant, so etwas ins Web zu bringen
Aber wenn man die Demo ausprobiert, fühlt es sich nicht wie Web an
Man kann nicht mit Ctrl+F suchen, keinen Text markieren und keine Linkadresse kopieren
Auf Mobilgeräten kann man Bilder auch nicht per langem Drücken teilen, und Screenreader funktionieren ebenfalls nicht
All diese Punkte zusammen vermitteln den Eindruck: „Das ist kein echtes Web“
Es wirkt wie abgekapselter Rich Content, eine Insel im Browser, ähnlich wie Java-Applets Ende der 90er oder Flash bzw. Silverlight in den frühen 2000ern
Wenn solche Funktionen fehlen, kann man es per Definition nicht als „echtes Web“ bezeichnen
Am Ende führt das zu der philosophischen Frage, was das Web eigentlich ist
Ob es nur ein Medium zur Auslieferung von Inhalten ist oder etwas Größeres
Viele sind heute das App-ifizieren (app-lification) des Webs leid und vermissen das frühere offene Web
Ich habe die Demo mit einem Screenreader ausprobiert, und es hat überhaupt nicht funktioniert
Das ist auch nicht die Richtung, die Microsoft beabsichtigt hat
Avalonia unterstützt WASM, also läuft MAUI darauf, wenn man es darüberlegt
Aber das ist letztlich einfach ein Desktop-GUI-Toolkit, das per WASM gerendert wird
Das ist zwar cool, fühlt sich aber eher wie eine moderne Version von Silverlight an als wie eine Web-App
Trotzdem ist es ein großer Vorteil, dass man nun Linux-Desktops als Zielplattform ansprechen kann
Viele werden vermutlich auch einheitlich gerenderte Oberflächen wie bei Avalonia bevorzugen statt der nativen Controls jeder Plattform, die MAUI sonst verwendet
Mit modernem Browser-CSS/JS/HTML ist das meiste ohnehin möglich
Ich mag XAML, aber JSX ist ein ähnliches Konzept und wird in echtes HTML kompiliert
Dasselbe habe ich schon zu Silverlight-Zeiten gedacht — ich verstehe nicht, warum man immer wieder versucht, Flash neu zu bauen
Unity-Web-Builds sind bereits das bessere „C#-Flash“
Wenn solche Grundfunktionen fehlen, ist das für mich ein Ausschlusskriterium (non-starter)
MAUI ohne Unterstützung für Linux-Desktops kam für mich von Anfang an nicht infrage
Durch diese Ergänzung ist es immerhin etwas besser geworden, aber ich denke immer noch, dass man besser direkt Avalonia verwendet
Trotzdem ist es schön, dass es diese Option nun für bestehende Projekte gibt
Endlich kann man unter Linux Apps mit langsamen, seltsamen Animationen und „Phone-Style-UX“ bauen, ohne auf Kotlin Multiplatform oder Electron angewiesen zu sein
Aber der Widget-Satz besteht offenbar nur aus Buttons und Checkboxes, was enttäuschend ist
Ich frage mich, warum Demos moderner UI-Toolkits heutzutage schlechter wirken als Demos aus Delphi-1-Zeiten
Es unterstützt bereits Windows/Mac/Linux/WASM
Diese Arbeit scheint eher für Leute gedacht zu sein, die bestehende MAUI-Apps auf Linux/WASM ausweiten wollen
Den Fortschritt kann man im Avalonia-Blog verfolgen
Einer der Gründe, warum Leute im .NET-Ökosystem MAUI meiden, ist, dass Microsoft es selbst nicht nutzt
Sogar Teams basiert auf Electron
Da fragt man sich unweigerlich: „Wenn nicht einmal MS es nutzt, warum sollten wir es tun?“
Die Windows-Abteilung verantwortet WinUI/Win32, Office setzt auf React, und die Entwicklerabteilung betreut WPF und MAUI
Weil jede Abteilung ihr eigenes Ding macht, sind die UI-Toolkits zersplittert
Am Ende bekommt jedes Toolkit nur halbherzige Unterstützung
Auch Teams ist im Zuge des Wechsels von Angular zu React diesen Weg gegangen
Trotzdem stimmt es, dass MAUI nicht verwendet wird
Man scheint eher bewährte Technologien wie Avalonia oder WinForms zu bevorzugen
Es ist unklar, worauf MS langfristig setzen wird
Es gibt auch Blazor, aber das ist eher für interne Apps als als React-Ersatz gedacht
Nebenbei gefragt: Es ist auch zweifelhaft, wie stark Google Flutter in den eigenen Apps nutzt
Teams kam 2017 heraus, MAUI wurde 2022 vorgestellt
Auch der Umstieg auf React erfolgte vor MAUI
Dass MS MAUI trotzdem nicht ausreichend dogfooded, ist allerdings besorgniserregend
Zuletzt gab es auch Meldungen über Stellenabbau rund um MAUI, und das interne Vertrauen wirkt nicht besonders stark
Man muss außerdem berücksichtigen, dass Flutter fünf Jahre Vorsprung hatte
Dennoch bleibt der Eindruck, dass MS sich MAUI nicht wirklich verschrieben hat
Es endet immer mit eingestelltem Support
Standard-Webtechnologien zu verwenden, ist besser für die mentale Gesundheit
(Das soll MAUI nicht verteidigen)
Falls es missverständlich war, hier noch einmal zur Einordnung
.NET MAUI ist ursprünglich ein Framework, mit dem man mit einer einzigen Codebasis Apps für Android, iOS, macOS und Windows erstellt
Neu hinzugekommen sind diesmal Linux und der Browser
Ich habe auf dem Mac eine Hello-World-App gebaut, und das Setup war ziemlich kompliziert
Trotzdem war es schön, nach langer Zeit wieder einmal XAML zu verwenden
Ich habe für Entwicklungssoftware nach einer plattformübergreifenden GUI gesucht
Zuerst habe ich MAUI ausprobiert, aber schon die Installation war ein Albtraum
Nicht einmal grundlegende UI-Funktionen wurden unterstützt
Danach habe ich AvaloniaUI ausprobiert, und die Erfahrung war genau das Gegenteil
Die Installation war einfach, und mit ein bisschen Recherche ließ sich sogar ein transparentes rahmenloses Fenster leicht umsetzen
Die Visual-Studio-Integration ist etwas enttäuschend, aber insgesamt ist es MAUI weit voraus
Das wirkt wie eine Wiederauferstehung von Silverlight
Referenz: Microsoft Silverlight Wiki
In Chrome funktioniert die Demo fast gar nicht
Das Schiebepuzzle reagiert träge, und der Zurück-Pfeil friert ein
Nach einem Neuladen landet man wieder auf dem Startbildschirm
Auch Zeit- und Datumsauswahl sind schlecht ausgerichtet und umständlich zu bedienen
Insgesamt ist das ziemlich miserabel
Zugehöriger Thread
Ich habe im Abschnitt „Launch MAUI in your browser“ die Demo „Word puzzle“ gestartet
Wenn man auf „Randomize“ klickt, werden die Kacheln gemischt, aber wenn man dann mit dem Pfeil oben zurückgeht, friert der Bildschirm komplett ein
Das Puzzle bleibt im Hintergrund sichtbar, das Menü liegt darüber, und nichts lässt sich mehr anklicken
Das passiert in mehreren Browsern gleichermaßen
Demo-Link
Klick-und-Zieh ist unzuverlässig, und visuelles Feedback gibt es keines
Die Kacheln bewegen sich nicht, sondern teleportieren sich einfach
Ein einfacher Klick oder eine animierte Bewegung wäre vermutlich besser gewesen
Ein anderer Nutzer berichtet dasselbe Problem
Beim RPN-Rechner kann man nicht einmal Zahlen auf den Stack legen
Wir brauchen wirklich dringend ein UI-Toolkit, mit dem man echte CAD-Programme bauen kann
Ich habe Apps, die wie WebViews aussehen, inzwischen satt
Ich hasse die Web-UI-Trends der letzten zehn Jahre
Alles wird größer, auf Touch ausgelegt, mit viel Leerraum und unnötigen Animationen
Ich möchte zurück zu älteren Oberflächen, bei denen Informationsdichte und Bedienbarkeit im Mittelpunkt stehen
Genau das gefällt mir an japanischen Websites
Im Avalonia-Demo-Reel sieht man, dass sich mit dem .NET-GUI-Stack auch Dinge wie Video-Editoren oder Kartenanalyse-Tools bauen lassen
Avalonia Showcase
Wenn nur Wetter- oder To-do-Apps drin sind, ist das letztlich bedeutungslos
WPF und WinForms gibt es ja immer noch