Xamarin cross-platform mobile development

Xamarin Cross Platform Mobile DevelopmentMet een mobiele App kunt u de gebruikers van uw applicatie of website enorm veel plezier en gemak bieden. Tegenwoordig verwacht uw doelgroep ook niet anders. Wilt u uw App voor iOS, Android, en Windows Phone beschikbaar hebben, dan betekent dat er drie apps ontwikkeld moeten worden én 3 apps onderhouden moeten worden. Een behoorlijke investering. Er zijn inmiddels echter tools beschikbaar waarmee vanuit één codebase een native app ontwikkeld kan worden voor alle drie de mobiele platformen. We hebben verschillende tools  geprobeerd en Xamarin is daar als beste uit naar voren gekomen en is inmiddels bij diverse projecten ingezet.

Wat is Xamarin?

Xamarin is een tool waarmee het mogelijk is om m.b.v. C# en het .NET Framework, native apps te ontwikkelen voor iOS, Android en Windows Phone. De apps kunnen gebruik maken van de native features die de verschillende platformen te bieden hebben en hebben de native look and feel.

Xamarin integreert naadloos met Visual Studio waardoor het voor .NET ontwikkelaars direct vertrouwd aanvoelt. Oplossing die met Xamarin ontwikkeld worden bevatten een 'Shared' component. Dit deel van de oplossing handelt bijvoorbeeld de communicatie met de datastore af en bevat alle business logica. Veelal bevat dit component het merendeel van de regels code die geschreven dient te worden. De shared component van de App is bruikbaar op ieder van de drie afzonderlijke platformen. Daarnaast dient er voor ieder van de drie platformen een User Interface component ontwikkeld te worden. Dit deel wordt ook ontwikkeld in C# maar bevat voor ieder van de platformen specifieke code.
Xamarin biedt voor Delta-N een aantal voordelen. Het is niet meer nodig om kennis in huis te hebben van Objective-C en Java om native apps te ontwikkelen voor de drie belangrijke mobiele platformen. Daarnaast is er een hoge mate van 'code-reuse' over de verschillende platformen heen.

Xamarin Forms

Xamarin Forms is een uitbreiding op Xamarin. Het biedt een framework waarmee snel en eenvoudig ook de user interface onderdeel van de app gedeeld kan worden over de drie afzonderlijke platformen. Dit betekent dat er slechts één user interface ontwikkeld wordt die tijdens compilatie vertaald wordt naar de platform specifieke controls. De native look en feel van de app op de verschillende platformen blijft dus behouden. Alleen in het geval dat er hele specifieke user interface onderdelen gebruikt dienen te worden in de app is er nog platform specifieke C# code noodzakelijk. Met behulp van Xamarin.Forms wordt het percentage 'code reuse' t.o.v. van 'standaard' Xamarin nog verder verhoogd.

Ervaringen

We hebben inmiddels bij diverse projecten gebruik gemaakt van Xamarin.Forms . Zowel voor apps in opdracht van klanten als voor Apps bij  ’interne’ applicaties zoals de tijdschrijfapplicatie en ons Tour de France spel. Hieronder meer over onze ervaringen bij dat laatste traject.

AzureTour is een online Tour de France-spel, waarmee bedrijven gratis een eigen Tour-poule kunnen opzetten. Sinds 2014 is er ook een mobiele App beschikbaar voor iOS, Android, en Windows Phone. Deze Apps zijn alle drie afzonderlijk ontwikkeld als native apps m.b.v. de platform specifieke ontwikkeltools (Xcode, Eclipse en Visual Studio). Dit heeft geresulteerd in drie verschillende apps met ieder een eigen code base die ieder afzonderlijk ontwikkeld en getest dienen te worden. En die bij toevoeging van nieuwe functionaliteit alle drie afzonderlijk aangepast dienden te worden.
Er is voor gekozen om in plaats van de app op de drie platformen aan te passen, de app volledig opnieuw te ontwikkelen in Xamarin Forms.

Met behulp van Xamarin.Forms zijn de AzureTour apps in korte tijd volledig herontwikkeld, met slechts een zeer klein deel aan platform specifieke code. Wel was te merken dat Xamarin.Forms nog in ontwikkeling is. Er ontbraken nog features en we zijn tegen een aantal bugs aangelopen. Gelukkig kan er in dergelijke gevallen gekozen worden om terug te vallen op 'standaard' Xamarin en kan er in C# een stukje platform specifieke code geschreven worden. De eerste ervaringen met Xamarin.Forms waren zeer positief en inmiddels hebben we dus ook bij diverse andere projecten gekozen voor Xamarin Forms!

Binnenkort zullen we op deze plek meer ervaringen met Xamarin trajecten met u delen.