{"id":284620,"date":"2025-07-22T08:31:14","date_gmt":"2025-07-22T08:31:14","guid":{"rendered":"https:\/\/www.europesays.com\/de\/284620\/"},"modified":"2025-07-22T08:31:14","modified_gmt":"2025-07-22T08:31:14","slug":"gui-frameworks-fuer-net-teil-6-uno-platform","status":"publish","type":"post","link":"https:\/\/www.europesays.com\/de\/284620\/","title":{"rendered":"GUI-Frameworks f\u00fcr .NET \u2013 Teil 6: Uno Platform"},"content":{"rendered":"<p>    close notice<\/p>\n<p class=\"notice-banner__text a-u-mb-0\">\n      This article is also available in<br \/>\n        <a href=\"https:\/\/www.heise.de\/en\/background\/GUI-frameworks-for-NET-Part-6-Uno-Platform-10494870.html\" class=\"notice-banner__link a-u-inline-link\" target=\"_blank\" rel=\"noopener\">English<\/a>.<\/p>\n<p>      It was translated with technical assistance and editorially reviewed before publication.\n    <\/p>\n<p class=\"notice-banner__link a-u-mb-0\">\n    Don\u2019t show this again.\n<\/p>\n<p>Die Uno Platform ist ein weiteres Cross-Platform-GUI-Framework f\u00fcr .NET und der direkte Mitbewerber von Avalonia aus Teil 5. Sie existiert seit dem Jahr 2018 als Open-Source-Projekt (Apache-2.0-Lizenz) <a href=\"https:\/\/platform.uno\/about-us\/\" rel=\"external noopener\" target=\"_blank\">der gleichnamigen kanadischen Firma<\/a> mit Sitz in Montr\u00e9al, mit rund 30 Mitarbeitenden.<\/p>\n<p>    <img loading=\"lazy\" decoding=\"async\" alt=\"Dr. Holger Schwichtenberg\" height=\"293\" src=\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='696px' height='391px' viewBox='0 0 696 391'%3E%3Crect x='0' y='0' width='696' height='391' fill='%23f2f2f2'%3E%3C\/rect%3E%3C\/svg%3E\" style=\"aspect-ratio: 233 \/ 293; object-fit: cover;\" width=\"233\"\/><\/p>\n<p class=\"a-inline-textbox__synopsis\">\n          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\u00e4lt Vortr\u00e4ge auf Fachkonferenzen und ist Autor zahlreicher Fachb\u00fccher.&#13;<\/p>\n<p>Uno-Anwendungen laufen auf Windows ab Windows 7, auf allen Linux-Distributionen, f\u00fcr die .NET 7.0 oder h\u00f6her zur Verf\u00fcgung steht, macOS (Desktop und Catalyst, ab Version 10.15), iOS ab Version 11, Android ab Version 5 und in allen WebAssembly-f\u00e4higen Browsern. Es gibt auch <a href=\"https:\/\/www.nuget.org\/packages\/Uno.WinUI.Runtime.Skia.Tizen\" rel=\"external noopener\" target=\"_blank\">ein NuGet-Paket f\u00fcr Tizen<\/a>, das aber weder <a href=\"https:\/\/github.com\/unoplatform\/uno\" rel=\"external noopener\" target=\"_blank\">in der Plattform-Liste auf GitHub<\/a> noch <a href=\"https:\/\/platform.uno\/docs\/articles\/getting-started\/requirements.html\" rel=\"external noopener\" target=\"_blank\">in der Dokumentation<\/a> erscheint, weil es nicht auf dem aktuellen Stand ist.<\/p>\n<p>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.<\/p>\n<p>    <img loading=\"lazy\" decoding=\"async\" alt=\"enterJS Advanced Angular Day\" height=\"1080\" src=\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='696px' height='391px' viewBox='0 0 696 391'%3E%3Crect x='0' y='0' width='696' height='391' fill='%23f2f2f2'%3E%3C\/rect%3E%3C\/svg%3E\" style=\"aspect-ratio: 1920 \/ 1080; object-fit: cover;\" width=\"1920\"\/><\/p>\n<p class=\"a-caption__source\">\n      (Bild:\u00a0coffeemill\/123rf.com)\n    <\/p>\n<p>Verbesserte Klassen in .NET 10.0, Native AOT mit Entity Framework Core 10.0 und mehr: Dar\u00fcber informieren Dr. Holger Schwichtenberg und weitere Speaker der Online-Konferenz <a href=\"https:\/\/net.bettercode.eu\/index.php?wt_mc=intern.academy.dpunkt.konf_dpunkt_bcc_net.empfehlung-ho.link.link\" rel=\"external noopener\" target=\"_blank\">betterCode() .NET 10.0<\/a> am 18. November 2025. Nachgelagert gibt es sechs ganzt\u00e4gige Workshops zu Themen wie C# 14.0, KI-Einsatz und Web-APIs.<\/p>\n<p>Neue M\u00f6glichkeiten seit Uno Platform 6.0<\/p>\n<p>Entwicklerinnen und Entwickler hatten vor dem Erscheinen von <a href=\"https:\/\/platform.uno\/blog\/uno-platform-studio-6-0\/\" rel=\"external noopener\" target=\"_blank\">Uno in Version 6.0 am 7. Mai 2025<\/a> die Wahl zwischen der Kompatibilit\u00e4t zu UWP mit WinUI 2 im Namensraum Windows.UI.Xaml oder WinUI 3 im Namensraum Microsoft.UI.Xaml. Daher gibt es zwei Uno-Pakete: <a href=\"https:\/\/www.nuget.org\/packages\/Uno.UI\/\" rel=\"external noopener\" target=\"_blank\">Uno.UI f\u00fcr UWP-XAML<\/a> (hier gibt es keine Version 6.0 mehr) und <a href=\"https:\/\/www.nuget.org\/packages\/Uno.WinUI\/\" rel=\"external noopener\" target=\"_blank\">Uno.WinUI f\u00fcr WinUI-3-XAML<\/a> (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 <a href=\"https:\/\/platform.uno\/docs\/articles\/migrating-to-uno-6.html\" rel=\"external noopener\" target=\"_blank\">die Migration auf WinUI 3<\/a>. Auch mit dem Hosting in einer GTK-Shell macht Uno in Version 6.0 Schluss.<\/p>\n<p>Auf Windows bietet Uno aber in Version 6.0 immer noch <a href=\"https:\/\/platform.uno\/docs\/articles\/features\/using-skia-hosting-native-controls.html\" rel=\"external noopener\" target=\"_blank\">vier Optionen f\u00fcr die Shell<\/a>: WPF, Win32, Windows App SDK (dann l\u00e4uft 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\u00f6\u00dfe beim Deployment verkleinert. Auch Self-Contained Apps, die die .NET-Laufzeitumgebung und alle ben\u00f6tigten Bibliotheken mitbringen und daher keine vorherige Installation der .NET Runtime voraussetzen, sind nur beim Win32-Hosting m\u00f6glich. Eine Kompilierung mit dem Native-AOT-Compiler ist allerdings noch nicht m\u00f6glich. &#8222;Native AOT compilation is on the roadmap&#8220;, sagte dazu Sasha Krsmanovic, Chief Marketing Officer bei Uno, im Interview. Ob es bei den vier Hosting-Optionen auf Windows bleiben wird, ist offen. &#8222;The future of WPF will depend on usage by our clients and community, which is the case for all the components of Uno Platform&#8220;, so Sasha Krsmanovic.<\/p>\n<p>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\u00e4chen. Es fehlen in Uno zum Beispiel die Steuerelemente ListBox, MapControl, Hub, SemanticZoom, RichTextBlock, VirtualizingStackPanel, ParallaxView und AnnotatedScrollBar.<\/p>\n<p>Eine Liste von Abweichungen zwischen WinUI-Steuerelementen und Uno-Steuerelementen <a href=\"https:\/\/platform.uno\/docs\/articles\/implemented-views.html\" rel=\"external noopener\" target=\"_blank\">findet man in der Dokumentation<\/a>. Auch bei der XAML-Syntax <a href=\"https:\/\/platform.uno\/docs\/articles\/api-differences.html\" rel=\"external noopener\" target=\"_blank\">gibt es marginale Unterschiede<\/a>. So ist der Typ DependencyObject in Uno eine Schnittstelle statt einer Klasse wie bei Microsoft. Auf Android, iOS und macOS weicht die Vererbungsfolge f\u00fcr die Basisklasse UIElement von der Implementierung von Microsoft ab.<\/p>\n<p>Das Rendering in Uno Platform 6.0 basiert wie bei Avalonia <a href=\"https:\/\/skia.org\/\" rel=\"external noopener\" target=\"_blank\">auf der Skia Graphics Library von Google<\/a> via <a href=\"https:\/\/github.com\/mono\/SkiaSharp\" rel=\"external noopener\" target=\"_blank\">SkiaSharp aus dem Mono-Projekt<\/a> (siehe Abbildung 1) \u2013 au\u00dfer beim Hosting in der Windows App auf Windows, wo die DirectX-12-basierte Rendering Engine des SDK zum Einsatz kommt (siehe auch <a href=\"https:\/\/www.heise.de\/hintergrund\/GUI-Frameworks-fuer-NET-Teil-2-WPF-und-WinUI-3-10368096.html\" target=\"_blank\" rel=\"noopener\">Teil 2 der Serie<\/a>). Vor Uno 6.0 wurden auf iOS und Android Native Renderer eingesetzt, die weiterhin als Optionen verf\u00fcgbar sind.<\/p>\n<p>Im Webbrowser wurde vor Uno 6.0 XAML <a href=\"https:\/\/platform.uno\/docs\/articles\/features\/using-native-rendering.html\" rel=\"external noopener\" target=\"_blank\">immer nach HTML und CSS umgesetzt<\/a> (mit sehr vielen -Elementen). Diese Rendering-Optionen gibt es auch in Uno 6.0 noch; Standard ist aber nun auch im Browser <a href=\"https:\/\/platform.uno\/docs\/articles\/features\/using-skia-rendering.html\" rel=\"external noopener\" target=\"_blank\">das Skia-Rendering<\/a>. Einen Vergleich von HTML- und Skia-Rendering zeigen die Abbildungen 2 und 3. Mit dem Skia-Rendering sehen Uno-Anwendungen genau wie Avalonia-Anwendungen auf allen Plattformen gleich aus, anders als .NET MAUI (siehe <a href=\"https:\/\/www.heise.de\/hintergrund\/GUI-Frameworks-fuer-NET-Teil-3-Android-iOS-macOS-und-NET-MAUI-10385896.html\" target=\"_blank\" rel=\"noopener\">Teil 3 der Serie<\/a>), das durch Aufsetzen auf dem plattformspezifischen Rendering jeweils ein plattformspezifisches Look and Feel bietet.<\/p>\n<p>      <a href=\"https:\/\/www.heise.de\/imgs\/18\/4\/9\/0\/1\/2\/1\/0\/image23-7a3d2830ed79ea4f.png\" target=\"_blank\" rel=\"noopener\"><\/p>\n<p>  <img loading=\"lazy\" decoding=\"async\" alt=\"Aufbau der Uno Platform in Version 6.0 (Abb. 1)\" height=\"563\" src=\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='696px' height='391px' viewBox='0 0 696 391'%3E%3Crect x='0' y='0' width='696' height='391' fill='%23f2f2f2'%3E%3C\/rect%3E%3C\/svg%3E\" style=\"aspect-ratio: 1024 \/ 563; object-fit: cover;\" width=\"1024\"\/><\/p>\n<p>      <\/a><\/p>\n<p>Aufbau der Uno Platform in Version 6.0 (Abb. 1)<\/p>\n<p class=\"a-caption__source\">\n      (Bild:\u00a0<a href=\"https:\/\/platform.uno\/blog\/uno-platform-studio-6-0\" rel=\"external noopener\" target=\"_blank\">Uno Platform<\/a>)\n    <\/p>\n<p>      <a href=\"https:\/\/www.heise.de\/imgs\/18\/4\/9\/0\/1\/2\/1\/0\/Teil6_Abb2_Uno_Browser_HTML-a73f7c7dd21108a1.png\" target=\"_blank\" rel=\"noopener\"><\/p>\n<p>  <img loading=\"lazy\" decoding=\"async\" alt=\"Die Beispielanwendung zur Aufgabenverwaltung l\u00e4uft hier im Browser auf Basis von Uno, WebAssembly, HTML und einer lokalen SQLite-Datenbank im Browserspeicher (Abb. 2).\" height=\"947\" src=\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='696px' height='391px' viewBox='0 0 696 391'%3E%3Crect x='0' y='0' width='696' height='391' fill='%23f2f2f2'%3E%3C\/rect%3E%3C\/svg%3E\" style=\"aspect-ratio: 1917 \/ 947; object-fit: cover;\" width=\"1917\"\/><\/p>\n<p>      <\/a><\/p>\n<p>Die Beispielanwendung zur Aufgabenverwaltung l\u00e4uft hier im Browser auf Basis von Uno, WebAssembly, HTML und einer lokalen SQLite-Datenbank im Browserspeicher (Abb. 2).<\/p>\n<p>      <a href=\"https:\/\/www.heise.de\/imgs\/18\/4\/9\/0\/1\/2\/1\/0\/Teil6_Abb3_Uno_Browser_Skia-1db115f7343d8891.png\" target=\"_blank\" rel=\"noopener\"><\/p>\n<p>  <img loading=\"lazy\" decoding=\"async\" alt=\" Beim Skia-Rendering statt HTML-Rendering in dieser Abbildung sind die Abst\u00e4nde leicht anders und zwei Symbole sind verschwunden (Abb. 3).\" height=\"1041\" src=\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='696px' height='391px' viewBox='0 0 696 391'%3E%3Crect x='0' y='0' width='696' height='391' fill='%23f2f2f2'%3E%3C\/rect%3E%3C\/svg%3E\" style=\"aspect-ratio: 2110 \/ 1041; object-fit: cover;\" width=\"2110\"\/><\/p>\n<p>      <\/a><\/p>\n<p>Beim Skia-Rendering statt HTML-Rendering in dieser Abbildung sind die Abst\u00e4nde leicht anders und zwei Symbole sind verschwunden (Abb. 3).<\/p>\n<p>\n      Dieser Link ist leider nicht mehr g\u00fcltig.\n    <\/p>\n<p>Links zu verschenkten Artikeln werden ung\u00fcltig,<br \/>\n      wenn diese \u00e4lter als 7\u00a0Tage sind oder zu oft aufgerufen wurden.\n    <\/p>\n<p><strong>Sie ben\u00f6tigen ein heise+ Paket, um diesen Artikel zu lesen. Jetzt eine Woche unverbindlich testen \u2013 ohne Verpflichtung!<\/strong><\/p>\n<p><a href=\"https:\/\/www.heise.de\/forum\/heise-online\/Kommentare\/GUI-Frameworks-fuer-NET-Teil-6-Uno-Platform\/forum-565300\/comment\/\" class=\"&#010;    a-button&#010;    &#010;  \" name=\"meldung.newsticker.bottom.kommentarelesen\" target=\"_blank\" rel=\"noopener\"><\/p>\n<p><\/a><\/p>\n<p>          <a class=\"a-button a-button--no-margin\" href=\"https:\/\/www.heise.de\/developer\" name=\"meldung.developer.bottom.zurstartseite\" title=\"zur Startseite von Developer\" target=\"_blank\" rel=\"noopener\"><br \/>\n            Zur Startseite<br \/>\n          <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"close notice This article is also available in English. It was translated with technical assistance and editorially reviewed&hellip;\n","protected":false},"author":2,"featured_media":284621,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[135],"tags":[14235,29,47841,30,59805,196,190,189,194,191,84054,193,192,84055],"class_list":{"0":"post-284620","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-wissenschaft-technik","8":"tag-net","9":"tag-deutschland","10":"tag-developer","11":"tag-germany","12":"tag-gui","13":"tag-it","14":"tag-science","15":"tag-science-technology","16":"tag-technik","17":"tag-technology","18":"tag-uno-platform","19":"tag-wissenschaft","20":"tag-wissenschaft-technik","21":"tag-xaml"},"share_on_mastodon":{"url":"https:\/\/pubeurope.com\/@de\/114895957794583485","error":""},"_links":{"self":[{"href":"https:\/\/www.europesays.com\/de\/wp-json\/wp\/v2\/posts\/284620","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.europesays.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.europesays.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.europesays.com\/de\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.europesays.com\/de\/wp-json\/wp\/v2\/comments?post=284620"}],"version-history":[{"count":0,"href":"https:\/\/www.europesays.com\/de\/wp-json\/wp\/v2\/posts\/284620\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.europesays.com\/de\/wp-json\/wp\/v2\/media\/284621"}],"wp:attachment":[{"href":"https:\/\/www.europesays.com\/de\/wp-json\/wp\/v2\/media?parent=284620"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.europesays.com\/de\/wp-json\/wp\/v2\/categories?post=284620"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.europesays.com\/de\/wp-json\/wp\/v2\/tags?post=284620"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}