Réutilisation de code entre Windows 8 et Windows Phone 8.
15 Apr 2013•0 j'aime
1 j'aime
Soyez le premier à aimer ceci
afficher plus
•732 vues
vues
Nombre de vues
0
Sur Slideshare
0
À partir des intégrations
0
Nombre d'intégrations
0
Télécharger pour lire hors ligne
Signaler
Windows 8, Windows Phone 8, le même noyau, je ne code alors qu'une fois ? Dans cette session, nous aborderons les différences et les similitudes entre les deux plates-formes, ainsi que la manière de développer du code qui soit portable.
Réutilisation de code entre Windows 8 et Windows Phone 8.
Réutilisation de code entre
Windows 8 et Windows Phone
8.
Arnaud Auroux
Etienne Margraff
#infinitesquare
www.infinitesquare.com
Code / Développement
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
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é
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?
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
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
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
… …
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...
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
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
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
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
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
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()
… …
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()
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
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
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
L’Accélérateur Windows
Ressources
Coaching
Visibilité
aka.ms/accelerateur-windows
Plus d’info ? RDV stand Windows 8
Accélérateur Windows