Beschreiben der .NET MAUI-Architektur

Abgeschlossen

Ein gängiges Muster für die plattformübergreifende App-Entwicklung besteht darin, die Geschäftslogik auf der Benutzeroberfläche zu berücksichtigen und dann separate Benutzeroberflächen und Benutzeroberflächenlogik für jede Plattform zu entwickeln. Während die Geschäftslogik für jeden Gerätetyp unverändert bleibt, kann der Code, der die App steuert und die Daten darstellt, variieren. Diese Unterschiede entstehen durch die verschiedenen Funktionen, APIs und Features, die von den Geräten bereitgestellt werden. Wenn Sie auf diese Weise eine App für mehrere Plattformen erstellen, müssen Sie sich nicht nur mit separaten SDKs (Software Development Kits), sondern auch mit völlig unterschiedlichen Sprachen und Toolsets auseinandersetzen.

Der Zweck von .NET MAUI (Multi-Platform Application User Interface) ist die Vereinfachung der Multiplatform-App-Entwicklung. Mithilfe von .NET MAUI erstellen Sie Apps für mehrere Plattformen in einem einzigen Projekt, können aber bei Bedarf Quellcode und Ressourcen speziell für eine bestimmte Plattform hinzufügen. Das Hauptziel von .NET MAUI besteht darin, Ihnen die Möglichkeit zu geben, einen möglichst großen Teil Ihrer Anwendungslogik und Ihres Benutzeroberflächenlayouts in einer einzigen Codebasis zu implementieren.

In dieser Lektion erfahren Sie mehr über die Architektur von .NET MAUI und lernen die Tools kennen, die zum Erstellen von .NET MAUI-Anwendungen erforderlich sind.

Was ist der .NET MAUI-Technologiestapel?

.NET bietet eine Reihe plattformspezifischer Frameworks zum Erstellen von Apps: .NET für Android, .NET für iOS (und iPadOS), .NET für Mac und WinUI 3 (unter Verwendung des Windows App SDK). All diese Frameworks haben Zugriff auf die gleiche .NET 6-Basisklassenbibliothek (Base Class Library, BCL). Diese Bibliothek bietet die Funktionalität zum Erstellen und Verwalten von Ressourcen sowie zum allgemeinen Abstrahieren der Details des zugrunde liegenden Geräts vom Code. Die BCL benötigt die .NET-Runtime, um die Ausführungsumgebung für Ihren Code bereitzustellen. Mono, eine Open-Source-Implementierung der .NET-Runtime, implementiert die Android-, iOS- (und iPadOS-) und macOS-Umgebungen. Unter Windows führt Win32 dieselbe Rolle aus, ist aber für die Windows-Plattform optimiert.

Zwar ermöglicht die BCL es Anwendungen, die auf verschiedenen Gerätetypen laufen, eine gemeinsame Geschäftslogik zu nutzen, aber die verschiedenen Plattformen haben unterschiedliche Arten, die Benutzeroberfläche einer Anwendung zu definieren. Die Plattformen bieten unterschiedliche Modelle, um festzulegen, wie die Elemente der Benutzeroberfläche miteinander kommunizieren und interagieren. Sie können die Benutzeroberfläche für jede Plattform separat erstellen, indem Sie das entsprechende plattformspezifische Framework (.NET für Android, .NET für iOS, .NET für Mac oder WinUI 3) verwenden. Dieser Ansatz erfordert jedoch, dass Sie eine Codebasis für jede einzelne Gerätefamilie verwalten. .NET MAUI bietet ein einziges Framework zum Erstellen der Benutzeroberflächen für mobile und Desktopanwendungen. Sie erstellen die Benutzeroberfläche mit diesem Framework (im folgenden Diagramm durch Pfeil 1 gekennzeichnet) und .NET MAUI kümmert sich um die Konvertierung in die entsprechende Plattform (Pfeil 2).

Es kann vorkommen, dass Sie ein plattformspezifisches Feature implementieren müssen. In diesem Fall können Sie Methoden im plattformspezifischen Framework aufrufen, wie im folgenden Diagramm durch Pfeil 3 gekennzeichnet.

Diagramm des .NET MAUI-Technologiestapels und die Vorgehensweise zum Implementieren eines plattformspezifischen Features.

Wie funktioniert .NET MAUI?

.NET MAUI abstrahiert die Implementierung eines UI-Elements von der zugehörigen logischen Beschreibung. Sie können die Benutzeroberfläche mithilfe von XAML (Extensible Application Markup Language), einer plattformneutralen Sprache basierend auf XML, beschreiben. Das folgende XAML-Fragment zeigt z. B. die Beschreibung eines Schaltflächen-Steuerelements:

<Button Text="Click me"
        SemanticProperties.Hint="Counts the number of times you click"
        Clicked="OnCounterClicked"
        HorizontalOptions="Center" />

Dieses Beispiel definiert die Beschriftung für die Schaltfläche („Hier klicken“) und gibt an, dass eine Methode mit dem Namen OnCounterClicked ausgeführt werden soll, wenn ein*e Benutzer*in die Schaltfläche auswählt. Andere Eigenschaften können das Layout der Schaltfläche und des Texts ändern. In diesem Beispiel ist der Text auf der Schaltfläche zentriert. Semantische Eigenschaften bieten Unterstützung für Barrierefreiheit für Benutzer*innen mit Sehbehinderungen.

.NET MAUI generiert immer nativen Code für das jeweilige Zielgerät, sodass sich eine optimale Leistung erzielen lässt. .NET MAUI verwendet für jede Plattform und jedes Benutzeroberflächenelement spezifische Handler, um einen Vorgang auszuführen. Wenn die App beispielsweise unter iOS ausgeführt werden soll, ordnet ein .NET MAUI-Handler diesen Code einem UIButton-Element von iOS zu. Für die Ausführung unter Android wird ein AppCompatButton-Element von Android zugeordnet. Auf diese Handler wird indirekt über eine steuerelementspezifische Schnittstelle zugegriffen, die von .NET MAUI bereitgestellt wird, z. B. IButton für eine Schaltfläche.

Diagramm der Vorgehensweise, wie .NET MAUI ein XAML-Steuerelement einem nativen Steuerelement zuordnet. Es wird gezeigt, dass das .NET MAUI-Steuerelement eine Schnittstelle implementiert, die jeder native Handler ebenfalls implementiert.

Hinweis

Wenn Sie wünschen, können Sie die Benutzeroberfläche auch dynamisch mithilfe von C#-Code erstellen. Bei diesem Ansatz können Sie das Layout entsprechend der Umgebung ändern. Sie möchten beispielsweise nicht, dass bestimmte Steuerelemente angezeigt werden, wenn ein*e Benutzer*in nicht über eine entsprechende Berechtigungsstufe verfügt.

.NET MAUI erleichtert den Zugriff auf allgemeine Steuerelemente wie Schaltflächen. Andere häufig verwendete Steuerelemente wie Texteingabefelder, Beschriftungen und Datumsauswahlelemente lassen sich genauso umsetzen. Einzelne Steuerelemente reichen jedoch nicht aus, um eine gute Plattform für die Entwicklung umfangreicher Apps zu schaffen. .NET MAUI bietet außerdem Folgendes:

  • Eine ausgeklügelte Layout-Engine zum Entwerfen von Seiten.
  • Mehrere Seitentypen zum Erstellen von umfassenden Navigationstypen wie z.B. Drawern.
  • Unterstützung der Datenbindung für elegantere und besser zu verwaltende Entwicklungsmuster.
  • Die Möglichkeit, benutzerdefinierte Handler zu erstellen, um die Darstellung von Benutzeroberflächenelementen zu verbessern.
  • Direkter Zugriff auf native APIs und eine Abstraktion vieler allgemeiner Anforderungen mobiler und Desktop-Apps, die von der Benutzeroberfläche getrennt sind. Die Grundfunktionen-Bibliothek ermöglicht es einer App, auf Dinge wie das GPS, den Beschleunigungssensor sowie den Batterie- und Netzwerkstatus zuzugreifen. Dutzende von Sensoren und Diensten, die in der Entwicklung für mobile Geräte gängig sind, sind ebenfalls über diese Bibliothek verfügbar.

Überprüfung der Kenntnisse

1.

Welche Umgebung bietet Laufzeitunterstützung für eine WinUI 3-Anwendung?

2.

Welche Markupsprache können Sie zum Gestalten der Benutzeroberfläche für eine .NET MAUI-Anwendung verwenden?