Olivier Dahan

Microsoft MVP Silverlight 2013, 2012,
2011, MVP CAD 2010, MVP C# 2009


Membre du Developer Guidance Advisory Council Microsoft

Audit, Conseil, Formation, Développement
[WPF, Silverlight, WinRT, MonoDroid]

Historique

MVVMCross, Okra... Mvvm, WinRT et cross-plateforme Android/Apple

Read this article in your language IT | EN | DE | ES

MVVM est un sujet que j’aime bien. Je vous ai présenté sous forme de livres PDF les frameworks MVVM Light et Jounce, bientôt je vous présenterai deux autres frameworks. Mais leur intérêt est tel que leur nom mérite d’être connu au plus vite.

Okra

C’est le nouveau nom du projet Cocoon sur Codeplex (http://okra.codeplex.com/). Il s’agit d’un framework MVVM que j’ai déjà évoqué ici destiné uniquement au développement sous WinRT.

Comme tous les abonnés MSDN possèdent depuis le 15 aout à la fois la RTM de Windows 8 et celle de Visual Studio 2012, je suis certain qu’il est temps pour les plus avancés d’entre eux de télécharger Okra pour le prendre en main.

J’ai un papier en cours sur Okra, pour les moins pressés et aussi pour ceux qui seront contents d’avoir mes explications en plus du code brut et des docs en anglais. Ca vient, c’est planifié pour septembre.

MVVMCross

Là on touche du lourd... Pas tant le framework lui-même qui est jeune et pas si énorme que ça, mais l’intérêt du sujet et de ce qui gravite autour.

Apple, Android, Windows Phone, WinRT

Je m’explique.

Comme je le disais il y a quelques temps, quel que soit ma fidélité à Windows et encore plus à Windows 8 force est de constater qu’en Europe, Android représente 68,1% des ventes de Smartphones et que côté tablettes, l’Ipad domine encore bien le marché.

Il faudrait être fou ou stupide pour ignorer cette présence et tous les besoins qui naissent autour de ces machines.

Personnellement je déteste Apple sans m’en cacher (la preuve !), et leur perte de vitesse inéluctable déjà sur les Smartphones m’amuse beaucoup. Je l’avais annoncée car cela ne pouvait se passer que de cette façon. Je ne pousserai donc personne à développer sous iOS. Mais en professionnel je sais que mon désamour d’Apple, même s’il a de solides raisons que je pourrais étayer, n’a pas à prendre le dessus sur la réalité de certains marchés où développer pour l’Ipad peut être une obligation.

Donc le développeur doit aujourd’hui pouvoir traiter toutes ces plateformes. Etre un expert en “tout” est impossible.

En revanche être bon en C#, en Xaml et savoir utiliser les bons outils, c’est à la portée de tous ceux qui n’ont pas peur de travailler un peu plus (j’en ai entendu quelques un dire “pour gagner moins”.. tssss mauvais esprits va !).

Or, comment développer pour toutes ces plateformes si différentes sans tout recoder, sans apprendre des tas d’environnements plus ou moins pauvres (comparativement à ceux de MS) ?

MonoTouch et MonoDroid

Je suis devenu un fan de MonoDroid de Xamarin. Un produit pas cher qui permet de développer en C# sur Android (de façon native bien entendu).

Pour le monde Apple il existe un produit frère, MonoTouch, qui fonctionne de façon identique mais qui créé des applications iOS pour l'IPhone et l’Ipad.

Grâce à ces merveilleux produits, il est possible d’utiliser Visual Studio pour développer sous Android ou iOS. C’est vraiment une avancée incroyable pour tous les développeurs C# !

Vous allez me dire, et au fait c’est quoi le rapport entre tout ce discours et MVVMCross ?

MVVMCross : développez une fois pour toutes les plateformes

MVVMCross est une framework MVVM. Jusque là, un de plus me direz vous...

Oui, mais pas un framework MVVM comme les autres.

MVVMCross a été conçu pour permettre le développement cross-plateforme entre toutes les plateformes en tirant partie justement de l’existence de MonoTouch et MonoDroid pour couvrir le monde Apple et celui d’Android...

En gros, car je prépare aussi un papier sur ce framework où j’entrerai dans les détails, 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.

Plus fort encore, MVVMCross ajoute, avec beaucoup d’intelligence, la notion de Binding sous Android et iOS !  De fait, une fois le code commun écrit (modèles et ViewModels) il ne reste plus qu’à faire des vues qui utilisent une extension (comme on peut le faire en xaml) pour indiquer les Bindings sur le ViewModel. On peut programmer les Vues sans une ligne de code C# dans de nombreux cas...

Aussi bien pour WinRT, Windows Phone, Android et iOS sur les smartphones et les tablettes.

Si vous ne trouvez pas ça génial, c’est que vous êtes blasés (ou que vous êtes pro Apple) Sourire

Conclusion

La nature a horreur du vide nous dit la sagesse populaire. La nature de l’homme certainement. Et face à l’éclatement des standards et des plateformes à prendre en compte, il fallait des réponses sérieuses. Les bricolages de “l’hybride” sont des horreurs et HTML 5 n’est pas un standard de développement natif (d’ailleurs depuis qu’il a forké on ne sait même plus de quel HTML 5 on parle...).

Microsoft nous offre dans les mois à venir sa conception du cross-plateforme : tout en WinRT du smartphone au PC. C’est une vision brillante et cohérente, mais tout en Microsoft...

Le monde est plus vaste et quel que soit notre passion pour les produits de Microsoft professionnellement nous ne pouvons ignorer les mastodontes que sont Apple et Android sur le marché. Ce serait de l’autisme.

Grâce à quelques “pionniers” nous disposons aujourd’hui des moyens de développer facilement des applications cross-plateformes.

Que cela soit MonoDroid et MonoTouch ou des idées géniales comme MVVMCross qui tire partie de l’existence des premiers, une voie se dessine enfin pour nous permettre d’envisager l’avenir de façon plus sereine sans faire l’impasse sur telle ou telle autre plateforme.

En fait, grâce à C#.

Alors ce n’est pas demain que vous me verrez faire un papier sur Objective-C ni sur JavaScript ou HTML 5 !

En revanche, bientôt vous en saurez plus sur Okra et MVVMCross.

Encore plein de raisons de...

Stay Tuned !

Comments (7) -

Alex
Alex
8/22/2012 5:50:31 PM

J'avais essayé la version gratuite de MonoDroid, et j'avais trouvé ça trop lent (l'émulateur avait un mal fou...), mais si tu dis que ça vaut le détour, et que tu me permets ce tutoiement, je pense que je vais refaire un coup d'essai, surtout si on peut implémenter du binding dedans ! Laughing

Olivier
Olivier
8/22/2012 6:30:11 PM

@Alex: Je vais être franc avec toi, l'émulateur Android c'est toujours pas une flèche... Même la gestion du clavier est un peu pénible je trouve.
Quand je vosi la vitesse à laquelle se charge l'émulateur Windows Phone, ça laisse songeur.

Mais en utilisant le mode snapshot qui évite que VS soit obligé d'installé à chaque run toutes les libs, on gagne pas mal de temps déjà. Il suffit de créer une machine émulée spéciale pour un développement précis qu'on peut supprimer après pour repartir d'une situation "propre".

La dernière mise à jour de MonoDroid a ajouté le plugin de designer visuel dans VS on peut donc tout faire depuis VS sans utiliser MonoDevelop. C'est aussi une grande avancée.

Quant au binding de MVVMCross c'est vraiment génial. D'ailleurs j'ai des billets qui vont sortir ces jours ci qui montre tout cela en action.

Alex
Alex
9/5/2012 2:29:32 PM

Désolé je réponds longtemps après Smile
Mais depuis je me suis renseigné pour passer à la version pro, il faut savoir que les licences sont vraiment abordable pour les étudiants - si certains passent par là - il suffit de s'adresser à Xamarin pour en bénéficier, ça tombe quand même en dessous des 100€ !

Entendu pour le mode snapshot, dès que je trouve un peu de temps je fonce voir à quoi tout cela ressemble !

Merci encore pour les précieuses informations Smile

Yannick
Yannick
2/1/2013 6:15:42 PM

Hello,

Excellent article comme toujours ...

Je commence un projet de jeu réseau multi plateforme dont l'architecture correspond tout à fait à l'article sur le développement multiplateforme.

En revanche, je n'arrive pas à trouver MVVMCross ....

Auriez-vous un lien de téléchargement ?

Merci

Olivier
Olivier
2/1/2013 7:11:27 PM

Bonjour,
Mvvm Cross se trouve sur github :
https://github.com/slodge/MvvmCross

Il faut prendre la branche "vnext" c'est la plus à jour et celle qui utilise les librairies compatible multi cible de VS 2012 (2010 doit le faire avec un plugin je crois) ce qui simplifie beaucoup les choses.

Bon développement et n'hésitez pas à venir pour nous raconter comment cela prend forme ! Les retours d'expérience intéressent tout le monde.

Yannick
Yannick
2/1/2013 7:52:23 PM

Merci,

c'est pas si facile que votre tuto quand même....

Yannick
Yannick
2/2/2013 9:08:16 PM

Il est bizarre ce site github ...

On ne sait pas quoi télécharger !

Add comment

  Country flag

biuquote
  • Comment
  • Preview
Loading