SlideShare une entreprise Scribd logo
Réutilisation de code entre
Windows 8 et Windows Phone 8.
Arnaud Auroux
Etienne Margraff
Code / Développement
#infinitesquare
www.infinitesquare.com
INFINITE SQUARE
STAND44ESPACE WINDOWS8& EXPÉRIENCESNUMÉRIQUES
 GOLD Certified Partner
sur 4 domaines de compétences.
 Agréé CIR.
 Centre de formation agréé.
Infinite Square aux TechDays 2013
 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.
• 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é
Agenda
• 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?
Pourquoi partager du code ?
La plateforme Windows 8
Windows Kernel Services
JavaScriptC/C++ C#, VB
Windows Store Apps
Windows Runtime APIs
Communication
& Data
Application Model
Devices &
Printing
Graphics &
Media
XAML HTML / CSS
HTML
JavaScript
C
C++
C#
VB
Desktop Apps
Win32
.NET
SL
Internet
Explorer
SystemServicesView
Model
Controller
Kernel
Windows Phone 8 API
Graphics Audio Media
File System Networking Input
Commerce Base Types Sensors
Common
.NET FX
CoreCLR
Direct3D
Interop
C++
Reuse
La plateforme Windows Phone 8
Comprendre les différences entre les plateformes
1 ou 2 doigts pour WP8 & 2 mains/souris pour Win8
Silverlight, WinPRT pour WP8 & WinRT pour Win8
Arbitraire pour WP8 & Quand ça dépasse 50ms pour Win8
Hétérogène pour WP8 & Conditionnel pour Win8
Launchers d’app pour WP8 & Contrats pour Win8
Résolutions extrêmement variéesEcran
Ergonomie
Runtimes
Asynchronisme
Background agents
Services de l’OS
……
• 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...
La recette pour maximiser la portabilité
Le pattern MVVM
Views
(XAML / Code Behind)
ViewModels
(C#|C++|VB.NET, Binding, INotifyPropertyChanged, ICommands)
Models
(C# - orienté métier, interface avec la couche d’accès aux données)
HardwareOS Data
Binding
Async
MVVM EN ACTION
Le Pattern MVVM… portable!
Views
(XAML / Minimize Code Behind)
ViewModels
(C#|C++|VB.NET, Binding Source, Implements INotifyPropertyChanged and
ICommands)
Models
(C# - business oriented, interfaces with DAL)
HardwareOS Data
Binding
Async
Windows 8 Windows Phone 8
ViewsViews
Code partagé
- Patterns
- PBL
- Compilation
conditionnelle
- Add as link
- …
Models
ViewModels
• 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
Les Ingrédients d’un code « modulaire »
• 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
La Portable Library
La Portable Library
App Windows Store
Startup
Views
Fonctionnalités
spécifiques
App Windows Phone
Startup
Views
Fonctionnalités
spécifiques
Portable Class Library
View Models
Models
Abstraction des
spécificités
Référence Référence
PORTABLE LIBRARY
• 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
L’architecture au service de la portabilité
Partager du code existant
La solution : Le Pattern Adaptor
Masquer une méthode ou un objet avec une classe intermédiaire
+ a: Adaptor
+ doWork()
Client
+ a: Adaptee
+ methodA()
Adaptor
+ methodB()
Adaptee
…
a.methodA()
…
…
a.methodB()
…
Partager une logique identique
La solution : Le Pattern Bridge
Masquer une implémentation avec une interface générique
+ function()
- impl: Implementor
Abstraction
+ implementation()
Implementor
…
a.impl.implement
()
…
+ implementation()
ConcreteImplementor
+ impl: Implementor
+ refinedFunction()
RefinedAbstraction
MISE EN PLACE DE PATTERNS
La Compilation Conditionnelle
WinRT et WinPRT
partagent certains
noms d’API
• 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
Add as link
Projet W8
Projet Wp8
Fichier
partagé
ET SI ON CREAIT LA VERSION WP8 ?
Conclusion : il faut un bon process de portage
Analyse des
dépendances
Revue
d'architecture
Passage en
portable library (si
possible)
Implémentation
des interfaces
génériques dans
les projets
spécifiques
debugging
Les Ressources
• Série d'articles de Pierre Cauchois sur le
portage d'applications :
– http://bit.ly/Kkh0KL
• La série de Stephanie Hertrich sur la portable
library :
– http://bit.ly/J8DmA7
Accélérateur Windows
Ressources
Coaching
Visibilité
aka.ms/accelerateur-windows
Plus d’info ? RDV stand Windows 8
L’Accélérateur Windows

Contenu connexe

Similaire à Réutilisation de code entre windows 8 et windows phone 8

DevOps, quel futur pour les Ops ?
DevOps, quel futur pour les Ops ?DevOps, quel futur pour les Ops ?
DevOps, quel futur pour les Ops ?
Ludovic Piot
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8
davrous
 
Captronic grenoble 01102014 version presentee
Captronic grenoble 01102014 version presenteeCaptronic grenoble 01102014 version presentee
Captronic grenoble 01102014 version presentee
Patrick MOREAU
 
Introduction au développement Windows 8 et Windows Phone 8
Introduction au développement Windows 8 et Windows Phone 8Introduction au développement Windows 8 et Windows Phone 8
Introduction au développement Windows 8 et Windows Phone 8
Microsoft
 
10 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 810 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 8
Microsoft
 
IBM Bluemix Paris Meetup #22-20170315 Meetup @VillagebyCA- Bluemix, présent &...
IBM Bluemix Paris Meetup #22-20170315 Meetup @VillagebyCA- Bluemix, présent &...IBM Bluemix Paris Meetup #22-20170315 Meetup @VillagebyCA- Bluemix, présent &...
IBM Bluemix Paris Meetup #22-20170315 Meetup @VillagebyCA- Bluemix, présent &...
IBM France Lab
 
Créer des applications métier (LOB) pour Windows 8 et Windows Phone 8
Créer des applications métier (LOB) pour Windows 8 et Windows Phone 8Créer des applications métier (LOB) pour Windows 8 et Windows Phone 8
Créer des applications métier (LOB) pour Windows 8 et Windows Phone 8
Microsoft
 
Vivre dans une ère post OS et gérer l'hébergement des applications et la mobi...
Vivre dans une ère post OS et gérer l'hébergement des applications et la mobi...Vivre dans une ère post OS et gérer l'hébergement des applications et la mobi...
Vivre dans une ère post OS et gérer l'hébergement des applications et la mobi...
Microsoft Ideas
 
DDD session BrownBagLunch (FR)
DDD session BrownBagLunch (FR)DDD session BrownBagLunch (FR)
DDD session BrownBagLunch (FR)
Cyrille Martraire
 
System Center 2012 : Montez votre Cloud Privé avec NetApp et Cisco
System Center 2012 : Montez votre Cloud Privé avec NetApp et Cisco System Center 2012 : Montez votre Cloud Privé avec NetApp et Cisco
System Center 2012 : Montez votre Cloud Privé avec NetApp et Cisco
Microsoft Technet France
 
Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5
davrous
 
Codedarmor 2012 - 03/04 - Android, What else?
Codedarmor 2012 - 03/04 - Android, What else?Codedarmor 2012 - 03/04 - Android, What else?
Codedarmor 2012 - 03/04 - Android, What else?
codedarmor
 
TypeScript for dummies
TypeScript for dummiesTypeScript for dummies
TypeScript for dummies
Microsoft
 
IBM Bluemix Paris meetup #23 - 20170425
IBM Bluemix Paris meetup #23 - 20170425IBM Bluemix Paris meetup #23 - 20170425
IBM Bluemix Paris meetup #23 - 20170425
IBM France Lab
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven Design
DNG Consulting
 
Keynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle èreKeynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle ère
Microsoft
 
sfPot aop
sfPot aopsfPot aop

Similaire à Réutilisation de code entre windows 8 et windows phone 8 (20)

DevOps, quel futur pour les Ops ?
DevOps, quel futur pour les Ops ?DevOps, quel futur pour les Ops ?
DevOps, quel futur pour les Ops ?
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8
 
CV REBAI Hamida
CV REBAI HamidaCV REBAI Hamida
CV REBAI Hamida
 
Captronic grenoble 01102014 version presentee
Captronic grenoble 01102014 version presenteeCaptronic grenoble 01102014 version presentee
Captronic grenoble 01102014 version presentee
 
Introduction au développement Windows 8 et Windows Phone 8
Introduction au développement Windows 8 et Windows Phone 8Introduction au développement Windows 8 et Windows Phone 8
Introduction au développement Windows 8 et Windows Phone 8
 
10 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 810 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 8
 
IBM Bluemix Paris Meetup #22-20170315 Meetup @VillagebyCA- Bluemix, présent &...
IBM Bluemix Paris Meetup #22-20170315 Meetup @VillagebyCA- Bluemix, présent &...IBM Bluemix Paris Meetup #22-20170315 Meetup @VillagebyCA- Bluemix, présent &...
IBM Bluemix Paris Meetup #22-20170315 Meetup @VillagebyCA- Bluemix, présent &...
 
MERAZKA Messaoud
MERAZKA MessaoudMERAZKA Messaoud
MERAZKA Messaoud
 
Créer des applications métier (LOB) pour Windows 8 et Windows Phone 8
Créer des applications métier (LOB) pour Windows 8 et Windows Phone 8Créer des applications métier (LOB) pour Windows 8 et Windows Phone 8
Créer des applications métier (LOB) pour Windows 8 et Windows Phone 8
 
Vivre dans une ère post OS et gérer l'hébergement des applications et la mobi...
Vivre dans une ère post OS et gérer l'hébergement des applications et la mobi...Vivre dans une ère post OS et gérer l'hébergement des applications et la mobi...
Vivre dans une ère post OS et gérer l'hébergement des applications et la mobi...
 
DDD session BrownBagLunch (FR)
DDD session BrownBagLunch (FR)DDD session BrownBagLunch (FR)
DDD session BrownBagLunch (FR)
 
System Center 2012 : Montez votre Cloud Privé avec NetApp et Cisco
System Center 2012 : Montez votre Cloud Privé avec NetApp et Cisco System Center 2012 : Montez votre Cloud Privé avec NetApp et Cisco
System Center 2012 : Montez votre Cloud Privé avec NetApp et Cisco
 
Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5
 
Codedarmor 2012 - 03/04 - Android, What else?
Codedarmor 2012 - 03/04 - Android, What else?Codedarmor 2012 - 03/04 - Android, What else?
Codedarmor 2012 - 03/04 - Android, What else?
 
TypeScript for dummies
TypeScript for dummiesTypeScript for dummies
TypeScript for dummies
 
IBM Bluemix Paris meetup #23 - 20170425
IBM Bluemix Paris meetup #23 - 20170425IBM Bluemix Paris meetup #23 - 20170425
IBM Bluemix Paris meetup #23 - 20170425
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven Design
 
Keynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle èreKeynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle ère
 
_JCVFr
_JCVFr_JCVFr
_JCVFr
 
sfPot aop
sfPot aopsfPot aop
sfPot aop
 

Plus de Arnaud Auroux

Conférence windows phone 7
Conférence windows phone 7Conférence windows phone 7
Conférence windows phone 7
Arnaud Auroux
 
Visual studio online
Visual studio onlineVisual studio online
Visual studio online
Arnaud Auroux
 
Accéder aux données avec le windows runtime
Accéder aux données avec le windows runtimeAccéder aux données avec le windows runtime
Accéder aux données avec le windows runtime
Arnaud Auroux
 
Développement d'un composant win rt
Développement d'un composant win rtDéveloppement d'un composant win rt
Développement d'un composant win rt
Arnaud Auroux
 
Tech days 2012 mvvm de a à z
Tech days 2012   mvvm de a à zTech days 2012   mvvm de a à z
Tech days 2012 mvvm de a à z
Arnaud Auroux
 
Industrialiser le développement avec silverlight 4 et wcf ria services
Industrialiser le développement avec silverlight 4 et wcf ria servicesIndustrialiser le développement avec silverlight 4 et wcf ria services
Industrialiser le développement avec silverlight 4 et wcf ria services
Arnaud Auroux
 
Les tests comportementaux avec aspnet core
Les tests comportementaux avec aspnet coreLes tests comportementaux avec aspnet core
Les tests comportementaux avec aspnet core
Arnaud Auroux
 
Cas Pratique Du Mode DéConnecté De Silverlight
Cas Pratique Du Mode DéConnecté De SilverlightCas Pratique Du Mode DéConnecté De Silverlight
Cas Pratique Du Mode DéConnecté De Silverlight
Arnaud Auroux
 

Plus de Arnaud Auroux (8)

Conférence windows phone 7
Conférence windows phone 7Conférence windows phone 7
Conférence windows phone 7
 
Visual studio online
Visual studio onlineVisual studio online
Visual studio online
 
Accéder aux données avec le windows runtime
Accéder aux données avec le windows runtimeAccéder aux données avec le windows runtime
Accéder aux données avec le windows runtime
 
Développement d'un composant win rt
Développement d'un composant win rtDéveloppement d'un composant win rt
Développement d'un composant win rt
 
Tech days 2012 mvvm de a à z
Tech days 2012   mvvm de a à zTech days 2012   mvvm de a à z
Tech days 2012 mvvm de a à z
 
Industrialiser le développement avec silverlight 4 et wcf ria services
Industrialiser le développement avec silverlight 4 et wcf ria servicesIndustrialiser le développement avec silverlight 4 et wcf ria services
Industrialiser le développement avec silverlight 4 et wcf ria services
 
Les tests comportementaux avec aspnet core
Les tests comportementaux avec aspnet coreLes tests comportementaux avec aspnet core
Les tests comportementaux avec aspnet core
 
Cas Pratique Du Mode DéConnecté De Silverlight
Cas Pratique Du Mode DéConnecté De SilverlightCas Pratique Du Mode DéConnecté De Silverlight
Cas Pratique Du Mode DéConnecté De Silverlight
 

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 Code / Développement #infinitesquare www.infinitesquare.com
  • 2. INFINITE SQUARE STAND44ESPACE WINDOWS8& EXPÉRIENCESNUMÉRIQUES  GOLD Certified Partner sur 4 domaines de compétences.  Agréé CIR.  Centre de formation agréé. Infinite Square aux TechDays 2013  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.
  • 3. • 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é Agenda
  • 4. • 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? Pourquoi partager du code ?
  • 5. La plateforme Windows 8 Windows Kernel Services JavaScriptC/C++ C#, VB Windows Store Apps Windows Runtime APIs Communication & Data Application Model Devices & Printing Graphics & Media XAML HTML / CSS HTML JavaScript C C++ C# VB Desktop Apps Win32 .NET SL Internet Explorer SystemServicesView Model Controller Kernel
  • 6. Windows Phone 8 API Graphics Audio Media File System Networking Input Commerce Base Types Sensors Common .NET FX CoreCLR Direct3D Interop C++ Reuse La plateforme Windows Phone 8
  • 7. Comprendre les différences entre les plateformes 1 ou 2 doigts pour WP8 & 2 mains/souris pour Win8 Silverlight, WinPRT pour WP8 & WinRT pour Win8 Arbitraire pour WP8 & Quand ça dépasse 50ms pour Win8 Hétérogène pour WP8 & Conditionnel pour Win8 Launchers d’app pour WP8 & Contrats pour Win8 Résolutions extrêmement variéesEcran Ergonomie Runtimes Asynchronisme Background agents Services de l’OS ……
  • 8. • 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... La recette pour maximiser la portabilité
  • 9. Le pattern MVVM Views (XAML / Code Behind) ViewModels (C#|C++|VB.NET, Binding, INotifyPropertyChanged, ICommands) Models (C# - orienté métier, interface avec la couche d’accès aux données) HardwareOS Data Binding Async
  • 11. Le Pattern MVVM… portable! Views (XAML / Minimize Code Behind) ViewModels (C#|C++|VB.NET, Binding Source, Implements INotifyPropertyChanged and ICommands) Models (C# - business oriented, interfaces with DAL) HardwareOS Data Binding Async Windows 8 Windows Phone 8 ViewsViews Code partagé - Patterns - PBL - Compilation conditionnelle - Add as link - … Models ViewModels
  • 12. • 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 Les Ingrédients d’un code « modulaire »
  • 13. • 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 La Portable Library
  • 14. La Portable Library App Windows Store Startup Views Fonctionnalités spécifiques App Windows Phone Startup Views Fonctionnalités spécifiques Portable Class Library View Models Models Abstraction des spécificités Référence Référence
  • 16. • 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 L’architecture au service de la portabilité
  • 17. Partager du code existant La solution : Le Pattern Adaptor Masquer une méthode ou un objet avec une classe intermédiaire + a: Adaptor + doWork() Client + a: Adaptee + methodA() Adaptor + methodB() Adaptee … a.methodA() … … a.methodB() …
  • 18. Partager une logique identique La solution : Le Pattern Bridge Masquer une implémentation avec une interface générique + function() - impl: Implementor Abstraction + implementation() Implementor … a.impl.implement () … + implementation() ConcreteImplementor + impl: Implementor + refinedFunction() RefinedAbstraction
  • 19. MISE EN PLACE DE PATTERNS
  • 20. La Compilation Conditionnelle WinRT et WinPRT partagent certains noms d’API
  • 21. • 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 Add as link Projet W8 Projet Wp8 Fichier partagé
  • 22. ET SI ON CREAIT LA VERSION WP8 ?
  • 23. Conclusion : il faut un bon process de portage Analyse des dépendances Revue d'architecture Passage en portable library (si possible) Implémentation des interfaces génériques dans les projets spécifiques debugging
  • 24. Les Ressources • Série d'articles de Pierre Cauchois sur le portage d'applications : – http://bit.ly/Kkh0KL • La série de Stephanie Hertrich sur la portable library : – http://bit.ly/J8DmA7

Notes de l'éditeur

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