Künstliche Intelligenz
GUI-Frameworks für .NET – Teil 6: Uno Platform
Die Uno Platform ist ein weiteres Cross-Platform-GUI-Framework für .NET und der direkte Mitbewerber von Avalonia aus Teil 5. Sie existiert seit dem Jahr 2018 als Open-Source-Projekt (Apache-2.0-Lizenz) der gleichnamigen kanadischen Firma mit Sitz in Montréal, mit rund 30 Mitarbeitenden.
Dr. Holger Schwichtenberg ist Chief Technology Expert bei der MAXIMAGO-Softwareentwicklung. Mit dem Expertenteam bei www.IT-Visions.de bietet er zudem Beratung und Schulungen im Umfeld von Microsoft-, Java- und Webtechniken an. Er hält Vorträge auf Fachkonferenzen und ist Autor zahlreicher Fachbücher.
Uno-Anwendungen laufen auf Windows ab Windows 7, auf allen Linux-Distributionen, für die .NET 7.0 oder höher zur Verfügung steht, macOS (Desktop und Catalyst, ab Version 10.15), iOS ab Version 11, Android ab Version 5 und in allen WebAssembly-fähigen Browsern. Es gibt auch ein NuGet-Paket für Tizen, das aber weder in der Plattform-Liste auf GitHub noch in der Dokumentation erscheint, weil es nicht auf dem aktuellen Stand ist.
Uno basiert auf der eXtensible Application Markup Language (XAML), genauso wie die Windows Presentation Foundation (WPF), die Windows UI Library (WinUI), WinUI 3, .NET Multi-Platform App UI (MAUI) und Avalonia/Avalonia XPF. Die Syntax von XAML in Uno orientiert sich aber nicht an WPF-XAML, sondern an WinUI-XAML inklusive SVG-Rendering.
(Bild: coffeemill/123rf.com)
Verbesserte Klassen in .NET 10.0, Native AOT mit Entity Framework Core 10.0 und mehr: Darüber informieren Dr. Holger Schwichtenberg und weitere Speaker der Online-Konferenz betterCode() .NET 10.0 am 18. November 2025. Nachgelagert gibt es sechs ganztägige Workshops zu Themen wie C# 14.0, KI-Einsatz und Web-APIs.
Neue Möglichkeiten seit Uno Platform 6.0
Entwicklerinnen und Entwickler hatten vor dem Erscheinen von Uno in Version 6.0 am 7. Mai 2025 die Wahl zwischen der Kompatibilität zu UWP mit WinUI 2 im Namensraum Windows.UI.Xaml oder WinUI 3 im Namensraum Microsoft.UI.Xaml. Daher gibt es zwei Uno-Pakete: Uno.UI für UWP-XAML (hier gibt es keine Version 6.0 mehr) und Uno.WinUI für WinUI-3-XAML (hier gibt es eine Version 6.0). Da das Uno-Entwicklungsteam Uno.WinUI automatisiert aus Uno.UI erzeugt, sind die Funktionen beider Pakete nahezu identisch. Mit Version 6.0 empfiehlt Uno nun die Migration auf WinUI 3. Auch mit dem Hosting in einer GTK-Shell macht Uno in Version 6.0 Schluss.
Auf Windows bietet Uno aber in Version 6.0 immer noch vier Optionen für die Shell: WPF, Win32, Windows App SDK (dann läuft die Anwendung aber erst ab Windows 10 Version 19041) oder X11, wenn Windows Subsystem for Linux 2 mit einer entsprechenden Linux-Distribution vorhanden ist. Die Win32-Shell bietet im Gegensatz zur WPF-Shell Trimming (Tree Shaking) an, was die Anwendungsgröße beim Deployment verkleinert. Auch Self-Contained Apps, die die .NET-Laufzeitumgebung und alle benötigten Bibliotheken mitbringen und daher keine vorherige Installation der .NET Runtime voraussetzen, sind nur beim Win32-Hosting möglich. Eine Kompilierung mit dem Native-AOT-Compiler ist allerdings noch nicht möglich. „Native AOT compilation is on the roadmap“, sagte dazu Sasha Krsmanovic, Chief Marketing Officer bei Uno, im Interview. Ob es bei den vier Hosting-Optionen auf Windows bleiben wird, ist offen. „The future of WPF will depend on usage by our clients and community, which is the case for all the components of Uno Platform“, so Sasha Krsmanovic.
Seit Uno 6.0 gibt es die Steuerelemente Media Player und WebView2 zur Darstellung von HTML-Inhalten. Uno ist aber auch in Version 6.0 nicht zu 100 Prozent kompatibel zu Microsofts WinUI-Oberflächen. Es fehlen in Uno zum Beispiel die Steuerelemente ListBox
, MapControl
, Hub
, SemanticZoom
, RichTextBlock
, VirtualizingStackPanel
, ParallaxView
und AnnotatedScrollBar
.
Eine Liste von Abweichungen zwischen WinUI-Steuerelementen und Uno-Steuerelementen findet man in der Dokumentation. Auch bei der XAML-Syntax gibt es marginale Unterschiede. So ist der Typ DependencyObject
in Uno eine Schnittstelle statt einer Klasse wie bei Microsoft. Auf Android, iOS und macOS weicht die Vererbungsfolge für die Basisklasse UIElement
von der Implementierung von Microsoft ab.
Das Rendering in Uno Platform 6.0 basiert wie bei Avalonia auf der Skia Graphics Library von Google via SkiaSharp aus dem Mono-Projekt (siehe Abbildung 1) – außer beim Hosting in der Windows App auf Windows, wo die DirectX-12-basierte Rendering Engine des SDK zum Einsatz kommt (siehe auch Teil 2 der Serie). Vor Uno 6.0 wurden auf iOS und Android Native Renderer eingesetzt, die weiterhin als Optionen verfügbar sind.
Im Webbrowser wurde vor Uno 6.0 XAML immer nach HTML und CSS umgesetzt (mit sehr vielen
Aufbau der Uno Platform in Version 6.0 (Abb. 1)
(Bild: Uno Platform)
Die Beispielanwendung zur Aufgabenverwaltung läuft hier im Browser auf Basis von Uno, WebAssembly, HTML und einer lokalen SQLite-Datenbank im Browserspeicher (Abb. 2).
Beim Skia-Rendering statt HTML-Rendering in dieser Abbildung sind die Abstände leicht anders und zwei Symbole sind verschwunden (Abb. 3).