Microsoft Build 2020: Microsoft will Windows APIs wiedervereinen

Microsoft will Windows Runtime und Windows 32, die seit Windows 8 getrennten Windows-Programmierschnittstellen, wieder zusammenführen.

In Pocket speichern vorlesen Druckansicht 130 Kommentare lesen
Microsoft Build 2020: Microsoft will Windows APIs wiedervereinen

(Bild: g0d4ather/Shutterstock.com)

Lesezeit: 7 Min.
Von
  • Dr. Holger Schwichtenberg
Inhaltsverzeichnis

"Project Reunion" nennt Microsoft den ehrgeizigen, jetzt auf der Build-Konferenz vorgestellten Plan zur Wiedervereinigung von Windows Runtime (WinRT) und Windows 32 (Win32), den seit Windows 8 getrennten Programmierschnittstellen des Windows-Betriebssystems.

News von der Build 2020

Bei der Ankündigung von Windows 8 im Jahr 2011 war die Überraschung in der Entwicklergemeinde groß, als Microsoft mit der Windows Runtime API (WinRT) einen Nachfolger für die Windows 32 API (Win32) ankündigte, der nicht auf .NET, sondern auf dem angestaubten Component Object Model (COM) basierte. Seitdem ist Windows bei den Programmierschnittstellen und den Anwendungsmodellen zweigeteilt in die klassischen Windows-Anwendungen auf dem Windows-Desktop und die modernen Windows-Apps. Letztere hießen ursprünglich "Metro Apps", dann "Modern Apps" und seit Windows 10 schließlich "Universal Windows Platform" (UWP) Apps.

Die beiden API-Welten von Windows 10

Microsoft hat die ursprünglich stark getrennten Welten bereits in den letzten Jahren zusammengeführt. Die WinRT-Apps laufen schon lange nicht mehr ausschließlich im Vollbildmodus, sondern wirken wie normale Windows-Fenster. UWP-Apps können seit Windows 10, Version 1709, auch als 2-Tier-Anwendungen direkt auf Datenbanken zugreifen. Zuvor war nur eine 3-Tier-Architektur mit dem Umweg über Webservices möglich. Seit Version 1903 können Entwickler über sogenannte "XAML Islands", angekündigt auf der Build 2018, UWP-Steuerelemente in klassische Windows-Anwendungen einbetten, die mit Microsoft Foundation Classes (MFC), Windows Forms oder Windows Presentation Foundation (WPF) erstellt wurden.

Trotz aller Vereinheitlichungen gibt es immer noch gravierende Unterschiede: UWP-Apps laufen in einer Sandbox mit beschränktem Zugang zu APIs, Netzwerk und Ressourcen. Während die Win32-Welt auf die Programmierschnittstellen von WinRT zugreifen kann, ist das umgekehrt nur eingeschränkt möglich beziehungsweise über extra zu programmierende Bridge-Komponenten möglich.

Das nun angekündigte Project Reunion besteht zunächst aus einer GitHub-Seite mit großspurigen Ankündigungen ("make it easier to build great apps that work across all the Windows 10 versions" und "unify access to existing Win32 and UWP APIs"). Microsoft will die bestehenden APIs vom Betriebssystemversionen entkoppeln (d. h. rückwärtskompatibel machen), aus dem Windows Platform SDK auslagern (in NuGet-Pakete) und dabei auch neue APIs erschaffen, die dann nicht nur in der .NET-Welt in Windows Forms, WPF und UWP-Apps, sondern auch in C++ und anderen Frameworks wie React Native nutzbar sein sollen. Die Rückwärtskompatibilität bezieht sich aber ausdrücklich auf die Versionen von Windows 10, nicht auf ältere Betriebssysteme wie Windows 8.x.

Zentraler Baustein des Project Reunion ist die "Windows UI Library 3" (WinUI 3), eine neue Benutzeroberflächenbibliothek, die eine Weiterentwicklung der UWP-Steuerelemente darstellt. Nach zwei Alpha-Versionen im September 2019 und Februar 2020 ist nun eine erste Preview-Version erschienen, die erst mal nicht nur auf WinRT läuft, sondern auch auf Win32.

Anlegen eines neuen Projekts für WinUI 3 auf Basis der klassischen Win32-API

Ein WinUI3-Anwendungsprojekt auf Basis der klassischen Win32-API

Während UWP allein auf der WinRT-API aufsetzt und daher nicht alle Funktionen des Betriebssystems und alle lokalen Ressourcen verwenden kann, kann eine WinUI-3-basierte Anwendung wahlweise WinRT und/oder Win32 nutzen. Damit stehen ihr alle Möglichkeiten des Windows-Betriebssystems zur Verfügung. Im Fall von WinRT läuft WinUI 3 auf Basis von .NET Native, im Fall von Win32 setzt WinUI 3 auf der Vorschauversion von .NET 5.0 auf. Die Entwicklung von WinUI-3-Oberflächen ist derzeit mit C++ und C# möglich; die Unterstützung für Rust ist in Arbeit. Eine Installation von WinUI 3 erfolgt derzeit über Visual-Studio-Erweiterungen, die Visual Studio 2019 in der Version 16.7 Preview erfordert; ein XAML-Designer ist allerdings bisher nicht für WinUI 3 verfügbar, da alle Klassen den neuen Namensraum Microsoft.UI anstelle von Windows.UI verwenden.

Während in UWP die Weiterentwicklung der Steuerelemente mit neuen Betriebssystemversionen erfolgte, sind die komplett in C++ als Open Source auf GitHub geschriebenen WinUI-3-Steuerelemente vom Betriebssystem entkoppelt; eine WinUI-3-Anwendung läuft daher auf allen Windows 10-Versionen ab dem Creators Update aus dem Frühjahr 2017. Andere Frameworks wie .NET MAUI, React Native for Windows und Uno sollen auf WinUI 3 aufsetzen.