Vue d’ensemble de la création d’applications multiplateformes

Ce guide présente d’abord la plateforme Xamarin. Il explique comment concevoir une application multiplateforme pour optimiser la réutilisation du code. Enfin, comment fournir une expérience native de haute qualité sur les plateformes mobiles iOS et Android.

L’approche utilisée dans ce document peut être utilisée à la fois pour les applications de productivité et les applications de jeux, mais l’accent est mis sur la productivité et l’utilité (applications non-jeux). Consultez Outils Visual Studio pour Unity pour obtenir des conseils de développement de jeux multiplateformes.

L’expression « write-once, run everywhere » est souvent utilisée pour vanter les vertus d’un codebase unique qui s’exécute sans modification sur plusieurs plateformes. Bien qu’elle présente l’avantage de la réutilisation du code, cette approche présente des inconvénients. Deux inconvénients courants sont les applications qui ont un ensemble de fonctionnalités de dénominateur commun le plus petit, et une interface utilisateur d’aspect générique qui ne s’intègre pas correctement dans les plateformes cibles.

Xamarin n’est pas seulement une plateforme « écriture unique, exécutée partout », car l’un de ses points forts est la possibilité d’implémenter des interfaces utilisateur natives spécifiquement pour chaque plateforme. Cependant, avec une conception réfléchie, il est toujours possible de partager la plupart du code d’interface non-utilisateur et d’obtenir le meilleur des deux mondes. Écrivez une fois votre stockage de données et votre code logique métier, puis présentez des interfaces utilisateur natives sur chaque plateforme. Ce document décrit une approche architecturale générale pour atteindre cet objectif.

Voici un résumé des points clés de la création d’applications multiplateformes Xamarin :

  • Utiliser C# - Écrire vos applications en C#. Le code existant écrit en C# peut être porté sur iOS et Android à l’aide de Xamarin facilement, et utilisé dans les applications Windows.
  • Utiliser des modèles de conception MVC ou MVVM : développez l’interface utilisateur de votre application à l’aide du modèle Modèle/Vue/Contrôleur. Concevez votre application à l’aide d’une approche Model/View/Controller ou d’une approche Model/ViewModel où il existe une séparation claire entre le « Modèle » et le reste. Déterminez les parties de votre application qui utiliseront des éléments d’interface utilisateur natifs de chaque plateforme (iOS, Android, Windows, Mac) et utilisez cette recommandation pour diviser votre application en deux composants : « Core » et « User-Interface ».
  • Générer des interfaces utilisateur natives : chaque application spécifique au système d’exploitation fournit une couche d’interface utilisateur différente (implémentée en C# avec l’aide d’outils de conception d’interface utilisateur natifs) :
  1. Sur iOS, utilisez les API UIKit pour créer des applications natives, à l’aide de storyboards pour la couche de présentation, créées dans Xcode.
  2. Sur Android, utilisez Android.Views pour créer des applications natives, en tirant parti du concepteur d’interface utilisateur de Xamarin.
  3. Sur Windows, vous allez utiliser XAML pour la couche de présentation, créée dans le concepteur d’interface utilisateur de Visual Studio ou Blend.
  4. Sur Mac, vous allez utiliser des storyboards pour la couche de présentation, créée dans Xcode.

Les projets Xamarin.Forms sont pris en charge sur toutes les plateformes et vous permettent de créer des interfaces utilisateur qui peuvent être partagées entre les plateformes à l’aide de Xamarin.Forms XAML.

La quantité de réutilisation du code dépend en grande partie de la quantité de code conservée dans le cœur partagé et de la quantité de code spécifique à l’interface utilisateur. Le code principal est tout ce qui n’interagit pas directement avec l’utilisateur, mais fournit plutôt des services pour les parties de l’application qui collectent et affichent ces informations.

Pour augmenter la quantité de réutilisation du code, vous pouvez adopter des composants multiplateformes qui fournissent des services communs sur tous ces systèmes, tels que :

  1. SQLite-net pour le stockage SQL local,
  2. Plug-ins Xamarin pour accéder aux fonctionnalités spécifiques de l’appareil, notamment la caméra, les contacts et la géolocalisation,
  3. Packages NuGet compatibles avec les projets Xamarin, tels que Json.NET,
  4. Utilisation des fonctionnalités du .NET Framework pour la mise en réseau, les services web, les E/S et bien plus encore.

Certains de ces composants sont implémentés dans l’étude de cas Tasky .

Séparer le code réutilisable dans une bibliothèque principale

En suivant le principe de séparation de la responsabilité en superposant votre architecture d’application, puis en déplaçant les fonctionnalités principales indépendantes de la plateforme dans une bibliothèque de base réutilisable, vous pouvez optimiser le partage de code entre les plateformes, comme l’illustre la figure ci-dessous :

En suivant le principe de séparation des responsabilités en superposant votre architecture d’application, puis en déplaçant les fonctionnalités principales indépendantes de la plateforme dans une bibliothèque de base réutilisable, vous pouvez optimiser le partage de code entre les plateformes

Études de cas

Il existe une étude de cas qui accompagne ce document : Tasky Pro. Chaque étude de cas décrit la mise en œuvre des concepts décrits dans ce document dans un exemple réel. Le code est open source et disponible sur github.