Cross-Plattform-Entwicklung: Ein erster Blick auf MAUI in .NET 6.0 Preview 2

Mit der aktuellen Vorschauversion liefert Microsoft erstmals eine Preview auf das neue .NET Multi-Platform App UI (MAUI).

In Pocket speichern vorlesen Druckansicht 17 Kommentare lesen

(Bild: pio3/Shutterstock.com)

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

Microsoft hatte im Mai 2020 angekündigt, das bisher eigenständige Produkt Xamarin, die 2016 zugekaufte Cross-Platform-Implementierung von .NET, komplett in die aktuelle .NET-Welt zu integrieren. MAUI (Multi-Platform App UI) ist dabei der Nachfolger der XML-basierten Cross-Platform-GUI-Bibliothek Xamarin Forms. Es geht dabei aber in .NET 6.0 nicht nur um Umbenennungen, sondern vor allem um eine Integration in die Klassenbibliothek und die Werkzeugkette des aktuellen .NET. In .NET 6.0 Preview 2 können Entwickler nun erste MAUI-Projekte für Android, iOS und Mac Catalyst auf Basis des .NET 6.0 SDK erstellen.

Während bisher in Xamarin neben dem Shared Code für jede Zielplattform ein sogenanntes Kopf-Projekt notwendig war, können App-Entwickler nun aus einem einzigen Projekt heraus unmittelbar für verschiedene Plattformen kompilieren. Microsoft spricht von einem "single, multi-targeted Application Project". Auch Grafiken, Symbole und Schriftarten können Entwickler dort zentral verwalten. Zur Erleichterung der Migration bestehender Xamarin-Forms-Projekte liefert Microsoft Hilfsfunktionen mit.

Microsoft betont, dass MAUI in der Preview 2 keineswegs vollständig ist und verweist auf einige einfache "Hello World"-Anwendungen auf GitHub, um MAUI zu testen.

Zweites zentrales Thema in der Preview 2 ist die Verbesserung der Entwicklerproduktivität beim Kompilieren und Debuggen. Microsoft spricht von "Inner Loop Performance". Das Unternehmen hat die Geschwindigkeit von Befehlen wie dotnet new, dotnet build und dotnet run überarbeitet und will daran auch in den kommenden Vorschauversionen werkeln. Der ASP.NET-Core-Razor-Compiler verwendet jetzt die in C# 9.0 eingeführten Source Code Generators, was die Kompilierung erheblich beschleunigt.

Geschwindigkeitssteigerungen beim Kompilieren von Razor-Templates in Blazor und MVC in .NET 6.0 Preview 2.

(Bild: devblogs.microsoft.com)

Darüber hinaus hat das Unternehmen neue Funktionen für die Laufzeit von Webanwendungen eingebaut. Die in Blazor 5.0 eingeführte CSS-Isolation (Beschränkung auf der Gültigkeit auf einzelne .razor-Komponenten) funktioniert nun auch mit den älteren Multi-Page-Programmiermodellen Model View Controller (MVC) und Razor Pages. Bei Blazor bekommen Entwickler offenbar mehr Flexibilität für die Parameterübergabe bei der Ereignisbehandlung. Bei generischen Komponenten müssen sie in weiteren Fällen keine Typparameter mehr explizit angeben, weil die Blazor-Laufzeitumgebung den Typ automatisch ableiten kann. Beim Einsatz von Server-Prerendering mit dem neuen Tag Helper <preserve-component-state /> lässt sich jetzt eine Zustandsverwaltung aktivieren, die eine erneute Verarbeitung in der Haupt-Renderphase vermeidet.

In .NET 6.0 Preview 2 liefert Microsoft auch erstmals .NET Runtimes für Apple-Silicon-Prozessoren. Das war bereits in der Ankündigung für Preview 1 genannt, aber dann nicht auf dem Download-Server verfügbar. Die Unterstützung für Apple Silicon ist beschränkt auf Webanwendungen, Webservices und die Konsole. Desktop-Anwendungen in .NET 6.0 gibt es weiterhin nur auf Windows; das für .NET 6.0 angekündigte Hybrid-Szenario Blazor Desktop ist in Preview 2 noch nicht in Sicht.

Bei den Basisklassen gibt es mit der Klasse System.Collections.Generic).PriorityQueue<TElement, TPriority> nun eine neue Warteschlange mit Priorität; bei der Entnahme werden die Werte nicht anhand der Einfügereihenfolge, sondern auf Basis der bei der Eingabe angegebenen Priorität entnommen. Auch bei den Basisfunktionen ToString() und TryFormat() hat Microsoft nach 20 Jahren .NET noch Verbesserungspotenzial erkannt und nachgebessert.

Der von Microsoft bereits in .NET Core 3.0 neu implementierte JSON-Serializer System.Text.Json kann nun endlich auch – wie sein Vorgänger JSON.NET – Schleifen in Objektbäumen einfach ignorieren.

Beim objektrelationalen Mapper Entity Framework Core gibt es in Version 6.0 Preview 2 dieses Mal nur kleine Verbesserungen bei der Zeichenverkettung und Volltextsuche. Außerdem hat Microsoft ein schon länger bestehendes Problem mit doppelten Typen in zwei verschiedenen Assemblies in Zusammenhang mit asynchronen LINQ-Operationen gelöst.

Die aktuelle Preview-Version von .NET 6.0 findet man auf der entsprechenden Download-Seite. Sie sollte mit Visual Studio 16.9 oder Visual Studio for Mac 8.9 verwendet werden. (ane)