17.08.2021 | Thomas Münzl | comment icon 0 Comment

Xamarin – eine gute Wahl?

Wer eine mobile App entwickeln möchte, muss sich zu Beginn für eine Technologie entscheiden. Bei einer Vielzahl unterschiedlicher Frameworks und Sprachen ist dies kein leichtes Unterfangen, zumal alle Technologien dem stetigen Wandel unterliegen. Eine grundsätzliche Aussage über die beste Wahl für alle Problemdomänen ist nahezu unmöglich, denn dabei spielen sehr viele unterschiedliche Faktoren eine Rolle.

Mit Xamarin positioniert sich Microsoft mit einer Plattform, die es Entwicklern ermöglicht, iOS-, Android- und Windows-Anwendungen mit Hilfe von .NET zu erstellen. .NET als einheitliche Basis bietet interessante Entwicklungsansätze, speziell mit Xamarin.Forms, weshalb Xamarin gerne als Cross-Plattform-Technologie angesehen wird.

Der Beitrag soll aufzeigen, wieso es sich lohnen kann, Xamarin als Framework für neue Projekte in die Auswahl miteinzubeziehen. Dabei richtet er sich insbesondere an diejenigen, die sich mit der Entwicklung einer mobilen App beschäftigen und vor der Auswahl einer Technologie stehen.

Woher kommt Xamarin?

Xamarin ist mit der Übernahme durch Microsoft fester Bestandteil der .NET-Familie geworden und adressiert hier strategisch den Mobile-App-Markt, speziell Android und iOS als die gängigsten mobilen Betriebssysteme. Die Idee hinter der Plattform ist es, C#-Entwicklern die Entwicklung von Mobile Apps zu ermöglichen und die Stärken des .NET-Ökosystems zu nutzen.

Xamarin bietet Wrapper für plattformabhängige Befehle an, so dass diese auch in C# genutzt werden können. Die plattformunabhängige Code-Basis kann so leicht von den plattformabhängigen Befehlen getrennt werden, so dass diese dann für mehrere Plattformen gleichzeitig genutzt werden kann.

In Xamarin.Forms werden darüber hinaus auch die UI-Beschreibungen plattformunabhängig realisiert, so dass auch diese nur einmal erstellt werden müssen. Die Standard-Bedienelemente wie Textfelder, Buttons oder Radiobuttons und UI-Layouts sind in einheitlichem Markup gebündelt. Das Framework übersetzt diese dann in konkrete, native UI entsprechend des Betriebssystems, für das das App-Paket gebaut wird. Xamarin (wird auch als Xamarin Native bezeichnet) und Xamarin.Forms sind damit unterschiedliche App-Modelle.

Eine UI für alle Plattformen

Xamarin.Forms abstrahiert nicht nur die App-Logik, sondern vereinheitlicht auch die Benutzeroberfläche.
Indem das Aussehen üblicher UI-Elemente einmalig durch Templates, Styles und Ressourcen beschrieben wird, erscheint die App rasch in einheitlichem Design.

Vorgegebene Style-Guides, die das Corporate Design abbilden, können in XAML einmal definiert und überall verwendet werden. Änderungen an den Unternehmensrichtlinien sind im XAML daher direkt auf alle betreffenden UI-Komponenten angewendet. Auch die Integration des immer beliebter werdenden Dark Modes geht so einfach von der Hand.

Das beschleunigt die initiale Entwicklung, hilft aber auch, auf Änderungswünsche zügig reagieren zu können.

Xamarin ist Enterprise-ready

Apps sollen zwar einfach sein, sie können aber mit der Zeit recht schnell komplex werden. Daher muss von Beginn an auf eine gute Erweiterbarkeit und Modifizierbarkeit geachtet werden. Mit der Verwendung des Model-View-ViewModel1 (MVVM) Patterns ist es möglich, die Programmlogik strikt vom UI-Code zu trennen.

Die konsequente Einhaltung der Struktur ermöglicht automatisierte Komponententests, um die korrekte Programmfunktionalität sicherzustellen. Das wiederum reduziert den manuellen Testaufwand erheblich.

Xamarin.Forms wurde lange Zeit nachgesagt, dass es eher für Prototypen oder nur einfache Apps geeignet ist. Diese Zeiten sind aber vorbei. Xamarin.Forms ist mittlerweile so ausgereift, dass es auch bei komplexen Apps eingesetzt werden kann.

Nutzersicht

Alternativlösungen wie PhoneGap2 oder Cordova3 bilden eine Webseite innerhalb eines Web-View-Containers ab. Was aus Entwicklersicht vielversprechend sein mag, nämlich eine bereits existierende Webseite innerhalb einer App anzubieten, stört die Nutzerfreundlichkeit.

Hierbei punktet Xamarin damit, wie die App schlussendlich auf dem Mobilgerät angezeigt wird: Der geschriebene Code wird als native App ausgeliefert. Die Bedienelemente werden dabei in die plattformspezifischen Komponenten gerendert.

Der OS-spezifische Look & Feel bleibt bestehen und kommt besser beim Endnutzer an, da er seine eingeprägten Klicks und Gesten einsetzen kann.

Community & Third-Party

Auch Xamarin kann nicht alle Problemstellungen adressieren und so spielt für die Entscheidung pro oder contra Xamarin natürlich auch die Erweiterbarkeit mit Third-Party-Libraries eine wichtige Rolle.

Xamarin als Framework profitiert von der Übernahme durch Microsoft und erhält dadurch mehr Aufmerksamkeit. Vergleichsweise klein ist aber die Community gegenüber Alternativen wie React Native.

Deshalb ist die Auswahl an Third-Party-Libraries, die Lösungen speziell für Xamarin-Apps bieten, nicht so zahlreich wie bei alternativen Lösungen im JavaScript-Umfeld.

Es sollte also schon im Vorfeld geprüft werden, ob benötigte Libraries existieren. Mit .NET als Basis gibt es jedoch auch Zugriff auf eine Vielzahl von NuGet-Paketen für alle möglichen Szenarien. Einige wenige Firmen haben sich auch auf die Erstellung von Xamarin UI- und Bedienelementen spezialisiert.

Einstieg in Xamarin

Verfügbares Know-how sollte bei der Technologie-Auswahl definitiv berücksichtigt werden, aber auch Xamarin-Neueinsteigern fällt der Beginn denkbar einfach: Die App-Logik wird in C# entwickelt und basiert auf dem etablierten .NET Framework.

Für die Darstellung der Oberflächen wird in Xamarin.Forms die deklarative Markup-Sprache XAML – die eXtensible Application Markup Language – verwendet.

XAML ist keine Exklusivtechnik von Xamarin, sondern findet bereits jahrelang Anwendung in der .NET-Welt. Gängige Steuerelemente und Layouts entstammen aus WPF und unterstützen daher auch in Xamarin vollumfängliche Features wie Data-Binding und die Referenzierung appinterner Komponenten.

Wer bereits durch WPF mit XAML vertraut ist, wird also sehr schnell die App-Entwicklung mit Xamarin meistern.

Einen vollwertigen, visuellen XAML-Designer für die Xamarin-Entwicklung gibt es gegenwärtig nicht, jedoch wurde die Developer Experience mit der Einführung von Hot-Reload4 deutlich verbessert. Mit Hot-Reload werden Änderungen am User Interface an der laufenden Applikation angewendet, was die Entwicklungsdauer stark verringert.

Entwickleraufwand

Abzuwägen ist vor allem auch der finanzielle Aspekt, der im Bereich der Entwicklung mit Xamarin fällig wird. Für Visual Studio fallen Lizenzkosten an, gegebenenfalls ist jedoch die kostenfreie Community-Edition ausreichend. Die Standard-Entwicklungsumgebungen für native Apps – Android Studio und Apples XCode – sind kostenfrei.

Teams, die bereits in der .NET-Welt unterwegs sind, verfügen sicherlich bereits über eine Lizenz von Visual Studio oder nutzen die Rider IDE von JetBrains. Für .NET-Entwicklerteams ist daher nicht mit zusätzlichen Lizenzkosten zu rechnen. Besteht das Entwicklerteam vor allem aus .NET Entwicklern, sind auch erheblich weniger Schulungskosten notwendig, da keine neuen Programmiersprachen (Android: Java oder Kotlin; iOS: ObjectiveC oder Swift) erlernt werden müssen.

In der nativen App-Entwicklung kommen zwei verschiedene Entwicklungsumgebungen mit unterschiedlichen Tools zum Einsatz. Apples XCode und Android Studio sind zwar kostenfrei, die Werkzeuge verlangen aber unterschiedliche Bedienung.

Üblicherweise ist die Entwicklung nativer Apps für mehrere Plattformen nicht einem Entwickler zuzumuten, daher ist hier mit höheren Personalkosten für zwei oder mehrere Entwickler auszugehen.

Auch perspektivisch sind mehrere Entwickler für die Pflege und Weiterentwicklung der nativen Apps einzukalkulieren. Unterschiedliche Implementierungen der Funktionalitäten bergen umso mehr Fehlerpotentiale.

Die Vereinheitlichung der Funktionalitäten in Xamarin reduziert den Aufwand gegenüber der nativen Entwicklung.

Ausgaben und Aufwand in der Vergangenheit sollten sicherlich auch beachtet werden: Bestehender und wiederverwendbarer Code sollte in der Auswahl der Technologie berücksichtigt werden.

Von Xamarin.Forms zu .NET MAUI

Microsoft plant für Ende 2021 die Veröffentlichung von .NET MAUI (.NET Multi-Platform App UI). Hierbei handelt es sich um eine Weiterentwicklung von Xamarin.Forms, in der neben Android-, iOS- und Windows- auch macOS-Anwendungen mithilfe des Frameworks entwickelt werden können.

Ziel ist es also, mehr Zielplattformen ansprechen zu können, die Xamarin-Technologie nachhaltig für die Zukunft zu rüsten und noch mehr Vereinheitlichung zu schaffen.

Bei MAUI gibt es daher nur noch ein einziges Projekt, statt einem Hauptprojekt, sowie für jede Zielplattform ein weiteres. Populäre Design Patterns und Funktionen werden noch besser integriert. Hot-Reload reagiert beispielsweise dann auch auf Änderungen an der Code-Logik.

Trotz Änderungen an der Projektstruktur wird der Migrationsprozess zu MAUI leicht zu bewältigen sein. Bis dahin kann deshalb weiterhin Xamarin.Forms zum Einsatz kommen.

Fazit

Xamarin ist keine Hybrid-Lösung für mobile Apps auf Basis von Webtechnologien. Vielmehr bekommen wir native Apps, die aus einem einheitlichen Crossplattform-Projekt entstehen.

Wer sich für ein App-Framework entscheiden muss und bereits Expertise in .NET-Technologien mitbringt, sollte Xamarin in Erwägung ziehen.

Darüber hinaus sollte geprüft werden, ob Bestandscode eingebracht werden kann: technisches Know-how und bestehende Logik weiterzuverwenden ergibt hier überaus Sinn.

Besonders geeignet zeigt sich Xamarin, wenn eine schnelle Auslieferung wichtiger ist als die Komplexität der App im ersten Schritt. Speziellere Features, die plattformabhängig implementiert werden müssen, lassen sich trotzdem noch im weiteren Verlauf einbauen.

Perspektivisch gesehen ist es empfehlenswert, die Applikation von Beginn an auf Xamarin.Forms aufzubauen. So fällt der Umstieg auf MAUI einfacher.

1 https://docs.microsoft.com/de-de/xamarin/xamarin-forms/enterprise-application-patterns/mvvm

2 https://de.wikipedia.org/wiki/Adobe_PhoneGap

3 https://cordova.apache.org

4 https://docs.microsoft.com/de-de/xamarin/xamarin-forms/xaml/hot-reload

.net .NET MAUI c# microsoft xamarin xamarin.forms xaml

Leave a Comment