© Sashkin/shutterstock.com
.NET-Desktop-Apps mit WinUI und Project Reunion

Eine Reise von UWP zu WinUI


Zum Entwickeln von Desktopanwendungen für Windows 10 ist WinUI das modernste UI Framework. Seit Ende März 2021 liegt es als Teil des sogenannten Project Reunion in einer Version vor, die laut Microsoft bereits für produktive Anwendungen verwendet werden kann. Dieser Artikel gibt einen Überblick über UWP, WinUI und Project Reunion, und zeigt auch, wie ein WinUI-Projekt mit der neuesten Version erstellt wird.

Zum Entwickeln von Desktopanwendungen für Windows 10 haben .NET-Entwickler zahlreiche Möglichkeiten: Windows Forms, WPF, UWP und WinUI. Die Windows UI Library, kurz WinUI, stellt die modernste Variante dar. WinUI ist auch die native UI-Plattform von Windows 10, was bedeutet, dass diverse Teile von Windows 10, wie beispielsweise das Startmenü oder die App für die Einstellungen, mit WinUI entwickelt wurden und werden. Auch die bei Entwicklern beliebte Windows Terminal App [1] ist eine mit WinUI entwickelte Windows-Desktopanwendung. Sie lässt sich über den Microsoft Store installieren.

WinUI ist die Weiterentwicklung des UI Frameworks der Universal Windows Platform (UWP). Mit WinUI wurde das UWP UI Framework von Windows 10 entkoppelt. Das hat verschiedene Vorteile: WinUI kann einen anderen Releasezyklus als Windows 10 haben und es lassen sich neueste Controls auch auf älteren Windows-10-Versionen einsetzen. Doch UWP existiert weiterhin, und das ist für viele Entwickler etwas verwirrend. Der Grund dafür ist, dass es sich bei der UWP um weitaus mehr als um ein UI Framework handelt. Um zu verstehen, was genau WinUI ist, muss man auch verstehen, was eigentlich die Universal Windows Platform ist. Gehen wir dieser Frage nach.

Was ist die Universal Windows Platform (UWP)?

Mit Windows 10 hat Microsoft die Universal Windows Platform eingeführt. UWP ist auf allen Geräten verfügbar, auf denen Windows 10 läuft:

  • PC

  • Xbox

  • HoloLens

  • Surface Hub

  • Internet-of-Things-Geräte (IoT, beispielsweise Raspberry Pi)

Für Entwickler hat Visual Studio eine Projektvorlage mit dem Namen Blank App (Universal Windows), mit der sich eine UWP-Anwendung erstellen lässt, die auf all diesen Geräten läuft. Die Anwendung lässt sich dabei entweder mit .NET/C# oder mit C++ erstellen. Wichtig zu verstehen ist, dass UWP ein nativer Teil von Windows 10 und selbst in C++ geschrieben ist. Das macht das Programmieren einer UWP-App mit reinem C++ möglich, erlaubt es aber auch, eine Anwendung mit .NET/C# zu schreiben, die ganz gewöhnliche .NET-Standard-2.0-Klassenbibliotheken referenzieren kann.

Zum Erstellen von Benutzeroberflächen wird mit UWP die Extensible Application Markup Language (XAML) eingesetzt. XAML ist eine XML-basierte Sprache, die ursprünglich mit der Windows Presentation Foundation (WPF) im Jahr 2006 eingeführt wurde. WPF und UWP haben viele gemeinsame Konzepte wie XAML, Data Binding, Styles, Layout etc. Das bedeutet, dass ein WPF-Entwickler in UWP recht schnell zurechtkommt, und auch umgekehrt findet sich eine UWP-Entwicklerin in WPF schnell zurecht. Allerdings standen all die Innovationen, die mit WPF stattgefunden haben, C++-Entwicklern nicht zur Verfügung, denn zum Erstellen von WPF-Anwendungen muss man .NET/C# verwenden. Mit UWP hat sich das geändert, und C++-Entwickler konnten auch wieder bei der neuesten Technologie mitmischen.

Neben der Möglichkeit, mit .NET/C# oder C++ zu entwickeln, ist ein wichtiges Merkmal von UWP-Anwendungen, dass sie in einer Sandbox laufen. Das bedeutet, dass der Systemzugriff begrenzt ist. Das ergibt Sinn, wenn man bedenkt, dass UWP-Anwendungen auch über den Microsoft Store verteilt werden können. Eine UWP-Anwendung muss ihre Fähigkeiten (Capabilities) in einer Manifest-Datei deklarieren, damit diese sich im Anwendungscode auch nutzen lassen. Das ist ein bekanntes Konzept von mobilen Anwendungen, bei denen man als Benutzer Nachrichten sieht, wie beispielsweise „Diese Anwendung möchte Zugriff auf Ihre Bilder, Ihre Dokumente und Ihre Kontakte“. Bei einer UWP-Anwendung ist das genau gleich. Damit beispielsweise der Zugriff auf das Internet funktioniert, muss das als Capability im Manifest der Anwendung angegeben werden.

Zudem ist ein weiteres wichtiges Merkmal von UWP-Anwendungen, dass sie in einem .zip-basierten Format mit der Dateiendung .appx verpackt werden. Das erlaubt eine saubere Installation und Deinstallation auf Windows-10-Geräten. Nach einer Deinstallation ist die Anwendung sauber entfernt und hinterlässt keine Spuren, wie man das von anderen Installationsvarianten kennt.

Ein weiterer, sehr wichtiger Punkt von UWP ist das sogenannte Activation- und Lifecycle-Management. Dabei geht es darum, die Batterie eines Gerätes zu schonen. Klassische Win32-Anwendungen wie WPF- oder Windows-Forms-Anwendungen laufen immer, wenn der Benutzer sie gestartet hat. D. h., selbst wenn der Benutzer eine WPF-Anwendung minimiert oder zu einer anderen Anwendung wechselt, wird die WPF-Anwendung weiterlaufen und den Prozessor beanspruchen. Das ist natürlich nicht gut für batteriebetriebene Geräte wie Tablets. UWP-Anwendungen lösen dieses Problem mit dem erwähnten Activation- und Lifecycle-Management. Minimiert ein Benutzer eine UWP-App oder navigiert er zu einer anderen Anwendung, wird die UWP-App im Hintergrund automatisch ausgesetzt (suspended). Das ermöglicht es dem System, Ressourcen und somit auch Batterie zu sparen. Navigiert der Benutzer zurück zur UWP-Anwendung, wird sie wieder aktiviert und fortgesetzt.

Wie man also sieht, ist UWP mehr als nur ein UI Framework. Es hat verschiedenste Features wie XAML, Paketierung mit .appx, eine Sandbox, ein Lifecycle-Management etc. Genau aus diesem Grund muss man sich als Entwickler bewusst machen, dass UWP ein sehr weiter Begriff ist. Schauen wir uns ihn daher genauer an.

Was steckt hinter UWP?

Nachfolgend eine Auflistung, was alles unter UWP zu verstehen ist:

  1. UWP-App – das ist eine Anwendung, die mit C# oder C++ entwickelt wurde. Die Anwendung verwendet alle anderen Punkte, die in dieser Aufzählung gelistet sind. Visual Studio 2019 enthält zum Erstellen einer UWP-App die Projektvorlage Blank App (Universal Windows). Diese Vorlage ist verfügbar, wenn bei der Visual-Studio-Installation der Workload Universal Windows Platform Development ausgewählt wurde.

  2. UWP XAML Framework – das ist der Teil...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang