Grundlegendes zu .NET MAUI und der Zukunft von Xamarin

Im Jahr 2000 ging es bei der Professional Developers Conference von Microsoft darum, die Szene für .NET zu gestalten und viele der Technologien vorzustellen, die wir in den letzten zwei Jahrzehnten verwendet haben. Zwanzig Jahre später kann man mit Recht sagen, dass Microsoft bei der Ausbreitung von .NET und seinen zahlreichen Entwickler-Frameworks einen Reset-Knopf gedrückt hat. Bei Build 2020 legte das Unternehmen seine Roadmap für die nächsten zwanzig Jahre fest und baute auf der Ankündigung von Project Reunion auf.

Die Zukunft ist ein .NET

Man kann auf ungefähr sechs Jahre zurückblicken und die Wurzeln von heute im Open Sourcing von .NET und der Gründung der .NET Foundation erkennen. Die Plattform benötigte eine unabhängige Stelle, um den Übergang vom alten .NET Framework zu einem neuen, älteren, modularen .NET Core zu unterstützen. Dieser Übergang musste mehr als Windows umfassen; Es musste die mobilen Clients von Xamarin und die 3D-Gaming-Plattformen von Unity mitbringen und darauf abzielen, die Reichweite von .NET auf MacOS und Linux auszudehnen.

Das bringt uns zu 2020 und der bevorstehenden Umstellung von .NET Framework 4 auf ein neues .NET 5, die nächste große Version von .NET Core mit den meisten bekannten .NET Framework-APIs und Namespaces. Diese Transformation wird den Beginn großer Änderungen für die mobilen und plattformübergreifenden Xamarin-Entwicklungstools von Microsoft bedeuten, da Microsoft die technischen Anstrengungen von Xamarins Mono auf .NET 5 verlagert.

Mono und .NET in .NET 6 zusammenführen

Eines ist klar: Microsoft wirft nicht sowohl seine als auch Ihre Investitionen in Xamarin weg. Mono wird noch nirgendwo hingehen. Viele große Projekte hängen von Mono ab, und wir werden sehen, dass Xamarin Mono weiterentwickelt, um neue Versionen von Android und iOS zu unterstützen. Wenn Sie jedoch neue Funktionen und neue APIs sowie ein umfassenderes plattformübergreifendes Entwicklungsmodell wünschen, basiert Ihre zukünftige Entwicklungsstrategie auf .NET 5 und dem laufenden jährlichen .NET-Release-Zeitplan. Ein vollständiges, einheitliches .NET ist noch weit entfernt, und obwohl .NET 5 ein bedeutender Fortschritt sein wird, werden wir erst Ende 2021 eine Vereinheitlichung und die geplante Veröffentlichung der nächsten langfristigen Support-Version, .NET 6, sehen.

Die Absicht ist nicht, Mono vollständig zu ersetzen, sondern einen gemeinsamen Satz von Klassenbibliotheken und eine einzige Toolchain für .NET Core und Mono zu haben, die auf der Arbeit aufbaut, die bereits in Funktionen auf Plattformebene wie dem .NET Standard ausgeführt wird Bibliotheken. Das lässt eine interessante Frage offen: Wie sieht eine plattformübergreifende Benutzeroberfläche in der konvergierten Zukunft aus? Obwohl es im WinUI 3-Port der Uno Platform eine plattformübergreifende Option gibt, die neben WebAssembly und macOS auch Unterstützung für mobile Geräte bietet, sind die Steuerelemente, die Microsoft in WinUI ausliefert, Windows-Desktop-Steuerelemente und funktionieren am besten in Desktop- und Tablet-Anwendungen.

Entwicklung eines plattformübergreifenden UI-Frameworks für .NET

Xamarin bietet eine Alternative zu WinUI für die plattformübergreifende Entwicklung. Die plattformübergreifende Strategie basiert auf einer Mischung aus XAML-Unterstützung für native Steuerelemente für iOS und Android sowie eigenen plattformübergreifenden Xamarin Forms. Xamarin Forms ist eine eigenständige MVVM-Entwicklungsplattform (Model-View-Viewmodel) mit einem eigenen Erscheinungsbild, das auf der Material Design-Sprache von Android basiert. Mit Xamarin Forms erhalten iOS- und Android-Apps ein einheitliches Erscheinungsbild und erhalten gleichzeitig Zugriff auf native Funktionen und Dienste.

Mit .NET 6 zur Vereinheitlichung der verschiedenen .NET-Plattformen ist Xamarin Forms die logische Grundlage für eine neue Reihe mobiler UI-Tools und ein neues plattformübergreifendes UI-Framework für .NET. Microsoft hat diesen neuen Ansatz auf der Build 2020 vorgestellt und ihn als .NET Multiplatform App UI (MAUI) bezeichnet.

.NET MAUI ist die nächste Generation von Xamarin Forms, mit der Entwickler eine App einmal in einem einzelnen Visual Studio-Projekt mit einer einzigen Codebasis erstellen können, die auf jedes unterstützte Gerät abzielt. Ziel ist es, eine vereinfachte Projektstruktur zu liefern. Anstelle einer einzelnen Lösung mit separaten Projekten für jede Plattform, auf die Sie abzielen, enthält ein einzelnes Projekt mit MAUI die Ressourcen, die für die Ausrichtung auf bestimmte Plattformen erforderlich sind. Wenn Sie native APIs für den Zugriff auf gerätespezifische Dienste benötigen, können diese in einer Plattformansicht gebündelt und zur Kompilierungszeit beim Targeting von Builds für jede Plattform verwendet werden. Neben dem Plattformcode können Sie Ressourcen bündeln, die von Ihrer XAML verwendet werden, einschließlich Bilder und Schriftarten, sodass Sie alle Elemente Ihrer Anwendung an einem Ort verwalten können.

Das neue Projektmodell, das mit .NET 6 geliefert wird, ist der Schlüssel zu diesem Ansatz, da es eine logischere Gruppierung auf die in plattformübergreifenden Apps verwendeten Module sowie auf die Erstellung und Bereitstellung von Code anwendet. Trotz der strukturellen Änderungen an Projekten sollte der Code, den Sie morgen schreiben, dem von heute sehr ähnlich sein, sich jedoch einfacher auf mehreren Plattformen bereitstellen und über Änderungen an Plattform-APIs und Ressourcen für das Anwendungsdesign auf dem Laufenden halten.

Der Weg zu .NET MAUI

Wir sind noch Monate davon entfernt, verwendbaren .NET MAUI-Code zu sehen, da dieser von den .NET 6 SDK-Funktionen abhängt, obwohl ein GitHub-Repository mit einigen der ersten Implementierungen bereits geöffnet ist. Wenn eine Vorschau gegen Ende 2020 ausgeliefert wird, sollte das, was wir erhalten, den vorhandenen Xamarin-Formularen ziemlich ähnlich sein, die parallel zu .NET MAUI weiterentwickelt werden. Die wichtigsten Änderungen betreffen die Strukturierung von Projekten. Ein neuer Namespace wird vom Xamarin-eigenen Namespace in das .NET-System verschoben.

Die veröffentlichte Roadmap für .NET MAUI schlägt vor, zunächst eine Vorschau zu erstellen, die auf einer Umbenennung der aktuellen Xamarin Forms-Version basiert. Einige Vereinfachungen und neue Funktionen stammen aus den neuen Funktionen von .NET 6. Weitere Änderungen werden im Laufe des Jahres 2021 vorgenommen, wenn sich .NET MAUI und .NET 6 weiterentwickeln. Bis Sommer 2021 werden MacOS- und Windows-Steuerelemente zu Android und iOS hinzugefügt. Sie sollten in der Lage sein, einheitliche Anwendungen bis zur geplanten Veröffentlichung im November 2021 bereitzustellen, wobei ein Release-Kandidat in fällig ist September 2021.

Microsoft plant weitere Änderungen an Xamarin im .NET 6-Zeitraum, verschiebt andere Xamarin-Bibliotheken in das System und benennt Xamarin.iOS und Xamarin.Android in .NET für iOS und .NET für Android um. Es ist ein logischer Schritt, wenn auch ein wenig traurig für diejenigen von uns, die die Entwicklung von Xamarin seit den Anfängen von Mono verfolgt haben.

Eine positivere Sichtweise ist vielleicht, dass mit der Umstellung auf einen plattformübergreifenden .NET Core als Grundlage aller .NET-Elemente Microsoft nicht so sehr Microsoft Xamarin absorbiert, als dass Xamarin das Herzstück der Open Source-Zukunft von .NET wird . Das ist ein gutes Erbe für das Mono-Projekt.