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:
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:
.NET MAUI steht für:
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:
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:
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.
.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:
Schauen wir uns die beiden Fälle mal genauer an.
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:
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.
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:
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.
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.
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:
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.
.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?
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.