Microsoft Build 2020: Microsoft will Windows APIs wiedervereinen

Seite 2: WebView 2

Inhaltsverzeichnis

WinUI 3 soll die aus WPF bekannte Eingabevalidierung mit der Schnittstelle INotifyDataErrorInfo bieten. Die bereits seit 2019 in UWP verfügbare Einbettung von Steuerelementen in ältere GUI-Frameworks wie Microsoft Foundation Classes (MFC), Windows Forms und Windows Presentation Foundation (WPF) gibt es auch in WinUI 3. Zukünftig wird Microsoft dreimal jährlich neue Funktionen für WinUI 3 veröffentlichen. Es gibt ein GitHub-Repository zu WinUI, es umfasst aber noch den Vorgänger WinUI 2, der nur auf WinRT läuft.

Als neues Steuerelement wird Microsoft ein Browsersteuerelement (WebView 2) zur Einbettung von Browser-Inhalten in Windows-Anwendungen liefert (z. B. für hybride Anwendungen, die HTML zum Rendering von Desktop-Anwendungen verwenden). WebView 2 basiert auf Microsoft Edge Chromium und soll auch außerhalb von WinUI 3 ab Windows 7 für Anwendungen mit .NET Framework und .NET Core (Windows Forms und WPF) sowie MFC verfügbar sein.

Microsofts Werbeversprechen für WebView 2

Als Basis für Project Reunion will der Hersteller in .NET 5.0 die Interoperabilität zwischen .NET und der WinRT verbessern. Grundsätzlich ist diese Interoperabilität schon zu Zeiten von .NET Framework und Windows 8 möglich gewesen (siehe Pfeile zwischen den beiden Seiten in der ersten Abbildung).

WinRT stellt dafür bisher Metadatendateien mit der Dateinamenserweiterung .winmd im Ordner C:\Windows\System32\WinMetadata bereit. In .NET 5.0 will Microsoft diese Interoperabilität komplett überarbeiten. Das neue Modell basiert auf einem neuen Werkzeug (C#/WinRT), das die Windows-Entwicklungsgruppe bereitstellt. Microsoft greift dabei auf die seit .NET Framework 1.0 bestehenden Runtime Callable Wrapper (RCW) und COM Callable Wrapper (CCW) zurück. Das neue Verfahren soll unabhängig von der .NET Runtime sein, die Konzepte von COM und WinRT verstecken, und sowohl Unterstützung für mehr C#-Features als auch den Intermediate Language Linker (IL Linker) und Ahead-of-Time-Kompilierung (AOT) bieten. Microsoft stellt die WinRT-Operabilität zukünftig nicht mehr als Teil der Betriebssysteminstallation, sondern als Windows SDK .NET Package auf NuGet.org bereit.

Projekte, die WinRT nutzen, müssen beim Umstieg auf .NET 5.0 Referenzen auf .winmd-Dateien durch neue Referenzen auf die neuen .NET-Interop-Assemblies ersetzen und folglich neu kompiliert werden. Auch weitere Codeänderungen sind möglich. Auch in WinUI 3 kann es neben den Namensräumen Änderungen geben, die die am Code bestehender UWP-Apps erfordern.

Das Erscheinen der endgültigen Version von WinUI 3 war ursprünglich für den November 2020 zusammen mit .NET 5.0 angekündigt. Ryan Demopoulos, Principal Program Manager Lead bei Microsoft, erklärte jedoch im Build-2020-Vortrag "Everything you need to know about WinUI" das aufgrund der COVID-19-Situation zu diesem Termin erst eine Preview 4 erscheinen wird und die RTM-Version auf 2021 verschoben ist. Die Preview 4 soll aber schon für den produktiven Einsatz erlaubt sein. Dies ist mit der Preview 1 derzeit nicht erlaubt. Diese besitzt noch einige technische Einschränkungen, zum Beispiel keine Unterstützung für XAML Islands. (ane)