Xamarin Forms : Cross-Plateform Partie 1


XamarinForm

Introduction :

Aujourd’hui, les applications mobiles sont la tendance du marché. La majorité de la population est équipée de smartphone, de plus en plus d’entreprises se mettent à convertir leurs sites mobiles en applications mobiles.

Les développeurs se retrouvent donc confronter à différents langages de programmation, spécifiques aux plateformes. On trouve principalement :

  • Objective-C pour Ios
  • Java pour Android
  • C# pour Windows Phone

Les entreprises sont souvent amenées à recruter trois équipes différentes, chacune spécialisée dans un langage de programmation particulier.
Xamarin est venu avec l’idée d’écrire des applications mobiles cross-plateform, en utilisant un unique langage riche et performant : le C# ! Mieux encore, les équipes Xamarin sont allées plus loin ! Ils ont sorti une librairie permettant de construire des UI Natives pour Ios, Android et Windows Phone (toujours en utilisant le C#), accompagnant la sortie de la version 3.0 de Xamarin : Xamarin.Forms.
L’astuce consiste à déclarer l’UI avec le couple XAML/C#, en utilisant une API riche composée de plus de 40 contrôles visuels ! Ces contrôles sont bien entendu cross-plateform et sont traduits en leur équivalent natif à la compilation, sous chacun des OS supportés.
Xamarin.Forms va donc nous permettre de produire des applications cross-plateform, dans un budget maîtrisé en utilisant les connaissances et les compétences actuelles.

image1

Avec cette petite série d’articles sur Xamarin.Forms , nous allons voir ensemble qu’il est facile et rapide de créer des applications mobiles grâce à ce puissant framework.

Environnement de développement :

Plusieurs approches sont possibles pour pouvoir développer sur les trois plateformes. L’une d’entre elles est d’utiliser une machine virtuelle sur un Mac pour pouvoir profiter du simulateur Ios, et des simulateurs Windows phone et Android sous Windows.
Une autre solution consiste à développer le tout sur Windows, puis d’utiliser Xamarin studio sur Mac uniquement pour tester la version Iphone de l’application.
Dans tous les cas, il y a plusieurs solutions de configuration de votre environnement de développement. Vous pouvez les trouver directement sur le site de Xamarin.

Les UI (User Interface) ?

En Xamarin.Forms, nous avons la possibilité de définir des UI selon deux approches très différentes, pour un résultat visuel identique :

  • En Code XAML : vous pouvez utiliser le XAML pour définir vos Views, qui seront supportées sur les trois plateformes. XAML est un langage de description graphique qui suit un formalisme XML pour décrire un composant visuel. Le XAML de Xamarin.Forms est un sous-ensemble de XAML, comme celui de Silverlight ou Windows Phone. Il est donc très semblable au XAML traditionnel. Seule ombre au tableau, pour l’instant pas de conception visuelle (designer visuel). Le code XAML doit être écrit à la main. Mais pas de panique, ça s’apprend rapidement !
  • En Code C# : il est un peu plus long à écrire que le XAML, mais pour les développeurs familiers avec du code pur c#, c’est plus simple, plus compréhensible , et surtout cela nécessite qu’une seule compétence.

Alors XAML ou C# ?

La réponse est très simple : pour ceux qui ne sont pas très à l’aise avec l’utilisation de XAML, faire tout en C# est une approche parfaite. Les deux approches sont valables tant qu’il y a pas encore un éditeur visuel ni pour l’un ni pour l’autre.
En revanche, pour ceux qui connaissent le XAML, ils trouveront ainsi un moyen plus moderne pour écrire des UI. XAML est un langage descriptif avec lequel on décrit l’interface graphique de l’application. On explique uniquement ce que l’on voit, 100% du code ainsi écrit correspond à la description de l’objet visuel souhaité. C’est généralement plus simple de se faire une représentation mentale de ce que donne l’interface lorsqu’elle est écrite en XAML.
En C#, la majorité du code consiste à appeler des constructeurs, passer des paramètres, à faire du code totalement orienté objet, et seulement une partie du code consiste à définir le rendu des contrôles (couleur, taille, …).
J’ai récemment participé au développement d’une application mobile en Xamarin et j’ai dû faire des UI en XAML et C# en même temps ! OUI OUI, mixer les deux approches dans vos applications en fonction du besoin est possible !
En effet, les pages dynamiques s’adaptant en fonction des données, seront plus simples à écrire et à maintenir en utilisant le C#. En revanche, les pages trop visuelles, contenant trop de composants, seront plus lisibles si elles sont écrites en XAML.
En conclusion, en fonction du besoin, vous pouvez coder en C# et/ou coder en XAML, et même en code natif ! Xamarin.Forms vous offre toutes les possibilités d’où l’intelligence de l’outil !

PCL (Portable Class Library) ou Shared Project (SP)?

Aujourd’hui il y’a deux façons pour écrire un projet Xamarin.Forms. La première décision à prendre est donc d’utiliser le template du PCL ou du SP.

Image_VS_Capt1

    • Les PCL : la première approche consiste à créer une solution avec un projet commun (appelé PCL) , un projet Android, un projet IOS et un projet Windows Phone. C’est dans cette PCL basée sur un sous-ensemble restreint des fonctionnalités .Net que nous aurons un maximum de code partagé pour les 3 plateformes. La PCL conteindra donc le code business et c’est ici que l’on trouvera nos ViewModel et nos models de données.

imagePCL

    • Les SP : la deuxième approche est de créer une solution avec le Shared Project. Dans ce projet, nous pouvons écrire du code partagé tout en y injectant des spécificités propres à chaque plateforme (avec #ifdef ). À la compilation, chaque fichier est automatiquement copié dans les sous projets Android, IOS et WP.

ImageSP

Sur le site Xamarin, les deux approches semblent être pareilles, néanmoins, il y a des avantages à utiliser le Shared Project. Voici une petite comparaison :

Image_Tableau_Capt2

Alors PCL ou SP ? Bien que Xamarin reste neutre sur ce point et bien que l’utilisation des SP semble plus correcte, la plupart des exemples existants sur internet et sur le site même de Xamarin se basent sur les PCL… Hmm étonnant n’est-ce pas ?

Dans la suite, nous allons voir ensemble comment créer un projet en Xamarin.Forms avec des PCLs et en mélangeant du C#/XAML pour les UI.
Pour mon cas, j’ai utilisé Visual Studio sous une machine virtuelle sur un Mac, mais il est intéressant aussi d’utiliser Xamarin Studio qui n’arrête pas d’évoluer et qui est portable sur Mac et Windows !
Stay tuned pour la suite  😉

Commentez cet article