Benjamin Piontek CATIS GmbH

Der Vorteil von geteiltem Code liegt auf der Hand: Jede Zeile Code, den man auf allen Plattformen ausführen kann, spart Entwicklungszeit.

Xamarin liefert die Basis, um Apps für die großen mobilen Plattformen in C# schreiben zu können. MvvmCross liefert die Werkzeuge, um möglichst viel Code plattformunabhängig zu schreiben.

Seit Xamarin auf dem Markt ist, hat sich die C#-Welt erheblich vergrößert. Mit Zugriff auf Android, Mac und iOS können C#-Entwickler heutzutage alle wichtigen Plattformen mit einer Programmiersprache ansprechen. Doch während Xamarin sich um die Vereinheitlichung der Programmiersprache kümmert, müssen sich die Entwickler trotzdem mit verschiedenen Entwurfsmustern der jeweiligen Plattformen auseinandersetzen.

Geteiltes Leid ist halbes Leid

Das Ziel aller Cross-Plattform-Ansätze ist das Teilen von möglichst viel Programmcode auf allen Zielplattformen. Der Vorteil von geteiltem Code liegt auf der Hand: Jede Zeile Code, den man auf allen Plattformen ausführen kann, spart Entwicklungszeit.

Grundsätzlich lässt sich Code dann gut teilen, wenn keine plattformspezifischen Funktionen aufgerufen werden. Das trifft vor allem auf die Datenschicht und die Businesslogik zu. Auf der anderen Seite stehen das UI und plattformspezifische Features wie beispielsweise Apples Siri oder Microsofts Cortana. Code für diese Ebene ist nur sehr eingeschränkt teilbar.

Unterschiedliche Entwurfsmuster

Eine weitere Herausforderung beim Teilen von Programmcode ist das unter iOS und Android übliche Entwurfsmusters Model View Controller, kurz MVC. Bei MVC wird die App in die drei namensgebenden Schichten aufgeteilt:

  • Die View zeigt Daten aus dem Model an und gibt Interaktionen an den Controller weiter.
  • Der Controller steuert die View, verarbeitet Nutzerinteraktionen und ändert Daten im Model.
  • Das Model beinhaltet die Daten und die Businesslogik.

Da der Controllercode das UI direkt manipuliert, muss er mit den plattformspezifischen UI-Elementen arbeiten. So lässt sich der Controllercode nur schlecht teilen.

Unter Windows hat sich das Entwurfsmuster Model View ViewModel, kurz MVVM, etabliert. MVVM ist mit MVC verwandt und definiert ebenfalls drei Schichten (Abb. 1):

  • Die View bindet sich via Databinding an das ViewModel und reagiert auf Aktualisierungen im ViewModel.
  • Das ViewModel beeinflusst die Daten im Model, macht Daten öffentlich sichtbar und benachrichtigt über Änderungen an den öffentlichen Daten.
  • Das Model beinhaltet die Daten und die Businesslogik.

Der für die Cross-Plattform-Entwicklung wichtige Punkt ist das Data Binding, bei dem sich die View mit dem ViewModel verbindet, ohne dass das ViewModel die View kennen muss. Die Benachrichtigung bei Änderungen des ViewModels erfolgt über Events. Die Data Bindings reagieren auf diese Events und aktualisieren die View, wenn sich die Daten ändern.

Abb. 1: Vergleich MVVM und MVC

Abb. 1: Vergleich MVVM und MVC

MvvmCross

MvvmCross ist ein für Xamarin entwickeltes Framework mit dem Ziel, durch die einheitliche Verwendung von MVVM möglichst viel Programmcode zwischen den Plattformen zu teilen. MvvmCross wird quelloffen über ein GitHub Repository von einer aktiven Community stetig weiterentwickelt. Auch wenn das Framework mittlerweile sehr umfassend ist, besteht es im Kern aus einer Handvoll Funktionen, die die Verwendung von MVVM auf Xamarin-Plattformen ermöglichen. Die wichtigsten Funktionen sind dabei

  • ein eigener, plattformunabhängiger App-Kern, der die Kontrolle der App auf die ViewModel-Ebene verschiebt,
  • Databindings für das UI der Nicht-Windows-Plattformen,
  • eine einheitliche Navigationsstruktur auf ViewModel-Ebene.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Windows Developer 8.17 - "Auf Nummer sicher"

Alle Infos zum Heft
579804760MvvmCross – für teilbare Xamarin-Apps auf allen Plattformen
X
- Gib Deinen Standort ein -
- or -