Die .NET UI Technologieübersicht 2022

Die .NET UI Technologieübersicht 2022

Windows Forms aka WinForms

Windows Forms ist eine sehr stark veraltete Technologie, die Aufgrund ihrer Einfachheit jedoch immer noch sehr beliebt ist. WinForms besitzt einen sehr dünnen Layer, der direkt die Win32 API ansteuert, die wiederum GDI+ verwendet.

Die Einfachheit von WinForms bringt auch immer wieder Entwickler dazu, logischen Code direkt in die Controls zu schreiben und so vollgeladenen UI-Code erzeugen, die eine Wartung und Testbarkeit quasi unmöglich machen. Nur in seltenen Fällen findet man WinForms Code, der den MVP-Pattern verwendet. DataBinding wird in Windows Forms nicht erzwungen bzw. bei manchen Dingen auch nicht ermöglicht.

Die Leichtgewichtigkeit macht den Einsatz in einfachen Tools möglich; in komplexen Anwendungen merkt man aber den technologischen Rückststand von WinForms.

De facto findet keine wirkliche Weiterentwicklung von WinForms statt; das verantwortliche Team ist weiterhin das .NET Team.

Windows Presentation Foundation aka WPF

Windows Presentation Foundation ist eine abstraktere Technologie, die mit .NET Framework 3.5 mit kam und besonders die Trennung von View und Logik im Fokus hatte. Entsprechend ist WPF so konzipiert, dass der MVVM-Pattern, der von Microsoft ca. 2005 entwickelt wurde, verwendet wird. Der MVVM-Pattern ist mittlerweile in sehr vielen UI-Technologien (Angular, Xamarin, iOS, React...) integriert und sehr beliebt und leistungsstark in größeren bzw. komplexen Anwendungen.

Der Nachteil an WPF ist die sehr hohe Lernhürde, das teilweise sehr komplexe und aufwändige Binding- und Stylingsystem. Das macht WPF quasi unbrauchbar für kleinere Tools.
Die Vorteile ist die extrem gute Verwendung in komplexen Anwendungen, dass WPF mit Hilfe der Grafikkarte und DirectX gerendert werden kann und die hohe Akzeptanz unter den Entwicklern.

WPF hat noch viel Potential für die Weiterentwicklung; nur leider findet quasi keine Entwicklung mehr statt. Die Verantwortung von WPF liegt mittlerweile anscheinend auch nicht mehr beim .NET sondern beim Windows Team, das leider - offenbar - nur das Nötigste macht, um WPF am Leben zu erhalten.

Wenigstens scheint es so, dass es doch WPF-Styles für Windows 11 geben wird - auch wenn nicht alle Windows 11 Features damit genutzt werden können.

Universal Windows Platform aka UWP

Die Universal Windows Platform wurde mit Windows 10 eingeführt und war die Hoffnung am Horizont von Windows und .NET. UWP sollte das gesamt Betriebssystem sowie die UI-Schicht abstrahieren und so eine App für jede Art von Gerät verfügbar machen. Dies hat Microsoft auch verwendet, um den eigenen Microsoft Store zu pushen: es waren nur UWP Apps erlaubt.

Leider hab es sehr sehr viele Designprobleme mit UWP, sodass UWP nie wirklich Akzeptanz gefunden hat, was auch dazu geführt hat, dass quasi keine Apps im Store landeten. Am Ende war Microsoft gezwungen doch wieder Win32 Apps im Store zuzulassen, was auch dazu führte, dass es eine Art Sandbox für Win32 Applikationen gab.

Heute gilt UWP als Fehlkonzept und quasi tot. Das "Project Reunion" soll durch eine einhtliche API für Win32 und UWP dabei helfen, Apps auf neue Runtimes zu migrieren.

Xamarin und Xamarin.Forms

Xamarin war sowohl der Name einer eigenständigen Firma (aus Mono entstanden), wie auch der Bezeichnung eines ganzen Tech-Stacks. Heute gehören sowohl Mono wie auch Xamarin zu Microsoft und wurden in .NET 5 vollständig integriert. Es ist zu erwarten, dass der Name verschwindet, denn der Nachfolger - MAUI - steht schon in den Startlöchern.

Xamarin als generelle Bezeichner muss jedoch unterschieden werden: Xamarin.Native ist eine native Runtime für mobile Betriebssysteme und erweitert quasi die Funktionalitäten des .NET Frameworks. Die UI-Implementierung findet meistens in der jeweiligen Sprache der mobilen Plattform statt, das User Interface muss also doppelt programmiert werden (meist Swift für iOS, meist Java für Android). Xamarin.Forms hingegen teilt grundlegend die UI über die mobilen UIs und verwendet dabei eine Art von XAML, die jedoch nicht kompatibel zu anderen Technologien wie WPF ist.

Man muss jedoch leider zugeben, dass Xamarin bei vielen Entwicklern nicht gut ankam und native Applikationen einfach ein besseres Feeling bei den Benutzern hat, sodass allgemein Shared App Stacks nicht gern verwendet werden. Heute sieht man Xamarin nur noch vereinzelt, meist nicht für Endkunden-Apps.

WinUI

WinUI ist ein UI-Framework, das ebenfalls auf native Schnittstellen setzt. Dabei sollen sowohl Win32-Desktop Apps wie auch UWP-Apps unterstützt werden.

Derzeit existieren zwei verschiedene WinUI - WinUI 2 und WinUI 3 - die sich technologisch sehr unterscheiden. Während WinUI2 sehr stark an Windows 10 gebunden bzw. abhängig ist, ist WinUI3 ein entkoppeltes Framework mit eigenem SDK und unterstützt kein UWP mehr.

WinUI3 ist die aktuelle Hoffnung am Horizont der Desktop-Technologien von .NET. Ein spannendes Szenario ist dabei WinUI3 als Basis und WebView2 als HTML-UI Stack (zB. mit Blazor oder React) zu nutzten, um so ein natives Äquivalent zum speicherhungrigen Electron zu haben.

Hinter MAUI steckt ein kleines Team im .NET Kosmos, das Fortschritte regelmäßig mehr oder weniger Transparent über YouTube Streams zeigt. Die Community ist nicht ganz so glücklich, dass einige Probleme seit Monaten unbeantwortet sind. Die Hoffnung besteht jedoch mit Windows 11, dass mehr in die Entwicklung von WinUI gesteckt wird.

MAUI

MAUI ist das Nachfolgeprojekt von Xamarin.Forms, wobei die Szenarien nun nicht mehr nur mobile Geräte sondern auch die Desktops sind. Die Wurzeln von Xamarin.Forms sind sehr deutlich spürbar, sodass man an einigen Stellen denkt, dass sich eigentlich nur der Name geändert hat.

Dennoch ist sehr viel in die Entwicklung von MAUI investiert worden, und besonders die Generalisierung von .NET hat zur guten Qualität von MAUI beigetragen. Die Besonderheit von MAUI ist jedoch, dass sich Blazor Apps in einem MAUI Kontext betreiben lassen und so eine hybride Konkurrenz zu Electron Apps existiert.

Der größte Konkurrent von MAUI ist jedoch Flutter, mit dem sich MAUI auch den sehr beliebten, funktionalen UI-Pattern MVU teilt.

Uno Platform

Die Uno Platform - kurz UNO - ist derzeit die einzige .NET-basierte UI-Technologie, mit der sich Windows-, Linux-, WebAssembly- und mobile Applikationen auf Basis von iOS, macOS und Android umsetzen lassen. UNO wird nicht von Microsoft entwickelt, jedoch in enger Partnerschaft mit Microsoft von der Open-Source-Gemeinde und der eigenständigen Uno Platform Company.

Uno gilt in vielen Bereichen als Hoffnungsträger - und auch Microsoft verwendet für einige Dinge UNO, zB. den NuGet Package Browser: NuGet Package Explorer is now a Web App powered by Uno Platform

Blazor

Blazor ist eine Browser-UI-Technologie, die auf Basis von WASM - also WebAssembly - läuft. Die Hosting-Runtime von Blazor ist ASP.NET Core, weswegen hier viele Konzepte wieder zu erkennen sind.

Blazor kann sowohl mit dem MVVM- wie auch mit dem MVU-Pattern entwickelt werden. Während MVVM vielleicht gewohnter ist, und es so auch WPF-Entwicklern einfacher macht, WebAssembly-Apps zu entwickeln, wird MVU vermutlich die weiter verbreitetere Technologie am Ende sein - einfach weil es für die Szenarien von Blazor einfacher und passender sein wird, was ähnliche Technologie-Konzepte zeigen.

Der Hype um Blazor ist etwas abeschwächt, war vielleicht im ASP.NET Cosmos auch etwas künstlich erzeugt. Dennoch hat Blazor mit das meiste Potential aller UI-Stacks in der .NET Welt und kann bereits heute bedenkenlos in produktiven Szenarien verwendet werden. Blazor wird derzeit eigentlich nur durch nicht-vorhandene Features in WebAssembly gebremmst.

Fazit

Man sieht, es gibt eine breite Palette an UI-Stacks für die .NET Welt; mal mehr modern, mal weniger. Mal einfacher, mal komplexer. Die Auswahl macht es nicht einfach, aber durch schlaue Evaluierung hat man in .NET immer eine passende UI-Technologie zur Verfügung.

Wenn man Entwickler schimpfen hört, hört man meistens jedoch auch raus, dass gar nicht evaluiert wurde, wofür die Technologie jedoch nichts kann - das ist das Problem des Entwicklers.

Man kann jedoch grob sagen:

  • Für mobile Anwendung werden UNO, MAUI und Blazor ihren Weg finden.
  • Für Desktop-Apps werden sich vermutlich HTML-Technologien wie Blazor durchsetzen, wobei mit Windows 11 auch WinUI3 viele Anwendungsfälle finden werden. Generell werden uns Windows Forms und WPF aber noch viele Jahre begleiten.
  • Im Web wird nach wie vor HTML der eigentliche UI Stack bleiben; die Frage ist viel mehr wie viel Anteil Client-Side Apps zB. auf Basis von WebAssembly und Blazor haben werden.