GUI-Frameworks für .NET – Teil 3: Android, iOS, macOS und .NET MAUI

Dieser Teil der Serie dreht sich um Microsofts .NET-Oberflächen, die auch auf anderen Plattformen als Windows laufen, insbesondere .NET MAUI.

vorlesen Druckansicht 1 Kommentar lesen
.NET

(Bild: erzeugt mit KI durch iX)

Lesezeit: 9 Min.
Von
  • Dr. Holger Schwichtenberg
Inhaltsverzeichnis
close notice

This article is also available in English. It was translated with technical assistance and editorially reviewed before publication.

Das neueste GUI-Framework von Microsoft hört auf den sperrigen Namen .NET Multi-Platform App UI – kurz MAUI. Allerdings ist .NET MAUI nicht komplett neu, sondern ein Refactoring und eine Weiterentwicklung des Cross-Platform-GUI-Frameworks Xamarin.Forms, das durch die Übernahme der Firma Xamarin im Jahr 2016 zu Microsoft kam. Die neue Basis ist nun das moderne .NET SDK, zur Laufzeit kommt jedoch nicht immer die neueste .NET Core Runtime, sondern im Fall von Android und den Apple-Betriebssystemen weiterhin die Mono Runtime zum Einsatz. Der neue .NET-Namensraum ist Microsoft.Maui (vorher: Xamarin.Forms).

Dr. Holger Schwichtenberg
Dr. Holger Schwichtenberg

Dr. Holger Schwichtenberg hat Fachbücher zu .NET 10.0, C# 14.0, Blazor 10.0 und Entity Framework Core 10.0 veröffentlicht. Er arbeitet als Berater und Trainer bei www.IT-Visions.de.

Qual der Wahl: GUI-Frameworks für .NET

Im Zuge der "One .NET"-Strategie hat Microsoft 2022 die bisherigen Xamarin-Produkte Xamarin.iOS (früher MonoTouch), Xamarin.Mac (früher: MonoMac) und Xamarin.Android (früher: MonoDroid) als .NET for iOS, .NET for macOS / Mac Catalyst und .NET for Android in das moderne .NET integriert, siehe die GitHub-Repositorys dotnet/android und dotnet/macios. Die letzte URL ist trotz des veralteten Namens die Quelle für .NET for iOS, Mac Catalyst, macOS und tvOS. Auch die Namensräume in diesen Projekten sind immer noch die alten, zum Beispiel Xamarin.AndroidX.

Diese GUI-Bibliotheken bilden die Basis für Cross-Platform-Apps mit .NET MAUI. Es ist darüber hinaus möglich, mit .NET for iOS, .NET for Android und .NET for macOS auch spezifische Apps für die einzelnen Plattformen zu schreiben, auf Basis der plattformspezifischen XML-Syntax und der plattformspezifischen Steuerelemente. Dieses Vorgehen ist in der Praxis aber nicht mehr verbreitet.

Zudem gibt es im gleichen Repository wie .NET for macOS, .NET for Mac Catalyst und .NET for iOS auch eine .NET-Variante für tvOS, die aber nicht in .NET MAUI unterstützt wird. Den alten Programmcode zur Unterstützung von watchOS aus Xamarin-Zeiten hat Microsoft kürzlich entfernt.

Videos by heise

.NET-MAUI-Anwendungen laufen auf Windows (via WinUI 3), macOS (via .NET for Mac Catalyst), iOS (via .NET for iOS), Android (via .NET for Android) und Tizen (diese Implementierung kommt von Samsung), siehe Abbildung. Den Linux-Desktop lässt Microsoft leider außen vor. Auf GitHub findet man nur eine experimentelle Portierung durch den Microsoft-Mitarbeiter Javier Suárez. Das zugehörige GitHub-Issue, das eine Linux-Desktop-Portierung fordert, hat hunderte Kommentare, aber den Status "Unanswered".

Aufbau von .NET 9.0

(Bild: Holger Schwichtenberg)

Während Xamarin.Forms stark auf die Mobilbetriebssysteme ausgerichtet war, gibt es in .NET MAUI auch Features speziell für die Desktop-Betriebssysteme wie Multi-Window-Unterstützung, Tastatur-Shortcuts für Menüs (seit Version 8.0) und Steuerung der Titelleiste (seit Version 9.0). Die Integration in macOS via Mac Catalyst ist aber immer noch hakelig und wenig praxistauglich.

Mit MAUI kann man aus einem einzigen Projekt heraus Kompilate via Multi-Targeting für alle unterstützten Betriebssysteme erzeugen. Mit bedingter Kompilierung können Entwicklerinnen und Entwickler plattformspezifischen Programmcode einbringen. Mehrere Kopfprojekte wie beim Vorgänger Xamarin.Forms sind aber auch bei MAUI noch möglich. Ein Kopfprojekt ist ein Konzept in der Multi-Platform-Entwicklung. Es enthält plattformspezifischen Code und Ressourcen sowie die Build-Konfiguration für das eigentliche Projekt, wenn dieses seitens des Frameworks oder der Werkzeuge nicht automatisch für mehrere Plattformen gebaut werden kann. Das Kopfprojekt umfasst den Startcode für die jeweilige Plattform und lädt das eigentliche Projekt.

Voraussetzung für die Übersetzung für eine Zielplattform ist die Installation eines entsprechenden .NET-SDK-Workloads auf dem Entwicklungsrechner. Auf Windows-Rechnern kann man für alle Zielsysteme entwickeln; beim Übersetzen für das Apple-Betriebssystem braucht man aber zusätzlich einen Mac-Computer mit XCode für einen Remote Build sowie ein Apple-Entwicklerkonto.

Die erste Version von .NET MAUI ist am 23. Mai 2022 als Nachtrag zu .NET 6.0 erschienen. Die Versionsnummer von MAUI ist an .NET angeglichen, das heißt, in .NET 9.0 gibt es die vierte Version von MAUI mit der Versionsnummer 9.0.

Die ersten beiden Releases (6.0 und 7.0) von .NET MAUI waren für Entwicklerinnen und Entwickler eine Herausforderung, weil das Entwicklungserlebnis und die Performance oft mangelhaft waren und einige Steuerelemente auch Bugs zur Laufzeit hatten. Die letzten beiden Versionen sind aber besser einsetzbar. Entwicklerinnen und Entwickler, die mit Xamarin.Forms gearbeitet haben, mussten zwangsweise auf MAUI umsteigen, denn der Support endete am 1. Mai 2024. Abhängig von den verwendeten Features ist bei der Migration einiges zu tun, aber der .NET Upgrade Assistant hilft.