6. Développement Mobile vs Xamarin
Développement d’application natives en
silos, Code non réutilisable, langage
spécifique à la plateforme
Partage du code commun entre les
apps, Développement en C#
7. Approche Xamarin
Xamarin traditionnelle Xamarin Forms :
Pros : Rapide et facile, Plus de partages de code,
contrôles natifs
Cons : N’a pas accès a tous les contrôles UI
10. MVVM, qu’est ce que c’est?
« Patron de conception (design pattern) logicielle qui permet, tel le modèle MVC
(modèle-vue-contrôleur), de séparer la vue de la logique et de l'accès aux
données en accentuant les principes de binding et d’événement."
11. Principes du MVVM
• Databinding
Indique un mapping entre une propriété du contrôle UI et une propriété du View
model
• INotifiedPropertyChanged, INotifiedCollectionChanged
Interface qui définit un événement qui est déclenché chaque fois que les données
sous-jacent sont changées
• ICommand
Fournir un moyen d'informer le ViewModel que quelque chose s’est passé sur l’UI
13. MVVMCross Plateforme
Project-UI par platform:
- Views
- Android, iOS, Windows
Phone
Code partagé:
- Model
- ViewModel
- Connection aux webservices
- Logique applicative (Navigation…)
14. Avantage de MvvmCross
- MVVM
- UI Native
- Portabilité
- Plus de partage de code
- Testabilité
- Two way data binding
- Architecture Unifiée
- Navigation
- IOC
- Messenging
- Plugins
- …
16. MvvmCross : Inversion de contrôle
- Framework IoC intégré
- Service Locator pattern et injection de dépendance
- Permet a du code spécifique a une plateforme d’être injecté
- Mapping Interface/implementation
- Remplaçable par d’autre Framework d’IoC
18. MvvmCross : Navigation
- Logique implementé dans le core
- Navigation de ViewModel a ViewModel
Le framework se charge des transitions de pages
- Customation possible par le presenter
(Tab navigation, Hambuger Menu….)
Application natives
Performances optimales
Écriture de l’application 3 fois
Délai de mise sur le marché important
Coût élevé (maintenance, formation, recrutement)
Xamarin
Performances optimales
Partage du code commun
Mise sur le marché rapide
Réduction des couts (moins de code, équipes rapidement opérationnelles)
Chaque méthode d’un SDK (Android, iOS, Windows Phone) est encapsulée à l’identique en C#
Sur chaque plateforme toutes les fonctionnalités sont conservées. Un développeur expérimenté en Android ou iOS s’y retrouve très rapidement car il écrit les mêmes noms de fonctions et utilise les mêmes classes.
Xamarin apporte la compatibilité du code C# et de la platforme .Net sous Android et iOS
Base du code : Logique métier, les appels de services, le stockage…
Projet plateforme : L’UI, les navigations, les composants propres a chaque SDK
Xamarin.Form, l’UI devient portable avec le même code. write once, run everywhere.
Pour l’instant le procédé est jeune, les composants utilisables restent peu nombreux et il n’existe pas de designer visuel, tout se fait par code C# ou XAML.
Créer par Microsoft, et adapté à la réalisation d’applications utilisant le XAML ( windows phone, wpf, silverlight)
Il permet d’architecturer efficacement une application afin d’en faciliter la maintenabilité et la testabilité
Model, en français « le modèle », correspond aux données
View, en français « la vue », correspond à tout ce qui sera affiché, comme la page, les boutons, etc.
View Model, en francais « modèle de vue », c’est la colle entre le modèle et la vue. Il s’agit d’une classe qui fournit une abstraction de la vue. il s’appuie sur la puissance du binding pour mettre à disposition de la vue les données du modèle. Il s’occupe également de gérer les commandes que nous verrons un peu plus loin.
Le but de MVVM est de faire en sorte que la vue n’effectue aucun traitement, elle ne doit faire qu’afficher les données présentées par le view-model. C’est le view-model qui a en charge de faire les traitements et d’accéder au modèle.
MVVMCross est une framework MVVM conçu pour le développement d’application cross-plateforme
avec MVVMCross vous écrivez une seule fois le code de vos Modèles et ViewModels et vous n’avez plus qu’à créer les Views pour chaque plateforme.