Anzeige

Am Puls von Microsoft

Anzeige

Uno Platform – der unbekannte .NET Schatz?

DrWindows

Redaktion
Uno Platform – der unbekannte .NET Schatz?
von Tobias Scholze
Unbenannte-Zeichnung-720x360.png


Das Anfang 2018 ins Leben gerufene Framework Uno mausert sich seitdem zu einem noch recht unbekannten Schatz an neuen Möglichkeiten im .NET-Universum. Anders als beispielsweise Xamarin richtet sich Uno vermehrt an UWP- und WinUI-Entwickler, um mit C# und bekannten XAML-Elementen plattformunabhängige Applikationen zu entwickeln. Durch den Open Source Ansatz der Uno-Plattform zählen neben Windows, Mac, Linux, iOS und Android auch Web Assembly zu den erreichbaren Zielen. Selbst für Mehrbildschirmgeräte wie dem Microsoft Surface Duo lassen sich Uno Applikationen entwickeln.

Unterschied zu Xamarin.Forms​


Der markanteste Unterschied zu Xamarin.Forms ist mitunter der XAML-Dialekt. Uno hält sich hier sehr strikt an WinUI beziehungsweise an den selbigen XAML-Dialekt, mit welchem Entwickler aus Universal Windows Platform, kurz UWP, Berührungen haben.

Ein weiterer Punkt ist die Marktpositionierung. Xamarin.Forms sieht sich selbst stark im mobilen Sektor im Sinne von Android und iOS. Die Uno-Plattform hat hier einen mehr generalistischen Ansatz gewählt. Somit bringt es Linux- und Webunterstützung von Haus aus bereits mit.

Dem Lebensalter geschuldet verfügt Uno jedoch noch über einen merkbar kleineren Entwicklerkreis als der defacto Framework-Bruder aus Redmond.

Ob Uno nun ein Konkurrent zu Xamarin.Forms oder MAUI ist, muss jeder für sich selbst entscheiden. In meinen Augen sprechen beide Frameworks unterschiedliche Zielgruppen an.

Uno hingegen versucht WinUI/ UWP XAML Entwickler abzuholen und führt Microsofts WinUI3 Projekt “Reunion” pragmatisch weiter.

Gewisse Features von Xamarin oder MAUI wie unter anderem Hot Reload suchte ich vergebens unter Uno. Dies kann aber auch an anderen Umständen meines Feldversuchs gelegen haben.

Freiheit des Entwicklungssystems​


Neben der Freiheit, auf welchen Geräten man Uno Applikationen ausführen möchte, hat man auch die Freiheit, mit welchem Betriebssystem man diese entwickeln möchte als auch mit in welcher Entwicklungsumgebung.

Auf der Seite des Frameworks findet man eine Übersicht, gestaffelt nach Betriebssystem und Entwicklungsumgebung, mit welcher Kombination welche Zielplattformen möglich sind.

Offiziell unterstützt werden Plugins für Microsoft Visual Studio, VS for Mac und JetBrains Rider IDEs. Wer mit mehr manueller Terminalarbeit zurecht kommt, kann auch Visual Studio Code nutzen. Aufgrund einer starken Verzahnung mit der dotnet-CLI lassen sich Uno Apps in jeder Umgebung und mit jedem Editor entwickeln, welche .NET unterstützen.

Meine Meinung: Nichts für komplette Anfänger​


Dieser Punkt ist kontrovers. Für mich ist die Entwicklung mit dem Uno Framework nichts, mit welchem kompletten Anfänger ihre spannende Reise durch die Welt der Softwareentwicklung beginnen sollten.

Einerseits sollte man in meinen Augen die Zusammenhänge der einzelnen Bestandteile wie .NET, WinUI, Build Targets und Co. verstehen, als auch den Umgang mit dem Terminal in Hinsicht auf das dem Verständnis welche Befehle man ausführt, um beispielsweise Uno und dessen Templates zu installieren.

Dies bedeutet nicht, dass es Uno einen explizit schwer macht, nur ein “File -> New Project -> Uno” ist nicht vorhanden. In den Augen vieler erfahrener Entwickler ist dies eher einen Segen als ein Fluch.

Hilfe zum Start​


Ähnlich wie bei MAUI von Microsoft hat auch Uno ein kommandozeilenbasierendes Prüfwerkzeug, um das Betriebssystem und dessen Komponenten auf die Vollständigkeit der benötigten Bestandteile zur Verwendung des Uno Frameworks zu prüfen. Das kleine Tool “uno-check”, welches sich via dem „dotnet global“ –Befehl installieren lässt, hilft bei der Überprüfung der vorhandenen Komponenten auf dem System, auch gibt es Tipps, wie man etwaige Probleme beheben könnte. Das Werkzeug schlug auf meinen Systemen jedoch immer fehl beziehungsweise es installierte Versionen von .NET, welche sich noch in einem “Preview”-Zustand befanden. Wer sich nun mit den Zusammenhängen von .NET, GTK, Xamarin Tools for Android und anderen auskennt, kann diese wohl selbst per Hand lösen – für, wie oben beschrieben, Anfänger könnte hier jedoch Schluss sein.



Ich persönlich scheine auch noch hier zu viel Anfänger in mir zu haben, da die offizielle Anleitung unter MacOS als auch unter Windows nicht zu dem gewünschten Effekt geführt hat. Nichtsdestotrotz war es dennoch möglich, mittels Rider ein bau- und lauffähiges Uno Projekt anzulegen.

Was das Uno Framework alles leisten kann, wird einem bei einem Blick auf den eigenen Samples-Bereich der Webseite bewusst. Hier finden Interessierte eine kuratierte Liste mit Beispielanwendungen, welche mit dem Framework erstellt wurden, natürlich inklusive der dazugehörigen Quelltexte. Im Bereich „Showcases“ sind etliche kommerzielle Applikationen gelistet, welche ebenfalls auf der Plattform basieren.

Wer Uno einmal ausprobieren möchte, jedoch absolut keine Lust oder Möglichkeit hat es lokal zu installieren, kann dies auch im Web tun. Dank WASM-Support lässt sich mit Uno „Playground“ auch im Web experimentieren.

Native Oberflächendarstellungen (Themes)​


Anders als andere plattformunabhängige Möglichkeiten, Applikationen zu entwickeln bietet Uno dankenswerterweise verschiedene Themes, also Oberflächen, an, um die geschriebenen Programme wie aus einem Guss zum darunterliegenden Betriebssystem aussehen zu lassen.

Neben “Material”, was das Google Theme ist, existieren noch Fluent, was an Microsoft angelehnt ist, als auch Cupertino was der iOS Style ist.



Ein Austausch der Designs zur Laufzeit scheint für mich auf den ersten Blick weniger möglich, da jede plattformspezifische Darstellung sich in den Möglichkeiten der Konfiguration der einzelnen Komponenten stark unterscheiden kann. Hierfür bietet Uno eigene XAML-Attribute, um dennoch aus einem Stück Quellcode alle Zielplattformen bespielen zu können.

Ein Überblick, wie die jeweiligen Darstellungen der Komponenten aussehen, bietet die Webseite Uno Gallery.

Offene Community​


Die Entwicklung des Frameworks findet offen und transparent für jeden einsehbar auf GitHub statt.

Nicht nur zum anfänglichen Hineinschnuppern, sondern auch um Wissen auszutauschen, bietet Uno ebenfalls einen YouTube Kanal, einen Twitter Account als auch beispielsweise noch einen Discord Server an.

Somit stellt die Community etliche Ressourcen bereit, um den Start mit Uno zu wagen oder um dessen Zukunft aktiv mitzugestalten. Wer hingegen realen Menschen zum Folgen auf Social Media sucht, dem sei Sasha Krsmanovic (Twitter, LinkedIn) empfohlen. Sasha ist der Chief Marketing Office der Firma hinter dem Open Source Projekt und hat immer ein offenes Ohr.

Regelmäßig findet auch die hauseigene Messe „UnoConf“ statt. Aufzeichnungen und Informationen zu den vergangenen Jahren findet ihr auf der Seite unoconf.com.

Fazit​


All meine negativen Erfahrungen schiebe ich, wie erwähnt, auf meine Unerfahrenheit. Denn aus meiner Entwicklerblase wurde mir sehr oft ein positives Feedback zu Uno mitgeteilt. Wie erwähnt ist die Uno Platform vor allem für Entwickler interessant, welche bereits Wissen im Bereich UWP und WinUI aufgebaut haben. Uno ermöglicht es somit, dass diese erfahrenen Entwickler viele komplett neue und noch nicht bespielte Wiesen vor sich haben. Sei es nun Desktopsysteme außerhalb von Windows oder Mobile und Web via WASM.

Beachtenswert ist, dass, auch wenn im Hintergrund oft die branchenbekannte Firma Telerik zu sehen ist, all dies ein kleine kanadische Firma mit einem davorstehenden Open Source Community Projekt weit vor MAUI und ganz ohne Microsoft erreicht hat.

Aus diesem Grund ist für mich Uno der unbekannte Schatz im .NET Ökosystem – auch wenn ich diesen nicht ausgraben werde!


Hinweis: Der Artikel wird möglicherweise nicht vollständig angezeigt, eingebettete Medien sind in dieser Vorschau beispielsweise nicht zu sehen.

Artikel im Blog lesen
 
Anzeige
Dies bedeutet nicht, dass es Uno einen explizit schwer macht, nur ein “File -> New Project -> Uno” ist nicht vorhanden.
Natürlich gibt es das. Bislang hatte man dadurch sofort eine Solution mit Projekten für alle Plattformen, die aktuelle Version bietet sogar einen Wizard wo man die einzelnen Zielplattformen auswählen kann. (Fand ich vorher immer ziemlich doof, dass ich Mac, Linux und Web alles erst wieder von Hand tilgen musste.😁)
SharedScreenshot.jpg


Wundert mich übrigens, dass es das erste Mal ist, dass man von Uno bei Euch im Blog liest. Mit deren Motto "UWP anywhere" war es eigentlich prädestiniert dafür. Eigentlich ist es gar nicht so unbekannt. Hab mich "damals" schon gewundert, dass die damalige Dr. Windows App nicht damit gemacht war. Zu der Zeit war Uno teils noch deutlich eingeschränkter, aber da hats nicht gefehlt was für so eine Content-App notwendig gewesen wäre.

Ansonsten habe ich auch eine App für Android und UWP mit Uno in beiden Stores. Gleiches UI (mit meinem geliebten XAML) und gleiche Funktion auf beiden Plattformen. Funktioniert 1A cross platform. (Und für Nostalgiker hab ich auch noch eine Windows 10 Mobile Version, die sieht genauso identisch aus. Aber im Gegensatz zu Android und aktuellem Windows braucht es hierfür inzwischen wirklich viele Code-Weichen.🤭)

Dank Uno gibt es übrigens auch den Rechner von Windows 10 auf allen anderen Plattformen.
Zum ausprobieren im Browser: Uno Calculator (Für den langsamen Start kann Uno nix, das ist aktuell einfach so bei WebAssemby.)
 
Zuletzt bearbeitet:
Ich habe bei meiner App wirklich versucht Uno einzusetzen, aber ich bin damit nie weit gekommen und bei der Navigation mit Gesten bei iOS habe ich das ganze erstmal ruhen lassen. Es war vielleicht auch ein bisschen heftig das Uno Projekt gleich mit dem Prism Template umsetzen zu wollen, aber ich wollte wie bei meiner UWP App eine Logik haben.

Vor zwei Wochen habe ich dann ein MAUI Projekt für meine App gestartet, um Android und IOS bedienen zu können und konnte innerhalb einer Woche die Kernfunktionen meiner App umsetzen. Nur die GUI ist noch eine Baustelle, da ich nicht wie bei Uno mein XAML relativ einfach übernehmen kann. Was mich ein bisschen bei MAUI ägert ist, das Linux offiziell nicht unterstützt wird, so wie bei Uno. Deshalb werde ich das Uno Projekt auch noch nicht bei mir beerdigen, sondern immer mal wieder tüfteln.
 
Neben UNO gibt es aber auch noch Avalonia.
Beide sind an WPF angelehnt.
Beide sind cross platform.
Beide sind OpenSource (UNO: Apache 2.0 Lizenz; Avalonia: MIT-Lizenz)
Beide erstellen Anwendungen für den Desktop (Windows, Linux, macOS), Mobile Geräte (iOS und Androis) und den Browser (WebAssembly).
Beide nutzen XAML als Beschreibungssprache für die GUI.

Wäre somit schon, wenn jemand die Unterschiede ausarbeiten könnte.

Vor zwei Wochen habe ich dann ein MAUI Projekt für meine App gestartet,

Stimmt. MAUI kann man bei dem Vergleich zwischen UNO und Avalonia als 3. Cross Plattform OpenSource .NET UI hinzufügen.
Also alle drei miteinander vergleichen.
 
Zuletzt bearbeitet:
@DonRolando danke für dein ausführlichen Kommentar. :) Mich freut es das du mehr Erfolg hattest als ich.
Wie erwähnt setzt Uno mehr auf UWP-Entwickler, und je nach Background wurde damals entschieden, dass es mit Xamarin.Forms umgesetzt wurde.
Magst du uns verraten wie deine App heißt?

@jpweber Spannend zu hören! Was war bei dir das genaue Problem? Unterstützt der Standard NavigationController nicht die Gesten von iOS?
Wegen MAUI bin ich noch immer am Hadern da VS for Mac das noch nicht wirklich unterstützt.

@theuserbl lass und dann doch mal ganz ungeniert den @Kevin Kozuszek ansehen xD
 
Neben UNO gibt es aber auch noch Avalonia.
Beide sind an WPF angelehnt.
Naja, Avalonia ist sicherlich an WPF angelegt, aber der große Unterschied zwischen Uno und all den anderen Frameworks (Avalona, Maui, Forms, ...) ist ja, dass Uno nicht bloß XAML als zugrundeliegende Beschreibungssprache verwendet, sondern ganz konkret den UWP-/WinUI-Dialekt mit denselben Namespaces und Controls. Aber daneben sind sogar noch die wichtigsten Non-UI Teile aus UWP enthalten (seit dieser Woche mit Uno 4.4 beispielsweise auch ganz frisch die UWP Gamepad API). Daher heißt es ja "UWP anywhere".

Unter Windows kann man also komplett in UWP verbleiben, und nur auf den anderen Plattformen benötigt man Uno um UWP auf die jeweiligen Systeme zu bringen. Da die Schnittstellen identisch sind und die originalen Templates verwendet werden, sieht eine UWP-App unter Android und Co im Grunde exakt wie am PC aus.
 
Anzeige
Oben