Cross-Platform-Entwicklung mit .NET MAUI
.NET MAUI ist das Framework aus dem Hause Microsoft, wenn es um die Entwicklung von Cross-Platform-Anwendungen geht. Es bietet einen deklarativen Ansatz zur Definition des User Interfaces und man generiert native Apps für iOS, Android, Windows und macOS. Blicken wir auf die Praxistauglichkeit dieses Frameworks und das Tooling. Ebenso werfen wir einen Blick auf die Lernkurve zur Technologie und wie man diese besser erklimmen kann.
Über die Motive der Entwickler:innen zur Cross-Platform-Programmierung braucht man in Fachkreisen üblicherweise keine großen Ausführungen machen. Das Ziel ist ein ewiger Wunsch: "Write once, run anywhere (WORA)". Mit Cross-Platform-Programmierung möchte man eine App erstellen, welche auf unterschiedlichen Betriebssystemen, zum Beispiel Android und iOS, ausgeführt werden kann. Cross-Device-Programmierung geht dabei noch einen Schritt weiter. Hier sind auch verschiedene Formfaktoren der Geräte, beispielsweise Smartphone, Tablet, PC, Notebook, TV usw. im Fokus. Es gibt mehrere technische Ansätze der Cross-Platform- bzw. Cross-Device-Programmierung jenseits der Erstellung von Web-Applikationen. Bekannte und aktuelle Technologien sind beispielsweise:
Ein neuerer Ansatz ist .NET MAUI von Microsoft [4]. Mit .NET MAUI kann man Apps für die Systeme iOS, Android, Windows und macOS und über den Herstellersupport von Samsung auch für das TV-Betriebssystem Tizen programmieren. Als Programmiersprache kommt C# zum Einsatz. Eine Besonderheit ist das Erstellen des User Interfaces mit Hilfe der XAML-Sprache XAML. Entwickelt wird mit Visual Studio unter Windows bzw. macOS. Für Apps der Betriebssysteme macOS und iOS wird ein Apple-PC benötigt. Zur Gestaltung der Oberfläche stehen zahlreiche Komponenten zur Verfügung, welche während der Laufzeit auf die nativen User-Interface-Elemente der Zielsysteme gemapt werden. Das Ergebnis sind native Apps für die jeweiligen Zielsysteme.
.NET MAUI
.NET MAUI baut auf dem plattformübergreifenden Framework .NET ab Version 6.0 auf.
Man definiert das User Interface auf einer übergreifenden abstrakten Ebene mittels XAML-Quellcode. .NET MAUI sorgt dafür, dass die Elemente der Benutzeroberfläche (Button, Textfeld usw.) korrekt auf den Zielsystemen abgebildet werden. Individuelle Plattformanpassungen sind jedoch möglich. Für Standardanforderungen sind diese jedoch nicht notwendig. .NET MAUI ermöglicht auch den Zugriff auf Hardware und Gerätefunktionen wie Kamera, GPS usw. Das Framework abstrahiert die Bibliotheken der jeweiligen Systeme und bietet dafür eine einheitliche Programmierschnittstelle an. Das bietet den Vorteil, dass man nur gegen diese Schnittstelle programmiert und sich nicht damit beschäftigen muss, wie man die Hardware auf dem jeweiligen Zielsystem verwendet. Gibt es eine solche generische Programmierschnittstelle nicht, dann kann man auf die spezifischen APIs eines jeden Systems zugreifen (Plattformcode).
.NET MAUI ist der Nachfolger von Xamarin. Daher gibt es bereits eine größere aktive Community, Komponenten und Bibliotheken zur Erweiterung und umfangreiche Hilfe in Form von Dokumentationen, Blogbeiträgen, Diskussionsforen usw.
Der Weg zur App
.NET Multi-Platform App UI-Entwicklung in Visual Studio (Abb. 2). Danach stehen entsprechende Vorlagen in Visual Studio für das Anlegen eines Projektes zur Verfügung. Erstellen Sie eine erste Cross- Plattform-App mit .NET MAUI.
Auffällig (gegenüber Xamarin-Projekten) ist, dass alle Zielplattformen über ein einzelnes Projekt abgewickelt werden (Abb. 3)
Unterhalb des Ordners Platforms finden wir für jedes Zielsystem, also Android, iOS, macOS und Windows, einen Unterordner mit zugehörigen Dateien. Wir müssen keine zusätzlichen Projekte mehr warten, Bibliotheken mehrfach installieren und zwischen den aktiven Projekten umschalten. Über die Bereitstellung bzw. Ausführungsebene von Visual Studio können wir nun wie gewohnt ein Zielsystem auswählen und die App unmittelbar starten. Das Vorgehen wird als Multi-Targeting bezeichnet. Gemeinsame Ressourcen wie Schriftarten und Bilder können jetzt auf mehrere Plattformen geteilt werden. Das .NET-MAUI-Build-System weiß, wie die betreffenden Ressourcen für jede Zielplattform verteilt werden. Plattformindividuelle Vorgehensweisen sind zwar weiterhin möglich, aber diese spielen sich nun innerhalb der genannten Unterordner ab und es müssen dazu keine eigenen Projekte mehr gepflegt werden. Plattformspezifische Inhalte gehören in die betreffenden Ordner. Die Windows-App lässt sich direkt auf der Entwicklermaschine ausführen, eine App für ein mobiles System wird im Emulator (Android) oder Simulator (iOS) dargestellt (Abb. 4).
Für Android benötigt man einen Emulator oder den Zugriff auf ein Echtgerät. Für iOS ist die Verbindung zu einem iPhone bzw. iPhone-Simulator über einen Mac-PC im lokalen Netzwerk notwendig. Das hat sich gegenüber Xamarin nicht geändert.
Aktuelle Themen rund um .NET MAUI
.NET MAUI ist die Technologie zur plattformübergreifenden Programmierung, wenn man das .NET-Framework einsetzen möchte. Aus Sicht der Praxis ergeben sich die Eigenschaften gemäß der Tabelle. Anhand der Merkmale kann man die Eignung im eigenen Projekt einer ersten Einschätzung unterziehen.
Eigenschaft | Merkmale | Hinweise |
Zielsysteme | Android ab Version 5.0 (API 21), iOS ab Version 10, macOS ab Version 10.13, Windows Desktop (WinUI 3), Tizen (Support Samsung) | es fehlt Linux; ggf. Nachrüstung über Community |
App-Art | nativ | performant und Zugriff auf Geräte- und Systemfunktionen |
User Interface | nativ | wird automatisch an das Zielsystem angepasst |
Framework | .NET | großer Funktionsumfang, Abhängigkeit von .NET |
Programmiersprache | C# (Logik), XAML (UI) | Kenntnisse der .NET-Entwicklung hilfreich |
Erweiterbarkeit | durch eigene Komponenten oder Komponenten von Drittanbietern | Drittanbieter stellen umfassende Sammlungen an UI-Controls zur Verfügung |
Support | Community | aktiv |
Migration | Xamarin.Forms | bestehende Projekte können migriert werden |
Entwicklungsumgebung | Visual Studio | auf Windows bzw. macOS |
plattformspezifische Programmierung | für UI und Systemzugriff möglich | Änderung gegenüber Xamarin.Forms, es werden sogenannte Handler statt Renderer verwendet |
Einarbeitung
Bei jeder neuen Technologie stellt sich die Frage, wie hoch ist der Lernaufwand, also welche Kenntnisse muss ich erwerben, um mit dem Framework erfolgreich Anwendungen für Kunden erstellen zu können? Idealerweise sind für .NET MAUI folgende Kenntnisse vorhanden:
- Programmiersprache C#
- .NET-Framework
- Definition des User Interfaces mit XAML
Die Lernkurve bleibt ebenfalls überschaubar, sofern man über Wissen aus verwandten Technologien verfügt. Dann empfiehlt es sich, sich zunächst mit C# und .NET vertraut zu machen und erst in einem zweiten Schritt mit .NET MAUI einzusteigen. Ein mögliches Lernkonzept – je nach Ausgangssituation – zeigt Abb. 5.
Fazit und Ausblick
Mit .NET MAUI steht ein Cross-Platform-Framework für die Entwicklung von Apps für unterschiedliche Zielsysteme zur Verfügung. Die Vorteile sind die Nutzung des .NET-Frameworks und die intuitive Definition des User Interfaces mit Hilfe eines XML-Dialektes (XAML). Werden native Apps für unterschiedliche Zielsysteme benötigt und sind Kenntnisse in der Programmiersprache C# vorhanden, dann sollte .NET MAUI bei der Auswahl der Technologie für das nächste Projekt berücksichtigt werden. Xamarin-Entwickler müssen sich etwas umstellen, können jedoch auf viel Bekanntes zurückgreifen.