Erstellen plattformübergreifender Anwendungen – Übersicht

In diesem Leitfaden wird zunächst die Xamarin-Plattform vorgestellt. Es wird erläutert, wie Sie eine plattformübergreifende Anwendung entwerfen, um die Wiederverwendung von Code zu maximieren. Schließlich erfahren Sie, wie Sie eine hochwertige native Erfahrung auf mobilen iOS- und Android-Plattformen bereitstellen.

Der in diesem Dokument verwendete Ansatz kann sowohl für Produktivitäts-Apps als auch für Spiele-Apps verwendet werden, der Fokus liegt jedoch auf Produktivität und Hilfsprogramm (Nicht-Spieleanwendungen). Anleitungen zur plattformübergreifenden Spieleentwicklung finden Sie unter Visual Studio-Tools für Unity.

Der Ausdruck "write-once, run everywhere" wird häufig verwendet, um die Vorteile einer einzelnen Codebasis zu loben, die unverändert auf mehreren Plattformen ausgeführt wird. Obwohl es den Vorteil der Wiederverwendung von Code hat, hat dieser Ansatz Nachteile. Zwei häufige Nachteile sind Anwendungen, die einen kleinsten gemeinsamen Nenner-Featuresatz haben, und eine generisch aussehende Benutzeroberfläche, die nicht gut in eine der Zielplattformen passt.

Xamarin ist nicht nur eine "write-once, run everywhere"-Plattform, da eine ihrer Stärken die Möglichkeit ist, native Benutzeroberflächen speziell für jede Plattform zu implementieren. Mit durchdachtem Design ist es jedoch immer noch möglich, den großteil des Nicht-Benutzeroberflächencodes zu teilen und das Beste aus beiden Welten zu erhalten. Schreiben Sie Ihren Datenspeicher und Geschäftslogikcode einmal, und stellen Sie native Benutzeroberflächen auf jeder Plattform bereit. In diesem Dokument wird ein allgemeiner architekturbezogener Ansatz zum Erreichen dieses Ziels erläutert.

Im Folgenden finden Sie eine Zusammenfassung der wichtigsten Punkte zum Erstellen plattformübergreifender Xamarin-Apps:

  • Verwenden von C# – Schreiben Sie Ihre Apps in C#. Vorhandener in C# geschriebener Code kann mithilfe von Xamarin problemlos zu iOS und Android portiert und in Windows-Apps verwendet werden.
  • Verwenden von MVC- oder MVVM-Entwurfsmustern : Entwickeln Sie die Benutzeroberfläche Ihrer Anwendung mithilfe des Modell-/Ansichts-/Controllermusters. Entwerfen Sie Ihre Anwendung mithilfe eines Modell-/Sicht-/Controller-Ansatzes oder eines Modell-/Ansicht/ViewModel-Ansatzes, bei dem eine klare Trennung zwischen dem "Modell" und dem Rest besteht. Bestimmen Sie, welche Teile Ihrer Anwendung native Benutzeroberflächenelemente jeder Plattform (iOS, Android, Windows, Mac) verwenden, und verwenden Sie dies als Richtlinie, um Ihre Anwendung in zwei Komponenten aufzuteilen: "Core" und "User-Interface".
  • Erstellen nativer Benutzeroberflächen : Jede betriebssystemspezifische Anwendung bietet eine andere Benutzeroberflächenebene (implementiert in C# mit Hilfe nativer UI-Designtools):
  1. Verwenden Sie unter iOS die UIKit-APIs, um nativ aussehende Anwendungen zu erstellen, indem Sie Storyboards für die in Xcode erstellte Präsentationsebene verwenden.
  2. Unter Android können Sie Android.Views verwenden, um native Anwendungen zu erstellen und dabei den Ui-Designer von Xamarin zu nutzen.
  3. Unter Windows verwenden Sie XAML für die Präsentationsebene, die in Visual Studio oder dem Ui-Designer von Blend erstellt wurde.
  4. Unter Mac verwenden Sie Storyboards für die in Xcode erstellte Präsentationsebene.

Xamarin.Forms-Projekte werden auf allen Plattformen unterstützt und ermöglichen ihnen das Erstellen von Benutzeroberflächen, die plattformübergreifend mit Xamarin.Forms XAML freigegeben werden können.

Der Umfang der Codewiederverwendung hängt weitgehend davon ab, wie viel Code im freigegebenen Kern gespeichert ist und wie viel Code spezifisch für die Benutzeroberfläche ist. Der Kerncode ist alles, was nicht direkt mit dem Benutzer interagiert, sondern Stattdessen Dienste für Teile der Anwendung bereitstellt, die diese Informationen sammeln und anzeigen.

Um die Wiederverwendung von Code zu erhöhen, können Sie plattformübergreifende Komponenten einführen, die allgemeine Dienste für alle diese Systeme bereitstellen, z. B.:

  1. SQLite-net für lokalen SQL-Speicher,
  2. Xamarin-Plug-Ins für den Zugriff auf gerätespezifische Funktionen wie Kamera, Kontakte und Geolocation,
  3. NuGet-Pakete , die mit Xamarin-Projekten kompatibel sind, z. B. Json.NET,
  4. Verwenden von .NET Framework-Features für Netzwerke, Webdienste, E/A und vieles mehr.

Einige dieser Komponenten werden in der Tasky-Fallstudie implementiert.

Trennen von wiederverwendbarem Code in einer Kernbibliothek

Indem Sie dem Prinzip der Trennung der Verantwortung folgen, indem Sie Ihre Anwendungsarchitektur überlagern und dann die plattformunabhängige Kernfunktionalität in eine wiederverwendbare Kernbibliothek verschieben, können Sie die plattformübergreifende Codefreigabe maximieren, wie die folgende Abbildung veranschaulicht:

Indem Sie dem Prinzip der Trennung der Verantwortung folgen, indem Sie Ihre Anwendungsarchitektur überlagern und dann die plattformunabhängige Kernfunktionalität in eine wiederverwendbare Kernbibliothek verschieben, können Sie die plattformübergreifende Codefreigabe maximieren.

Fallstudien

Es gibt eine Fallstudie, die dieses Dokument begleitet – Tasky Pro. In jeder Fallstudie wird die Implementierung der in diesem Dokument beschriebenen Konzepte in einem realen Beispiel erläutert. Der Code ist Open Source und auf GitHub verfügbar.