25
Réutilisation de code entre Windows 8 et Windows Phone 8. Arnaud Auroux Etienne Margraff Code / Développement #infinitesquare www.infinitesquare.com

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

Embed Size (px)

DESCRIPTION

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.

Citation preview

Page 1: Réutilisation de code entre Windows 8 et Windows Phone 8

Réutilisation de code entre Windows 8 et Windows

Phone 8.Arnaud AurouxEtienne Margraff

Code / Développement

#infinitesquarewww.infinitesquare.com

Page 2: Réutilisation de code entre Windows 8 et Windows Phone 8

INFINITE SQUARE STAND 44 ESPACE WINDOWS 8 & EXPÉRIENCES NUMÉRIQUES

GOLD Certified Partnersur 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.

Page 3: Réutilisation de code entre Windows 8 et Windows Phone 8

• 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

Page 4: Réutilisation de code entre Windows 8 et Windows Phone 8

• 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 ?

Page 5: Réutilisation de code entre Windows 8 et Windows Phone 8

La plateforme Windows 8

Windows Kernel Services

JavaScriptC/C++ C#, VB

Windows Store Apps

Windows Runtime APIsCommunicatio

n & Data

Application Model

Devices & Printing

Graphics & Media

XAML HTML / CSS

HTMLJavaScrip

t

CC++

C#VB

Desktop Apps

Win32

.NET SL

Internet Explore

r

Syst

em

Serv

ices

Vie w

Mod

el

Con

trolle

r

Kern

el

Page 6: Réutilisation de code entre Windows 8 et Windows Phone 8

Direct3D AppC++

XAML AppC# / VB

Windows Phone 8 API

Graphics Audio Media

File System Networking Input

Commerce Base Types Sensors

Common.NET FX

CoreCLR

Direct3DInterop

C++Reuse

La plateforme Windows Phone 8

Page 7: Réutilisation de code entre Windows 8 et 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

……

Page 8: Réutilisation de code entre Windows 8 et Windows Phone 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é

Page 9: Réutilisation de code entre Windows 8 et Windows Phone 8

Le pattern MVVM

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

Page 10: Réutilisation de code entre Windows 8 et Windows Phone 8

demoMVVM EN ACTION

Page 11: Réutilisation de code entre Windows 8 et Windows Phone 8

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

Views Views

Code partagé

- Patterns- PBL- Compilation

conditionnelle- Add as link- …

Models

ViewModels

Page 12: Réutilisation de code entre Windows 8 et Windows Phone 8

• 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 »

Page 13: Réutilisation de code entre Windows 8 et Windows Phone 8

• 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

Page 14: Réutilisation de code entre Windows 8 et Windows Phone 8

La Portable Library

Page 15: Réutilisation de code entre Windows 8 et Windows Phone 8

demoPORTABLE LIBRARY

Page 16: Réutilisation de code entre Windows 8 et Windows Phone 8

• 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é

Page 17: Réutilisation de code entre Windows 8 et Windows Phone 8

Partager du code existant

La solution : Le Pattern AdaptorMasquer 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()…

Page 18: Réutilisation de code entre Windows 8 et Windows Phone 8

Partager une logique identique

La solution : Le Pattern BridgeMasquer une implémentation avec une interface générique

+ function()

- impl: Implementor

Abstraction

+ implementation()

Implementor

…a.impl.implement()…

+ implementation()

ConcreteImplementor + impl: Implementor

+ refinedFunction()

RefinedAbstraction

Page 19: Réutilisation de code entre Windows 8 et Windows Phone 8

demoMISE EN PLACE DE PATTERNS

Page 20: Réutilisation de code entre Windows 8 et Windows Phone 8

La Compilation Conditionnelle

WinRT et WinPRT partagent certains noms d’API

Page 21: Réutilisation de code entre Windows 8 et Windows Phone 8

• 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 a link

Projet W8

Projet Wp8

Fichier partag

é

Page 22: Réutilisation de code entre Windows 8 et Windows Phone 8

demoET SI ON CREAIT LA VERSION WP8 ?

Page 23: Réutilisation de code entre Windows 8 et Windows Phone 8

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

Page 24: Réutilisation de code entre Windows 8 et Windows Phone 8

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

Page 25: Réutilisation de code entre Windows 8 et Windows Phone 8

Accélérateur Windows

Ressources

Coaching

Visibilité

aka.ms/accelerateur-windows

Plus d’info ? RDV stand Windows 8

L’Accélérateur Windows