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

Preview:

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

Réutilisation de code entre Windows 8 et Windows

Phone 8.Arnaud AurouxEtienne Margraff

Code / Développement

#infinitesquarewww.infinitesquare.com

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.

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

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

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 / 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

demoMVVM 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

Views Views

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

demoPORTABLE 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 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()…

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

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

Projet W8

Projet Wp8

Fichier partag

é

demoET 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

://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

Accélérateur Windows

Ressources

Coaching

Visibilité

aka.ms/accelerateur-windows

Plus d’info ? RDV stand Windows 8

L’Accélérateur Windows

Recommended