Sie sind hier: Wissen

Was ist Uno Platform ?

Uno Platform ist ein Framework zur Entwicklung von Cross-Platform-Lösungen auf Basis .NET, C# und XAML.
Open Source, kostenfrei; Beratung, Support und Training kosten aber.

Die Oberflächenbeschreibung erfolgt mit der XML-basierten "eXtensible Application Markup Language" (XAML)
Der eingesetzte XAML-Dialekt ist UWP-XAML (WinUI 2) oder WinUI3.

Plattformen

Aussagen von Uno über Uno

  • "Universal Windows Platform Bridge"
  • "pixel-perfect UI and UX"
  • "It provides the full API definitions of the UWP Windows 10 2004 (19041), and the implementation of parts of the UWP API, such as Windows.UI.Xaml, to enable UWP applications to run on these platforms. "
  • "Uno is not meant to be a complete replacement of all the native UI frameworks."

Details zur Uno Platform

Die Uno Platform ist ein weiteres Cross-Platform-GUI-Framework für .NET und der direkte Mitbewerber von Avalonia. Die Uno Platform gibt es seit dem Jahr 2018 als ein Open Source-Projekt der gleichnamigen kanadischen Firma mit Sitz in Montréal mit 30 Mitarbeitern https://platform.uno/about-us.

Uno-Anwendungen laufen auf Windows (ab Windows 7), Linux Desktop (alle Linux-Distributionen, auf denen .NET 7.0 oder höher läuft), macOS (Desktop und Catalyst, ab Version 10.15), iOS (ab Version 11), Android (ab Version 5) und im Browser (in allen WebAssembly-fähigen Browsern) sowie Tizen. Tizen erscheint jedoch weder in der Plattform-Liste auf https://github.com/unoplatform/uno noch https://platform.uno/docs/articles/getting-started/requirements.html, obwohl es ein aktuelles NuGet-Paket dazu vom Uno-Team gibt: https://www.nuget.org/packages/Uno.WinUI.Runtime.Skia.Tizen

Uno basiert wie die Windows Presentation Foundation (WPF), die Windows UI Library (WinUI), WinUI3, .NET Multi-Platform App UI (MAUI) und Avalonia/Avalonia XPF auf der eXtensible Application Markup Language (XAML). Die Syntax orientiert sich aber nicht an WPF, sondern streng an WinUI. Entwicklerinnen und Entwickler haben bei Uno die Wahl, dabei zwischen der Kompatibilität zu UWP mit WinUI2 im Namensraum Windows.UI.Xaml oder WinUI3 im Namensraum Microsoft.UI.Xaml zu sein. Daher gibt es zwei Uno-Pakete: Uno.UI für UWP-XAML https://www.nuget.org/packages/Uno.UI und Uno.WinUI für WinUI3-XAML https://www.nuget.org/packages/Uno.WinUI. Da das Uno-Entwicklungsteam Uno.WinUI automatisiert aus Uno.UI erzeugt, sind die Funktionen beider Pakete nahezu identisch.

In beiden Fällen ist Uno aber nicht zu 100% identisch zu Microsofts Oberflächen. Es fehlen in Uno zum Beispiel die Steuerelemente ListBox, MapControl, Hub, SemanticZoom, RichTextBlock, VirtualizingStackPanel, ParallaxView und AnnotatedScrollBar. Eine vollständige Abweichungsliste findet man unter https://platform.uno/docs/articles/implemented-views.html. Auch bei der XAML-Syntax gibt es marginale Unterschiede https://platform.uno/docs/articles/api-differences.html. So ist DependencyObject in Uno eine Schnittstelle statt einer Klasse wie bei Microsoft. Auf Android, iOS und macOS weicht die Vererbungsfolge für die Basisklasse UIElement ab von der Implementierung von Microsoft.

Das Rendering in Uno basiert wie bei Avalonia auf der Skia Graphics Library von Google https://skia.org via SkiaSharp aus dem Mono-Projekt https://github.com/mono/SkiaSharp. Auf Windows steht alternativ auch das Windows App SDK zur Verfügung, dann läuft die Anwendung aber erst ab Windows 10 (Version 19041). Auf Windows verwendet Uno eine WPF-Anwendung als Shell. Das bedeutet, dass die in Uno mögliche Native AOT-Kompilierung nicht auf Windows funktioniert, da die verwendete WPF-Shell nicht kompatibel zu NativeAOT ist. Im Browser wird XAML nach HTML und CSS umgesetzt inklusive einer JavaScript-Bibliothek für die Brücke zwischen WebAssembly und DOM.

Die Migration von WinUI3 auf Uno ist in vielen Fällen einfach. Aufrufe von Windows-spezifischen APIs (z.B. Microsoft.UI.Win32Interop) müssen dann durch plattformspezifische Kompilierung behandelt werden (#if WINDOWS … #endif). Die Dokumentation von Uno bietet neben Hinweisen zum Umstieg von UWP/WinUI2 und WinUI3 auch Hilfen zur Migration von WPF https://platform.uno/docs/articles/wpf-migration.html, von Xamarin.Forms https://platform.uno/docs/articles/guides/xf-migration/overview.html und sogar Silverlight https://platform.uno/docs/articles/guides/silverlight-migration/silverlight-migration-landing.html zu Uno an.

WinUI3-Steuerelemente von Drittanbietern haben in der Regel Abhängigkeiten von Windows-Betriebssystem-APIs, die in einer Uno-Anwendung nur auf Windows funktionieren können. So gibt es in der Uno-Dokumentation zwar einen Beitrag "How to use Windows Community Toolkit", in der dann aber der enttäuschende Satz steht: "While all Windows Community Toolkit packages are supported for UWP and WinAppSDK, this is not the case for the other platforms Uno Platform supports.". Es gab zaghafte Ansätze von Komponentenanbieter, spezielle Steuerelemente für Uno zu erschaffen, z.B. bei Syncfusion https://www.syncfusion.com/forums/176644/syncfusion-uno-platform-support und Infragistics https://platform.uno/blog/infragistics-announces-uno-platform-specific-ui-controls/, die aber bisher nicht in stabile Produkte mündeten.

Da ein Komponentenmarkt für Uno also bisher nicht in Schwung kommt, bietet Uno als Rettungsanker an, in Uno auch .NET MAUI-Steuerelemente (auch von Drittanbietern) zu verwenden. Dazu gibt es das in der Projektassistenten auswählbare Feature ".NET MAUI Embedding". Die Anwendung läuft dann aber nur noch auf den Plattformen, wo .NET MAUI läuft: iOS, Android, MacOS und Windows. Linux und der Webbrowser sind dann raus.

Neben XAML bietet Uno zur Definition der Oberflächen auch eine Fluent-API-Syntax in C# an: https://platform.uno/docs/articles/external/uno.extensions/doc/Learn/Markup/Overview.html
Außerdem gibt es zehn Erweiterungen als NuGet-Pakete https://platform.uno/docs/articles/external/uno.extensions/doc/ExtensionsOverview.html zum Beispiel für Eingabevalidierung, Authentifizierung, Protokollierung, Navigation und Lokalisierung sowie das das stark vereinfachte Entwurfsmuster Model-View-Update-eXtended (MVUX) als Alternative zu Model-View-ViewModel (MVVM). Ebenso gibt es ein Paket für Oberflächentests https://github.com/unoplatform/Uno.UITest, das aber nur Uno auf WebAssembly funktioniert. Diese Erweiterungen sind bereits im Uno Platform Template Wizard wählbar. Der Uno-Projektanlageassistent ist dem von Avalonia optisch sehr ähnlich, besitzt aber deutlich mehr wählbare Optionen.

Uno-Erweiterungen gibt es für folgende Entwicklungsumgebungen: In diesen Entwicklungsumgebungen stehen Projektvorlagen, XAML-Eingabeunterstützung und Hot Reloading zur Verfügung, wobei es in der Dokumentation umfangreiche Tabellen gibt https://platform.uno/docs/articles/studio/Hot%20Reload/hot-reload-overview.html, in welcher Konstellation aus Betriebssystem und Entwicklungsumgebung Hot Reloading verfügbar ist. Die aktuelle Projektvorlage arbeitet mit Multi-Targeting.

Einen XAML-Previewer im XAML-Editor wie bei Avalonia bietet Uno nicht. Der XAML-Live-Preview beim Debugging in Visual Studio funktioniert aber. Einen grafischen Designer unter dem Namen "Hot Design" hat Uno angekündigt; man kann sich derzeit auf eine Warteliste setzen: https://platform.uno/hot-design. Anders als andere WYSIWYG-Designer soll der kommende Designer auf der laufenden Anwendung arbeiten.

Auch die Uno Platform hat veralterte Inhalte auf der Website, zum Beispiel heißt es auf https://platform.uno/docs/articles/uwp-vs-winui3.html, dass

Beratung & Support

Schulungen zu diesem Thema

 Anfrage für eine individuelle Schulung zum Thema Uno Platform  Gesamter Schulungsthemenkatalog

Bücher zu diesem Thema

  Blazor 9.0: Moderne Webanwendungen und hybride Cross-Platform-Apps mit .NET 9.0, C# 13.0 und Visual Studio 2022
  C# 13.0 Crashkurs
  Cross-Plattform-Apps mit .NET MAUI entwickeln
  Moderne Datenzugriffslösungen mit Entity Framework Core 9.0
  .NET 9.0 Update: Die Neuerungen in .NET 9.0 gegenüber .NET 8.0
  PowerShell 7 und Windows PowerShell 5 – das Praxishandbuch
  .NET 8.0 Update: Die Neuerungen in .NET 8.0 gegenüber .NET 7.0
  .NET 8.0 Update: Die Neuerungen in .NET 8.0 gegenüber .NET 7.0
  Concurrency with Modern C++: What every professional C++ programmer should know about concurrency
  C++20: Get the Details
  Blazor 8.0: Moderne Webanwendungen und hybride Cross-Platform-Apps mit .NET 8.0, C# 12.0 und Visual Studio 2022
  Moderne Datenzugriffslösungen mit Entity Framework Core 8.0
  C# 12.0 Crashkurs
  App-Entwicklung für Mobile und Desktop: Software Engineering mit .NET MAUI und Comet für iOS, Android, Windows und macOS
  Cross-Plattform-Apps mit .NET MAUI entwickeln
  Blazor 7.0: Blazor WebAssembly, Blazor Server und Blazor Hybrid
  C# 11.0 Crashkurs
  Moderne Datenzugriffslösungen mit Entity Framework Core 7.0
  PowerShell 7 und Windows PowerShell 5 – das Praxishandbuch
  C++ Core Guidelines Explained: Best Practices for Modern C++
  App Engineering: SwiftUI, Jetpack Compose, .NET MAUI und Flutter
  Vue.js 3 Crashkurs
  Moderne Datenzugriffslösungen mit Entity Framework Core 6.0
  Blazor 6.0: Blazor WebAssembly, Blazor Server und Blazor Desktop
  C# 10.0 Crashkurs
  Cross-Plattform-Apps mit Xamarin.Forms entwickeln
  Developing Web Components with TypeScript: Native Web Development Using Thin Libraries
  PowerShell – kurz & gut
  C# 9.0 Crashkurs: Die Syntax der Programmiersprache C# für die Softwareentwicklung in .NET 5.0, .NET Core und Xamarin
  ASP.NET Core Blazor 5.0: Blazor WebAssembly und Blazor Server - Moderne Single-Page-Web-Applications
  Windows PowerShell 5 und PowerShell 7: Das Praxisbuch
  Moderne Datenzugriffslösungen mit Entity Framework Core 5.0
  ASP.NET Core Blazor 3.1/3.2: Blazor Server und Blazor Webassembly - Moderne Single-Page-Web-Applications mit .NET, C# und Visual Studio
  ASP.NET Core Blazor 3.0/3.1: Blazor Server und Blazor Webassembly - Moderne Single-Page-Web-Applications mit .NET, C# und Visual Studio
  Moderne Datenzugriffslösungen mit Entity Framework Core 3.1
  C# 8.0 Crashkurs: Die Syntax der Programmiersprache C# für die Softwareentwicklung in .NET Framework, .NET Core und Xamarin
  Moderne Datenzugriffslösungen mit Entity Framework Core 3.0
  Windows PowerShell 5.1 und PowerShell Core 6.1 - Das Praxishandbuch
  Moderne Datenzugriffslösungen mit Entity Framework Core 2.1/2.2
  Moderne Webanwendungen für .NET-Entwickler: Server-Anwendungen, Web APIs, SPAs & HTML-Cross-Platform-Anwendungen mit ASP.NET, ASP.NET Core, JavaScript
  C# 7.3 Crashkurs: Die Syntax der Programmiersprache C# für die Softwareentwicklung in .NET Framework, .NET Core und Xamarin
  Modern Data Access with Entity Framework Core: Database Programming Using .NET, .NET Core, UWP, and Xamarin with C#
  Modernes C++: Concurrency meistern
  Windows PowerShell und PowerShell Core - Der schnelle Einstieg: Skriptbasierte Systemadministration für Windows, Linux und macOS
  Programmierung in Python
  C# 7.2 Crashkurs: Die Syntax der Programmiersprache C# für die Softwareentwicklung in .NET Framework, .NET Core und Xamarin
  Moderne Datenzugriffslösungen mit Entity Framework Core 2.0/2.1
  Effizienter Datenzugriff mit Entity Framework Core: Datenbankprogrammierung mit C# für .NET Framework, .NET Core und Xamarin
  Moderne Datenzugriffslösungen mit Entity Framework Core 2.0
  Windows PowerShell 5 und PowerShell Core 6 - Das Praxishandbuch
  Angular - Das Praxisbuch zu Grundlagen und Best Practices
  Moderne Datenzugriffslösungen mit Entity Framework Core 1.0, 1,1 und 2.0
  Moderne Datenzugriffslösungen mit Entity Framework Core 1.0, 1,1 und 2.0
  Moderne Datenzugriffslösungen mit Entity Framework Core 1.1 und 2.0-Preview2
  Moderne Datenzugriffslösungen mit Entity Framework Core 1.x und 2.0
  Moderne Datenzugriffslösungen mit Entity Framework Core 1.x und 2.0
  Moderne Datenzugriffslösungen mit Entity Framework Core 1.1
  Introducing Regular Expressions: JavaScript and TypeScript
  Introducing Web Development
  Introducing Bootstrap 4
  Programming Web Applications with Node, Express and Pug
  Einführung in TypeScript: Grundlagen der Sprache TypeScript 2
  Pug – Die Template-Engine für node.js
  Web-Programmierung mit Node, Express und Pug
  Windows PowerShell 5 – kurz & gut
  Moderne Datenzugriffslösungen mit Entity Framework Core 1.1
  Windows PowerShell 5.0 - Das Praxishandbuch
  PHP 7 und MySQL: Von den Grundlagen bis zur professionellen Programmierung
  Windows Scripting Lernen
  .NET Praxis - Tipps und Tricks für .NET und Visual Studio
  Grundlagen für Web-Entwickler: Protokolle, HTML und CSS
  Bootstrap 3 - Stile und Komponenten
  Bootstrap 4 - Stile und Komponenten
  Einführung in JavaScript: ECMAScript 5
  Einführung in node.js
  express – Middleware für node.js
  JADE – Die Template Engine für node.js
  Reguläre Ausdrücke in JavaScript
  Moderne Datenzugriffslösungen mit Entity Framework 6
  C++ Standardbibliothek
  AngularJS: Moderne Webanwendungen und Single Page Applications mit JavaScript
  Microsoft SharePoint Server 2013 und SharePoint Foundation: Das umfassende Handbuch
  SQL Server 2014 für Professionals: Hochverfügbarkeit, Cloud-Szenarien, Backup/Restore, Monitoring & Performance
  Moderne Webanwendungen mit ASP.NET MVC und JavaScript
  Windows PowerShell 4.0 - Das Praxishandbuch
  JavaScript: Das umfassende Handbuch, inkl. HTML5, JavaScript-Frameworks, jQuery, OOP
  C++11 für Programmierer
  C++ kurz und gut
  Microsoft ASP.NET 4.5 - Entwicklerbuch
  Moderne Webanwendungen mit ASP.NET MVC
  Verteilte Systeme und Services mit .NET 4.5
  Scripting mit Windows PowerShell 3.0 - Der Workshop: Skript-Programmierung mit Windows PowerShell 3.0 vom Einsteiger bis zum Profi
  Windows 8 für Administratoren
  Windows 8.1 - Das Handbuch (27. November 2013)
  Windows Store Apps entwickeln mit C# und XAML - Crashkurs
  .NET 4.5 Update
  Windows Scripting Lernen
  WPF 4.5 und XAML
  Datenbankprogrammierung mit .NET 4.5
  C++11: Der Leitfaden für Programmierer zum neuen Standard
  Verteilte Systeme und Services mit .NET 4.0
  Microsoft ASP.NET 4.0 mit C# 2010 - Entwicklerbuch
  Agile Software Engineering with Visual Studio
  Datenbankprogrammierung mit .NET 4.0. Mit Visual Studio 2010 und SQL Server 2008 R2
  Microsoft SharePoint Server 2010 und SharePoint Foundation 2010
  Microsoft SQL Server 2008 R2 - Das Entwicklerbuch
  Microsoft Viusal C# 2010
  Office 2010 Programmierung mit VSTO und .NET 4.0: Word, Excel und Outlook erweitern und anpassen
  Programmieren mit dem ADO.NET Entity Framework
  .NET 4.0 Crashkurs
  Visual Basic 2010: Grundlagen, ADO.NET, Windows Presentation Foundation
  .NET 4.0 Update
  Windows PowerShell 2.0 - Das Praxishandbuch
  Windows 7 im Unternehmen
  Agile Muster und Methoden
  Ajax
  ASP.NET 4.0
  ASP.NET 4.0 mit Visual C# 2010
  JavaScript
  PHP 5-Migration
  Scripting mit Windows PowerShell 2.0 - Der Einsteiger-Workshop
  SQL Server 2008 R2: Das Programmierhandbuch. Inkl. ADO.NET 3.5, LINQ to Entities und LINQ to SQL
  Visual Basic 2010
  Windows PowerShell 2.0 - Crashkurs
  Windows Server 2008 R2
  Windows Scripting
  Windows Scripting Lernen
  Data Mining mit Microsoft SQL Server
  Windows 7 für Administratoren
  Microsoft ASP.NET 3.5 mit Visual Basic 2008 - Entwicklerbuch
  .NET 3.5
  Essential PowerShell
  .NET 3.5 Crashkurs
  Webanwendungen mit ASP.NET 3.5 und AJAX Crashkurs
 Alle unsere aktuellen Fachbücher  E-Book-Abo für ab 99 Euro im Jahr