Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

Xamarin.Forms Partie 4 les Labs le Tooklit des XF

[new:30/09/2014]Dans les trois précédents articles je vous ai présenté les Xamarin.Forms sous Android et Windows Phone. Il s’agit des bases et nous irons bientôt plus loin. Mais avant je voudrais vous présenter Les Xamarin.Forms.Labs, sorte d’équivalent du Toolkit pour WPF ou Silverlight mélangé avec les plugins de MvvmCross…

Xamarin.Forms

Je renvois le lecteur intéressé aux précédents articles qui expliquent et démontrent ce que sont les Xamarin.Forms. En très rapide pour ceux qui voudraient juste se faire une idée : Les Xamarin.Forms sont à l’UI ce que Xamarin est à C#, c’est à dire une plateforme de développement mobile portable mais qui ajoute la portabilité des UI.

Bien que très jeunes et sorties avec Xamarin 3.0, les XF (Xamarin.Forms) contiennent déjà l’essentiel pour concevoir des applications totalement cross-plateformes tant du point du code (ce que Xamarin faisait déjà) que de l’UI ce qui est révolutionnaire d’autant que cela peut se faire soit en code C# soit en descriptif avec un sous-ensemble de XAML (databinding two-way inclus). Les articles précédents on démontrés ces facettes.

A peine sorties, à peine disponibles les XF sont déjà des stars montantes car tous ceux qui ont pu les approcher et s’en servir, même pour faire des tests, sont tombés sous le charme… Nous tenons enfin une solution complète cross-plateforme qui n’utilise que C#, .NET et XAML !!!

Forcément cela aiguise les envies d’aller plus loin. Et c’est en cours.

Pour info, rappel des épisodes précédents :

 

Xamarin.Forms.Labs

Silvertlight ou WPF ont eu leur “Toolkit”, ensemble de controls et de codes permettant d’étendre les fonctionnalités ofertes “out of the box”. Devenus tout de suite indispensables ces Toolbox font systématiquement partie de tout développement sauf très rares exception.

Il faut comprendre les Xamarin.Forms.Labs de la même façon : se plaçant au-dessus des XF les Labs offrent des fonctionnalités nouvelles, quasi indispensables, le tout en cross-plateforme…

Si je parlais d’un esprit mélangeant Toolbox XAML et Plugins de MvvmCross c’est que si on connait ces deux produits on comprend immédiatement de quoi sont faits les Labs et ce qu’ils apportent :

  • D’une part comme le Toolbox XAML les Labs ajoutent des contrôles ou des services utiles
  • D’autre part comme les plugin MvvmCross ils s’installent via les package Nuget et sont portable dans tous les projets cibles automatiquement.

 

MvvmCross que je vous ai longuement présenté (notamment avec un cycle de 12 vidéo Youtube) utilise la notion de plugin pour ajouter par exemple la sérialisation JSON, la base de données SQLite, etc. Ce qui étend les possibilités cross-plateformes du framework.

Les Xamarin.Forms.Labs agissent de la même façon : une fois installés dans chaque projet cible et dans le projet “noyau” (projet source partagé ou PCL) les Labs fournissent de nouveaux services transparents qui fonctionneront sans code supplémentaire sur toutes les plateformes. Par exemple le support de SQLite ou l’accès aux informations de la machine. Autant de choses qui doivent être faites en natif mais qui grâce aux Labs peuvent être pilotés depuis le code cross-plateforme. On retrouve la notion de framework de base et de plugins installables selon les besoins.

Les Labs sont l’extension natuelle des Xamarin.Forms. En effet, tant que Xamarin ne fournissait qu’un compilateur C# portable (avec .NET) il fallait de toute façon coder les UI à la main dans chaque projet cible. Le besoin d’un système de plugin transparent ne se voyait pas tant que ça. Trois cibles, trois projets distincts avec un peu de C# partagé éventuellement.

Puis vint MvvmCross qui a unifié tout cela en proposant même un Binding portable. Mais avec MvvmCross il faut toujours trois projets pour trois cibles et les UI sont toutes distinctes même si elles se reposent sur des ViewModels communs.

Les Xamarin.Forms en apportant une couche d’abstraction de l’UI rend cette dernière totalement portable. De fait, et comme je vous l’ai montré dans les exemple précédents, on ne travaille plus qu’un seul code central autant pour le code habituel que pour les UI. Les projets cibles existent toujours car chacun doit être compilé en natif dans le respect de sa plateforme, mais on n’y touche pas. Juste deux lignes d’initialisation le reste étant entièrement codé en cross-plateforme !

Il est clair que cette nouvelle donne impose de pouvoir accéder à certains particularités des OS. On peut bien entendu utiliser des #if ou bien bricoler dans les projets natifs certaines choses mais tout cela n’est pas très propre.

Le mieux serait de bénéficier comme dans MvvmCross de “plugins” portables. J’ajoute le support de JSON dans mon “noyau” et je m’en sers dans mes ViewModels. Ce même plugin est ensuite ajouté à chaque projet cible (via Nuget), je compile et chacun se retrouve avec sa version native de JSON alors que mon noyau n’en connait qu’une abstraction…

C’est exactement ce que font les Xamarin.Forms.Labs.

Que trouver dans les XF et où les trouver ?

Xamarin 3.0 est sorti il y a peu de temps et une vingtaine de jours à peine après cette sortie les Labs devenaient déjà une réalité avec une dizaine de contributeurs. On sent que la motivation est là !

Qu���y-a-t-il dans les XF Labs ?

Si les Forms sont jeunes, les XF le sont plus encore mais ils regorgent déjà de code précieux…

  • Contrôle Calendrier,
  • ExtendedTabbedPage,
  • ImageButton,
  • ExtendedLabel,
  • ExtendedViewCell,
  • ExtendedTextCell,
  • AutoComplete,
  • HybridWebView…

 

Côté services on trouve :

  • le Text to Speach
  • L’accès divice (battery, senseurs, accéléromètre…)
  • Les accès Phone (information réseau, passer des appels…)
  • Géolocalisation
  • Accès caméra (Image et video picker, prendre une photo ou une vidéo…)

 

Tout un bloc des XF est dédié à MVVM et même si tout n’est pas encore terminé on dispose déjà de blocs essentiels :

  • ViewModelBase (support de la navigation, IsBusy, Set des propriétés, INPC)
  • RelayCommand (générique avec ou sans paramètre comme dans MVVM Light)
  • ViewFactory (pour lier ViewModel et View)
  • IOC pour la gestion centralisée des services
  • IXFormsApp (gestion des événements de l’appli comme la suspension)

 

En plus de son fonctionnement de base, le framework Labs accèpte lui aussi dans un jeu de poupées russes la notion  de plugin ! On trouve actuellement les plugin suivants pouvant être installés par dessus XF selon les besoins :

  • Sérialisation (ServiceStackV3, ProtoBuf, JSON.NET)
  • Caching (SQLLiteSimpleCache)
  • Conteneur d’injection de dépendance (TinyIOC, AutoFac, Ninject, SimpleInjector)…

 

C’est donc toute une panoplie d’outils indispensables qui est en train de se créer autour des Xamarin.Forms en faisant l’outil privilégié pour tout développement cross-plateforme désormais.

Où trouver les XF Labs ?

On trouve tout sur Nuget.org bien entendu et sur github pour le code source.

Le source : Xamarin.Forms.Labs

Sur Nuget  : liste de tous les package à jour

Conclusion

Trop de bonheur ne nuit pas… Après l’excellente nouvelle que sont les Xamarin.Forms et leurs grandes qualités, cette librairie se trouve être suffisamment porteuse de rêve et d’espoir pour que dans la foulée naissent les Labs, un Toolkit d’ores et déjà très élaboré intégrant la notion de plugin cross-plateforme…

Comme je le dis, presque comme une incantation mystique, il ne manque plus que le designer visuel XAML et le rêve Silverlight de C#/XAML portable partout renaitra de ses cendres encore tièdes. En mieux. Plus fort, plus vigoureux, de l’iPhone à Android en passant par Windows Phone, le Mac le PC…

Les XF et les XF Labs sont les outils d’aujourd’hui et assurément de demain.

Grâce à Dot.Blog vous ne serez pas passer à côté de cette révolution, à vous d’en tirer profit !

Stay Tuned !

blog comments powered by Disqus