Was ist .NET MAUI?

.NET MAUI ist (k)eine Insel

Die .NET-Qual der Wahl in der Softwareentwicklung

Waren Sie auf der Arbeit schon mal in ein Softwareentwicklungs-Projekt verwickelt? Dann wissen Sie sicherlich auch, dass irgendwann die Frage nach der passenden Software-Technologie kommt. Und die Lösung kann echt anstrengend sein, da es so einiges im Vorfeld zu klären gilt. Da hilft es auch nichts, wenn Sie wissen, dass Sie auf jeden Fall eine .NET-Anwendung für den Windows-Desktop entwickeln wollen, da die ölverschmierten Handschuhe der Industriemechatroniker nichts für eine filigrane Mac-Tastatur sind und die Kameraanbindung nichts für schmalbrüstige Webtechnologien:

  • Es muss nun trotzdem geklärt werden, ob Sie auf Windows Forms, WPF oder UWP setzen
  • Wenn Sie zusätzlich mobile Geräte in Ihre .NET-Lösung integrieren möchten, z.B. um Arbeitsergebnisse zu dokumentieren, macht es zudem Sinn über Xamarin für Ihre mobile App nachzudenken – jedenfalls noch.
  • Es stellt sich zudem die Frage nach dem Investitionsschutz auf der einen und Zukunftssicherheit auf der anderen Seite. Denn Windows Forms und Co. sind zwar hervorragende Kandidaten für den guten alten Desktop, aber eben nichts für die immer zahlreicher werdenden mobilen Apps. Andersherum lassen sich mit Xamarin nicht wirklich ernsthaft Anwendungen für den Desktop-PC entwickeln – schlecht für Industrie, Logistik, Medizintechnik und alles, was unsere Wirtschaft sonst so am Laufen hält.

Wäre doch zu schön, wenn Softwareentwickler zumindest für native Apps und Desktop-Anwendungen mal eine klare Antwort geben, anstatt die Frage „Mit welcher Technologie entwickeln wir die Lösung?“ gleich in stundenlangen Referaten und Glaubensdiskussionen ausarten zu lassen.
Genau hier kommt .NET MAUI ins Spiel. Aber alles der Reihe nach:

  • Erfahren Sie, was .NET MAUI eigentlich ist
  • Wie es sich in die aktuelle Cross-Plattform-Entwicklung einordnet
  • Die Unterschiede und Vorteile zum Vorgänger Xamarin Forms
  • Warum Cross-Plattform-Entwicklung mit .NET MAUI ein echter Zugewinn sein kann
  • Und wie Sie Schritt für Schritt Ihre alten Anwendungen migrieren, statt alles kopflos übern Haufen zu werfen.

Microsofts MAUI-Evolution der .NET-basierten Cross-Plattform-Entwicklung

.NET MAUI steht für:

  • Multi-Plattform
  • Application
  • User
  • Interface

Das trifft es auf den Punkt. Denn mit .NET MAUI bekommt die Softwareentwicklung ein Framework, das es ermöglicht, mit einem Code-Projekt Applikationen für die gängigsten Plattformen mit den passenden GUI-Bibliotheken zu entwickeln:

  • WinUI 3-Apps für den Windows Desktop und der Universal Windows Plattform (UWP)
  • Native Android Apps
  • iOS und macOS Apps
  • und die Community steuert auch noch Tizen und Linux bei. Und wer partout sich auf kein Experiment in der Linux-Welt einlassen will, kann ja immer noch Avalonia als WPF-Substitut für Ubuntu und Co. verwenden – besondere Situation erfordern halt besondere Maßnahmen.

Moment mal? Gab es das nicht schon mit Xamarin Forms? Fast! Mit Xamarin Forms lassen sich doch ebenfalls Cross-Plattform-Anwendungen – also Software die auf allen gängigen Plattformen läuft, entwickeln. Klar soweit nichts Neues! Da .NET MAUI aber als designierter Nachfolger gilt, gibt’s im Vergleich zu Xamarin Forms auch eine Reihe von Verbesserungen:

  • .NET MAUI bildet auf der Windows-Plattform einen Wrapper für WinUI 3. Läuft also nicht nur als UWP-App, sondern auch auf dem guten alten Desktop ab Windows 10. Ein Plus für klassische Geschäftsanwendungen.
  • .NET MAUI Apps können in einem Code-Projekt mit Visual Studio entwickelt werden. Bei Xamarin Forms war neben einem Shared-Projekt für betriebssystemunabhängigen Code auch noch für jede Plattform ein zusätzliches Projekt notwendig – was den Cross-Plattform-Spaß natürlich ein bisschen vermisst hat.
  • Mit .NET MAUI hält ein vereinheitlichter Fluent-UI-Style Einzug. Laut Microsoft war mit Xamarin Forms fast 90% der Geschäftslogik plattformneutral. Aber hallo? Wenn die UI der App überall anders aussieht, ist das eine recht kühne Behauptung – schließlich steckt gerade in der GUI häufig viel Arbeit.
  • Cross-Plattform-APIs, z.B. für GPS oder Sensoren wurden weiter vereinheitlicht.

Damit wäre die Frage „Was ist .NET MAUI?“ auch kurz und knapp erklärt: .NET MAUI ist ein Framework für die Cross-Plattform-Entwicklung von nativen Apps für den Windows Desktop, der Windows Universal Plattform, iOS, macOS und Android und wird in diesem Zuge Xamarin Forms nach und nach ersetzen – vielleicht auch in Ihrem Unternehmen. Dann wissen Sie ja, wo wir sitzen.

Wenn es in der Softwareentwicklung mehr als einen Bildschirm braucht

Wann macht Cross-Plattform-Entwicklung mit .NET wirklich Sinn?

.NET scheint ja Betriebssysteme zu sammeln wie andere Briefmarken oder Pfadfinderabzeichen. Aber macht das in der Praxis wirklich Sinn? Warum sollte mein Unternehmen eine .NET-Anwendung für Windows entwickeln und dann im gleichen Atemzug zu Android oder Mac rüber wechseln. Die spinnen, die Softwareentwickler! Wozu gibt’s denn außerdem Webanwendungen? Die brauchen wir erst gar nicht installieren. Dank Single Page Application Frameworks, wie Blazor, fühlen die sich doch eh fast wie native Apps an – das merkt doch keiner. Im Grunde gibt es zwei Motivationen für die Cross-Plattform-Entwicklung mit .NET:

  • 1. Verteilte Arbeitsabläufe an PC, Tablet und Smartphone – Sprich Ihr Anwendungsfall macht es früher oder später notwendig, verschiedene Endgerätetypen inklusive Hardware, z.B. einer Kamera, einzubeziehen.
  • 2. Ein Prozess für verschiedene Endgeräte – Sie wollen Ihrer Zielgruppe kein Betriebssystem vorschreiben und wissen, dass Ihre Anwendung auf allen Endgeräten laufen muss – schließlich gibt’s immer jemanden der einen Mac oder ein iOS-Gerät hat.

Schauen wir uns die beiden Fälle mal genauer an.

.NET-Anwendungen für verteilte Arbeitsabläufe

Es gibt Prozesse, z.B. in der Industrie, auf dem Bau oder in der Logistik, da müssen die Menschen sich noch richtig bewegen. Einmal am PC und alles in die .NET-Anwendung eingetippt? Vergessen Sie es! Denken Sie nur an eine Montage-Station, wie Sie häufig in der diskreten Fertigung auftaucht. Da wird eingefettet, am Windows-PC getippt, geschraubt, wieder am Windows-PC alles eingetippt und am Ende noch ein Foto mit dem Android Smartphone gemacht, um das Ergebnis inklusive Auffälligkeiten pflichtbewusst zu dokumentieren. Und schon haben wir in der Softwareentwicklung den Salat.
Früher wäre wahrscheinlich eine Windows Forms-Anwendung für den PC und eine Android App fürs Smartphone herausgekommen. Heißt aber auch:

  • Zwei Programmierplattformen – .NET und Java.
  • Zwei Entwicklungsumgebungen – Visual Studio und Android Studio
  • Zweimal evaluiert, ausprobiert, rumgebastelt und herumgewundert
  • Oder zwei IT-Dienstleister, denen Sie alles doppelt und dreifach erklären – Na gut. Zumindest das hätten wir Ihnen erspart.

Heute ist das zum Glück anders: Sie lassen Ihre Desktopanwendung mit .NET MAUI entwickeln und Ihre Smartphone App auch und das Thema ist vom Tisch. Nur der IT-Dienstleister kann bleiben, falls er wie wir was von .NET MAUI versteht.

Ein Prozess und eine .NET-Anwendung für verschiedene Endgeräte

Der Cross-Plattform-Klassiker ist natürlich immer noch die App, die auf Windows, Mac und Android läuft. Schließlich schallt das auch gebetsmühlenartig aus dem Redmonder Marketing-Megaphone. Und dieser technische Anwendungsfall ist auch gar nicht so abwegig. Stellen Sie sich mal vor, Sie müssten z.B. den Arbeitsfortschritt auf einer Baustelle protokollieren oder müssten in irgendeiner anderen Form durch die Weltgeschichte umherstreifen. Dann kann Ihnen eines gewiss sein:

  • Sie haben nicht immer Internet – eine native App macht also Sinn
  • und nicht jeder Kollege ist unbedingt ein Freund von Google, Android und Co. – aus welchen technischen oder emotionalen Gründen auch immer.

Also braucht es halt mindestens zwei Apps. Dank .NET MAUI aber wenigstens nicht zwei Code-Basen und damit auch nicht zwei Softwareentwicklungsprojekte. Sie müssen damit auch nicht zweimal zur Geschäftsführung rennen, um freundlich nach mehr Geld zu fragen. Mit dem Cross-Plattform-Ansatz und .NET MAUI spart man sich in der Softwareentwicklung also jede Menge Arbeit.

.NET MAUI im Webgewand

Hybride App-Entwicklung mit .NET MAUI Blazor

Webanwendungen sind heutzutage nun mal omnipräsent. Sie begegnen uns auf Facebook, Twitter oder YouTube und man gewöhnt sich als Nutzer nur allzu gerne an das frische Design. Und wenn einem so eine webbasierte UI in Form einer ASP.NET-Anwendung auch auf der Arbeit anlacht, wäre das noch schöner. Es würde zumindest für eine höhere Akzeptanz und Anwenderfreundlichkeit sorgen und damit auch die Produktivität steigern, wenn Ihre Mitarbeiter nach dem richtigen Knopf nicht wie der Falke nach der Maus suchen müssen. Wäre nur noch das Problem mit dem Hardwarezugriff zu klären. Genau dafür gibt’s in der Softwareentwicklung die hybride App-Entwicklung. Hier kommt das Beste aus beiden Welten zusammen. Wie das geht erfahren Sie gleich im nächsten Abschnitt.

Und sollten Sie danach doch mal verlegen sein, Teile Ihrer Softwarelösung komplett ins Web mit ASP.NET zu migrieren, können Sie zumindest die UI gleich mitnehmen.

Das BlazorWebView-Steuerlement

Genau für diesen Fall gibt’s die BlazorWebView – natürlich auch für .NET MAUI. Dabei handelt es sich um einen abgewandelten Chrome-Browser zur Anzeige von Blazor-Komponenten – im weitesten Sinne .NET-basierten Webseiten. Das Tolle daran ist die faire Arbeitsteilung. Jede Technologie macht sozusagen das, was sie am besten kann:

  • .NET sorgt für die Geschäftslogik und die dynamische Generierung von HTML und CSS
  • Der Browser bringt dann alles zur Anzeige auf den Bildschirm

Der Vorteil zu einer reinen Webanwendung ist klar: .NET läuft direkt auf Ihrem Rechner oder Smartphone und kann unbekümmert auf Sensoren, Sound, Kamera und andere Hardware-Schnittstellen zugreifen. Während es sich für den Nutzer so anfühlt, als würde er mit einer Anwendung wie Facebook oder WhatsApp interagieren. Da kommen doch alle auf ihre Kosten.
Die BlazorWebView können Sie als echten Game Changer mit vielen spannenden Facetten betrachten. Deshalb haben wir ihr auch in „Was ist Blazor?“ ganz besonders viel Aufmerksamkeit geschenkt.

Sie sollten es nur nicht übertreiben, denn allzu performance-lastige Anwendungsfälle mögen solche hybriden Technologien nicht. Für Echtzeit-Videoanalysen oder komplexe grafische Darstellungen sollten Sie doch lieber auf .NET MAUI mit nativer UI zurückgreifen.

Mit XAML Islands nervenschonend von WPF- und Windows Forms zu .NET MAUI

.NET MAUI und alles auf Anfang?

.NET MAUI ist der neueste Schrei, aber was ist eigentlich mit .NET-basierten Bestandsanwendungen, in die mein Unternehmen jahrelang investiert hat? Für diesen Fall gibt’s gute Nachrichten – die XAML Islands. Im Prinzip ist der Name Programm: Sie transplantieren eine WinUI 3-App oder UWP-App in eine Win32-Desktop-App, also z.B. eine WPF- oder Windows Forms-Anwendung. Mit der Zeit ersetzen Sie nach und nach immer mehr Komponenten Ihrer Bestandsanwendung mit modernen Technologien. Und das Beste: keiner merkt was – außer vielleicht Ihr Geldbeutel, weil nun nicht mehr alles vom .NET-Vollblut-Nerd mit mindestens zehnjähriger Berufserfahrung entwickelt werden muss.

Aber wie kann das denn funktionieren?

Ein Fenster kommt selten allein im Windows-Desktop

Dazu muss man wissen, dass klassische Windows-Desktop-Anwendungen sich der Win32-API, einer Art Klassenbibliothek, bedienen. Unsere geliebten Windows-Fenster bilden da keine Ausnahme. Und da ein Fenster selten allein kommt, schließen sich unsere quadratischen Zeitgenossen auch manchmal zusammen und können miteinander in einer Parent-Child-Hierarchie verschachtelt werden – einfach gesagt: ein Fenster im Fenster.

Technisch passiert dies mit Hilfe sogenannter Window Handles. Die können Sie sich getrost als Referenz auf ein Fenster-Objekt vorstellen, um anschließend damit alle möglichen Dinge zu tun – einklappen, aufklappen, Höhe ändern, Position ändern, usw. Und die XAML Islands sind im Grunde genommen nichts anderes als Window Handles mit Geschenkverpackung. Schließlich will sich ein .NET-Entwickler nicht mit C++-Code aus der Windows-Urzeit herumschlagen. Von diesem Prinzip profitiert auch .NET MAUI. Denn unter der Haube befindet sich, wie bereits angedeutet, WinUI 3 und das lässt sich eben mit XAML Islands in besagte WPF und Windows Forms-Anwendungen einbetten.

.NET MAUI ist eben manchmal doch eine Insel.

Noch nicht genug von .NET MAUI? – hier gibt’s mehr …

Alle Quellen zum Nachlesen

Wow, dieser Beitrag über .NET MAUI ist echt gut!

Weitere Beiträge aus diesem Bereich interessieren mich auch

Kein Problem. Einfach liken oder vernetzen. Wir teilen unser Wissen regelmäßig in folgenden Kanälen:

Sie haben Fragen oder Anregungen?

Kontaktieren Sie uns noch heute: