Mit .NET ins iOS Universum – Xamarin

cubido
von cubido
3 Min. Lesezeit
Dienstag, 10. Dezember 2019

Im nächsten Teil unserer Reihe über iOS Entwicklung kommen wir nun zu einer Technologie, die sich gerade für Dotnet Entwickler ganz besonders anbietet: Xamarin

Xamarin wurde im Jahr 2016 von Microsoft übernommen und war davor ein eigenständiges Unternehmen gleichen Namens. Das Xamarin Framework basiert auf Mono, einem ursprünglich als Linux Version von .NET gestarteten Projekt. Die Geschichte von Xamarin ist insgesamt etwas abenteuerlich, schlussendlich wurde es aber nahtlos in das .NET Ökosystem integriert.

Für ein Team wie unseres, das sich seit vielen Jahren mit C#, Entity Framework und .NET im Allgemeinen beschäftigt, sollte es doch eigentlich ein Leichtes sein, mittels Xamarin in die iOS Entwicklung einzusteigen. Und tatsächlich fühlt man sich doch recht schnell zu Hause und vor allem braucht man weder eine neue Programmiersprache zu lernen, noch sich in eine ungewohnte Entwicklungsumgebung einzuarbeiten.

Was genau ist Xamarin?

Bei Xamarin handelt es sich um die .NET Plattform für mobile Entwicklung und mit Xamarin Forms bekommt man auch gleich plattformübergreifende UI-Elemente mitgeliefert, die man ebenfalls für die Entwicklung einsetzen kann, aber nicht zwangsläufig einsetzen muss.

Die UI entwickelt man bei Xamarin übrigens mit Hilfe von Xaml, einer auf XML basierenden Markup Sprache, die einige sicher bereits von WPF her kennen.  Leider ist Xaml etwas schwerfällig, nicht besonders übersichtlich und das Verhalten der Bindings ist auch nicht immer klar verständlich und nachvollziehbar. Ein wenig erinnert es an das HTML der 90er Jahre. Damals, als es noch kein CSS gab und man alle Formatierungen in Form von Attributen mit ins Markup fummeln musste. Das kann dann schnell in eine lange Wurst von Attributen ausarten und den Code dadurch unübersichtlich machen.

Positiv hervorheben möchte ich, dass Xamarin im Falle von iOS nativen Code erzeugt, also auf dem Gerät am Ende kein Interpreter läuft der irgendwelchen Bytecode ausführt. Bei Android sieht die Sache etwas anders aus, da wird just-in-time kompiliert.

Ist ja alles Net – ein Heimspiel

Visual Studio hat man als .NET-Entwickler ohnehin bereits auf seinem Rechner installiert. Somit ist es meist ausreichend, den Visual Studio Installer zu starten und „Mobile development with .NET“ hinzuzufügen, dann kann es auch schon los gehen mit den kleinen Apps.

Gerade dann wenn man auch bereits Applikationen mit WPF entwickelt hat, ist die Hürde für Xamarin sehr niedrig da man auch hier etwas nutzen kann das man bereits kennt.

Die Beispielapplikation

Als Beispielapplikation haben wir auch diesmal wieder dieselbe App entwickelt wie zuletzt mit React Native oder Capacitor, nämlich eine kleine Businessapp mit klassischem Aufbau, welche Daten und Bilder von einem Webservice lädt und diese Daten dann in Form einer Liste samt dazugehöriger Detailansicht anzeigt. Außerdem wurde auf gängige Sensordaten und die Kamera zugegriffen und es wurden unterschiedliche Typen von Formularfeldern dargestellt.

Unser Fokus bei der Entwicklung lag wieder ganz klar auf iOS als Zielplattform, jedoch haben wir  diesmal mit Visual Studio unter Windows entwickelt.

Sehr schön ist natürlich, dass man sofort loslegen kann ohne erst einmal einen Haufen Zeug installieren zu müssen. Einfach ein neues Projekt erstellen, das Template für eine mobile App mit Xamarin auswählen und schon hat man eine lauffähige App. Diese kann zwar noch nichts, ist aber ein guter Ausgangspunkt.

Mit der Darstellung der Liste und einem ruckfreien Scrolling hatte keines der bisher getesteten Frameworks erkennbare Probleme. Das ist auch bei Xamarin nicht anders.

Recht schnell von der Hand geht auch das Ansprechen der Sensoren. Hierzu bindet man das NuGet Package „Xamarin-Essentials“ ein und hat damit Zugriff auf Accelerometer, Gyoroscope, Geolocation und alles was das Herz sonst noch begehrt.

Der wahrscheinlich größte Vorteil von Xamarin ist die mit dem .NET Ökosystem einhergehende, enorme Menge an Libraries und NuGet Packages die man in die eigenen Applikation einbinden kann.

Und gerade wenn es in Richtung Offlinefähigkeit mit eigener Datenbank gehen soll, kann man bei Xamarin mit dem Enity Framework auf eine etablierte und sehr ausgereifte Technologie setzen.

Fazit

Der wahrscheinlich größte Pluspunkt von Xamarin ist, dass man sich im .NET-Umfeld bewegt und somit sein gesamtes Projekt, inklusive Backend, in Visual Studio entwickeln kann, einer extrem ausgereiften IDE mit sehr sehr guten Debugging-Möglichkeiten.

Hat man auf der Liste der Zielplattformen für die eigene App neben iOS und Android auch Windows stehen, so bekommt man mit Xamarin eine echte Cross-Platform-Lösung welche die Durchlaufzeit eines Projektes deutlich verkürzen kann. Allerdings sollte nicht unerwähnt bleiben, dass .NET Core 3 für UWP aktuell noch nicht unterstützt wird.

Was ich aber auch nicht verschweigen möchte ist, dass die hier verwendete Markup Sprache „Xaml“ etwas umständlich ist. Sie ist auch der Grund, warum ich um WPF bisher eher einen  Bogen gemacht habe. Das Markup wirkt schnell überladen und unübersichtlich, sobald die App einen bestimmten Umfang und das Layout eine gewisse Komplexität erreichen.

Verfasst von Thomas Polaschek