Publicité
Publicité

Contenu connexe

Présentations pour vous(19)

Publicité

Plus de Microsoft(20)

Réutilisation de code entre Windows 8 et Windows Phone 8.

  1. Réutilisation de code entre Windows 8 et Windows Phone 8. Arnaud Auroux Etienne Margraff #infinitesquare www.infinitesquare.com Code / Développement
  2. INFINITE SQUARE STAND 44 ESPACE WINDOWS 8 & EXPÉRIENCES NUMÉRIQUES  Société de conseil, d’expertise, de réalisation et de formation exclusivement sur les technologies de développement d’applications et la plateforme applicative Microsoft.  30 collaborateurs spécialisés sur les techno MS, dont 10 MVP.  GOLD Certified Partner sur 4 domaines de compétences.  Agréé CIR.  Centre de formation agréé. Infinite Square aux TechDays 2013
  3. Agenda • Pourquoi partager du code? • Comparer les deux plateformes • Organiser son code pour qu’il soit portable • Les solutions techniques pour partager le code • L’architecture au service de la portabilité
  4. Pourquoi partager du code ? • Gagner du temps • Homogénéiser les applications • Limiter les risques d’anomalies (un code à tester) • Parce que c’est cool • Mais…. C’est vraiment faisable?
  5. La plateforme Windows 8 Windows Store Apps Desktop Apps View XAML HTML / CSS Controller C/C++ C#, VB JavaScript Model HTML C C# JavaScrip C++ VB Windows Runtime APIs t System Services Communication Graphics & Devices & & Data Media Printing Application Model Internet .NET Explorer Win32 SL Kernel Windows Kernel Services
  6. La plateforme Windows Phone 8 Direct3D C++ Interop Reuse Windows Phone 8 API Common Graphics Audio Media .NET FX File System Networking Input CoreCLR Commerce Base Types Sensors
  7. Comprendre les différences entre les plateformes Ecran Résolutions extrêmement variées Ergonomie 1 ou 2 doigts pour WP8 & 2 mains/souris pour Win8 Runtimes Silverlight, WinPRT pour WP8 & WinRT pour Win8 Arbitraire pour WP8 & Quand ça dépasse 50ms pour Asynchronisme Win8 Background agents Hétérogène pour WP8 & Conditionnel pour Win8 Services de l’OS Launchers d’app pour WP8 & Contrats pour Win8 … …
  8. La recette pour maximiser la portabilité • Séparer les couches logiques (Vues, Métier, Accès au données…) – Le pattern MVVM • Gérer intelligemment le code source et les ressources – Séparation des projets – Partage des fichiers – Gestionnaire de source et Versionning … TFS !  • Abstraire le hardware et l'OS – Patterns Adapter, Bridge, Factory...
  9. Le pattern MVVM Views (XAML / Minimize Code Behind) Binding ViewModels (C#|C++|VB.NET, Binding Source, Implements INotifyPropertyChanged and ICommands) Async Models (C# - business oriented, interfaces with DAL) OS Hardware Data
  10. MVVM EN ACTION
  11. Le Pattern MVVM… portable! Windows 8 Views Code partagé Windows Phone 8 (XAML / Minimize Code Behind) - Patterns Binding - PBL ViewModels - Compilation INotifyPropertyChanged and (C#|C++|VB.NET, Binding Source, Implements Views ICommands) conditionnelle Views - Add as link Async - … Models ViewModels with DAL) (C# - business oriented, interfaces Models OS Hardware Data
  12. Les Ingrédients d’un code « modulaire » • Les features de .NET – Interfaces, Classes Abstraites, Méthodes d‘Extension, … • Portable Library Tools – Multi-Targeting – Interfaces Génériques • Directives de Préprocesseur & Compilation Conditionnelle – #if SYMBOL_DEFINI – #else – #endif
  13. La Portable Library • Sous-ensemble commun aux différents runtimes choisis • Peut être référencé par n'importe quel type de projet • Ne peut référencer que des assemblies de type Portable – Attention a la portabilité de vos dépendances
  14. La Portable Library
  15. PORTABLE LIBRARY
  16. L’architecture au service de la portabilité • Solutions techniques parfois insuffisantes – Types non partagés ou différents – Implémentations complétement différentes • Il faut limiter le code non portable • Solution fréquente : utiliser des patterns adaptés
  17. Partager du code existant La solution : Le Pattern Adaptor Masquer une méthode ou un objet avec une classe intermédiaire Client Adaptor Adaptee + a: Adaptor + a: Adaptee + methodB() + doWork() + methodA() … … a.methodA() a.methodB() … …
  18. Partager une logique identique La solution : Le Pattern Bridge Masquer une implémentation avec une interface générique Abstraction Implementor - impl: Implementor + function() + implementation() … a.impl.implement () … RefinedAbstraction ConcreteImplementor + impl: Implementor + refinedFunction() + implementation()
  19. MISE EN PLACE DE PATTERNS
  20. La Compilation Conditionnelle WinRT et WinPRT partagent certains noms d’API
  21. Add as a link • Permet d‘écrire du code spécifique dans un fichier partagé • Permet de visualiser facilement les différences entre les codes des plateformes • Attention aux gestionnaires de sources Projet W8 Fichier partagé Projet Wp8
  22. ET SI ON CREAIT LA VERSION WP8 ?
  23. Conclusion : il faut un bon process de portage Implémentation Passage en des interfaces Analyse des Revue portable library génériques debugging dépendances d'architecture (si possible) dans les projets spécifiques
  24. Les Ressources • Série d'articles de Pierre Cauchois sur le portage d'applications : – http://blogs.msdn.com/b/pierreca/archive/2012/05/28/strat-233- gies-et-techniques-de-partage-de-code-c-et-xaml-entre-windows- phone-et-windows-8-consumer-preview-partie-1-introduction-les- diff-233-rences-entre-les-plateformes-224-avoir-en-t-234-te.aspx • La série de Stephanie Hertrich sur la portable library : – http://blogs.msdn.com/b/stephe/archive/2012/05/07/partager-du- code-entre-plate-formes-gr-226-ce-224-la-portable-class-library-1- 4.aspx
  25. L’Accélérateur Windows Ressources Coaching Visibilité aka.ms/accelerateur-windows Plus d’info ? RDV stand Windows 8 Accélérateur Windows

Notes de l'éditeur

  1. Intro code / dev
  2. Etienne
  3. Etienne
  4. Arnaud
  5. Arnaud
  6. Etienne
  7. Etienne
  8. Arnaud
  9. Arnaud
  10. Arnaud
  11. Etienne
  12. Etienne
  13. Etienne
  14. Arnaud
  15. Etienne
  16. Arnaud
  17. Etienne
  18. Arnaud
  19. Etienne
  20. Etienne
  21. Etienne
  22. Arnaud
Publicité