37

Cas Pratique Du Mode DéConnecté De Silverlight

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Cas Pratique Du Mode DéConnecté De Silverlight
Page 2: Cas Pratique Du Mode DéConnecté De Silverlight

22

Cas pratique du mode déconnecté de SilverlightMohammed Zied Nemilihttp://www.zied.fr

Arnaud Aurouxhttp://blogs.codes-sources.com/thadeus

Page 3: Cas Pratique Du Mode DéConnecté De Silverlight

33

Tél : 01 46 08 78 50 E-mail : [email protected] Site web : www.winwise.com

1ère société d’expertise spécialisée sur les nouvelles technologies Microsoft

90 consultants experts certifiés sur les dernières technologies Microsoft , plusieurs MVP et 1 Regional Director

4 centres de compétences pour réaliser vos projets à forte valeur ajoutée :Travail collaboratif Business Intelligence & Data ManagementArchitecture et Cycle de vie des applications Interfaces Utilisateurs et « Smart Clients »

1er centre de formation en France sur les technologies .Net et la BILa solidité financière du groupe ALTENPour tout renseignement : Stand N°C13, espace Communications Unifiées et

Collaboration

Page 4: Cas Pratique Du Mode DéConnecté De Silverlight

44

Sommaire

Silverlight

Couplage : problème et solution

Application occasionnellement connectées

Out Of Browser

Unity

Synchronisation des données : le SyncFramework

Page 5: Cas Pratique Du Mode DéConnecté De Silverlight

55

Silverlight

RIA : Rich Internet Application

Application riche déployée sur le Web dans un contexte sécurisé.

Application offrant une grande expérience utilisateur : Interactivité avec l’utilisateurUtilisation de médias (audio/vidéo)Animations/Transformations…

Page 6: Cas Pratique Du Mode DéConnecté De Silverlight

66

Silverlight

Plug-in multi-navigateurs

Multi-plateformes

Basé sur .Net

Développement de RIA

Page 7: Cas Pratique Du Mode DéConnecté De Silverlight

77

Silverlight

Silverlight 1Septembre 2007

• Javascript• Xaml

Silverlight 2Octobre 2008

• Code managé• Contrôle

personnalisé• Data Binding• Styling• …

Silverlight 3Juillet 2009

• Bitmap effects• 3D• Performances• Métier• …• Out-Of-Browser

Silverlight 4 BetaNovembre 2009

• Webcam• Impression• Media• Performances• Métier• …• Out-Of-Browser

Applications métier à très fort potentiel, complexe mais …

Page 8: Cas Pratique Du Mode DéConnecté De Silverlight

88

Couplage : le problème

Code spaghetti

Business Class 1

Business Class 2

Business Class 3

Data Access Class 1

Data Access Class 2

Data Access Class 1

Page 9: Cas Pratique Du Mode DéConnecté De Silverlight

99

Couplage : le problème

Applications monolithique

Difficilement maintenable

Difficile à faire évoluer

Non réutilisable

Difficilement testable

Régressions

Page 10: Cas Pratique Du Mode DéConnecté De Silverlight

1010

Couplage : Vers la bonne solution

Identifier les

dépendances

• Le couplage existant entre les classes

Extraire les interfaces

• Polymorphisme

Introduire

les factories

• Usine d’objets

Page 11: Cas Pratique Du Mode DéConnecté De Silverlight

1111

Couplage : Vers la bonne solution

Métier

Interface utilisateur

DataAccess implementation

Métier

Accès aux données

Interface utilisateur

DataAccess Interfaces

Page 12: Cas Pratique Du Mode DéConnecté De Silverlight

1212

Couplage : Vers la bonne solution

Métier

Interface utilisateur

DataAccess implementation

Métier

Accès aux données

Interface utilisateur

DataAccess Interfaces

Factories

Page 13: Cas Pratique Du Mode DéConnecté De Silverlight

1313

Couplage : la solution

Factories : Utilisation d'un container IoC

La classe n’instancie pas

ses dépendances

Les dépendances sont injectées

par le container

Injection de dépendances

ou« Principe d 'Holywood »

Page 14: Cas Pratique Du Mode DéConnecté De Silverlight

1414

Couplage : la solution

Classe A

Classe A

Classe J

Classe I

Classe J

Classe I

Dépend de

injectés dans

Page 15: Cas Pratique Du Mode DéConnecté De Silverlight

1515

Couplage : la solution

Métier

Interface utilisateur

DataAccess implementation

Métier

Accès aux données

Interface utilisateur

DataAccess Interfaces

Container IoC

Injection de dépendances

Résolution de dépendances

Page 16: Cas Pratique Du Mode DéConnecté De Silverlight

1616

Couplage : la solution

Réutilisabilité

Maintenabilité

Souplesse d’architecture

Développement plus agile

Permet de charger une implémentation en fonction du contexte

Page 17: Cas Pratique Du Mode DéConnecté De Silverlight

1717

Cas pratique du mode déconnecté de SilverlightGestion de clients

Nous allons illustrer le découplage au sein des applications à travers un cas pratique : une

application fonctionnant en mode online / offline

Page 18: Cas Pratique Du Mode DéConnecté De Silverlight

1818

Cas pratique : Gestion de clients

Application Silverlight occasionnellement connectée

Isolated Storage pour le stockage en local

Out Of Browser pour télécharger l’application en local

Sync framework pour synchroniser les données distantes

Unity pour l’injection de dépendances

Page 19: Cas Pratique Du Mode DéConnecté De Silverlight

1919

Cas pratique : Gestion de clients

Service0100111110101000101010001101011010111001101010101101

00

DataStore

Application connectée.

Appel d’un Web Service pour la lecture et l’écriture de données.

Page 20: Cas Pratique Du Mode DéConnecté De Silverlight

2020

Cas pratique : Gestion de clients

Service 010011111110011010101011

010

010011111110011010101011

010

Service data

Client data

Application déconnectée.

Le ViewModel utilise l’Isolated storage.

ViewModelEntité logique permettant de faire le lien entre les données et le rendu visuel.

Page 21: Cas Pratique Du Mode DéConnecté De Silverlight

2121

Cas pratique : Gestion de clients

010011111110011010101011

010

010011111110011010101011

010

Service

Synchronisation des données offline et online.

Page 22: Cas Pratique Du Mode DéConnecté De Silverlight

2222

Démonstration 1Mode connecté

Page 23: Cas Pratique Du Mode DéConnecté De Silverlight

2323

Les applications occasionnellement connectées

Destinées à des utilisateurs nomades.

L’application peut fonctionner aussi bien en mode online qu’en mode offline.

Téléchargement de l’application et des données en local.

L’isolated storage est mis à contribution.

Page 24: Cas Pratique Du Mode DéConnecté De Silverlight

2424

Silverlight Out Of Browser

Le XAP ainsi que des métadonnées sont stockés localement .

L’application est accessible en mode connecté et déconnecté.

L’application peut-être notifiée du changement d’état du réseau.

Le quota pour le stockage isolé passe de 1 à 25 Mo.

http://www.slapp.net

SlApp

Page 25: Cas Pratique Du Mode DéConnecté De Silverlight

2525

Démonstration 2Mode déconnecté

Page 26: Cas Pratique Du Mode DéConnecté De Silverlight

2626

Unity

Framework IoC

Projet CodePlex

PRISMPattern et practices

Version actuelle :

1.2

Unity For Silverlight

Page 27: Cas Pratique Du Mode DéConnecté De Silverlight

2727

Unity

Propose un container d’injection de dépendances.

Supporte l’injection de dépendances par constructeur, par setteur ou encore par appel de méthodes.

Résout les dépendances récursivement.

Les dépendances peuvent être déclarées par code ou via un fichier XML.

Page 28: Cas Pratique Du Mode DéConnecté De Silverlight

2828

Exemples Unity

IUnityContainer container = new UnityContainer();

// Map l'interface IMainViewModel à l'implémentation MainViewModel.container.RegisterType<IMainViewModel, MainViewModel>();

// La même chose en mode "Singleton"container.RegisterType<IMainViewModel, MainViewModel>(new ContainerControlledLifetimeManager());

// La même chose avec "une instance par thread" :container.RegisterType<IMainViewModel, MainViewModel>(new PerThreadLifetimeManager());

// Spécifie comment notre Object doit être construit// (ici en spécifiant un context de test):container.RegisterType<Object, IObject>(new InjectionConstructor(new TestContext()));

Page 29: Cas Pratique Du Mode DéConnecté De Silverlight

2929

Démonstration 3Utilisation de Unity

Page 30: Cas Pratique Du Mode DéConnecté De Silverlight

3030

Silverlight Out Of Browser

En mode déconnecté :Modifications de l’entrepôt de données local.Modifications de l’entrepôt de données distant.

… de façon désynchronisée.

SlApp

010011111010100010101000110101101011100110101010110100

Réseau

Isolated storage

Page 31: Cas Pratique Du Mode DéConnecté De Silverlight

3131

Sync Framework

Plateforme de synchronisation.

Permet l’itinérance, le partage et l’accès en mode déconnecté des données.

Fournit un modèle extensible qui permet d’intégrer plusieurs sources de données dans un écosystème de synchronisation.

Fonctionne sur un système de fournisseurs de synchronisation qui fournit la logique de synchronisation pour un type précis d’entrepôt de données.

Plusieurs fournisseurs sont fournis en standard (File system, Azure, etc.).

Page 32: Cas Pratique Du Mode DéConnecté De Silverlight

3232

Sync Framework

Sync Provider

Votre Application

Sync Provider

Orchestrateur de synchronisation

Données Données

delta

Détection des changements Détection des changements

delta

Page 33: Cas Pratique Du Mode DéConnecté De Silverlight

3333

Sync FrameworkAujourd’hui pas de version Silverlight du Sync Framework

(2010 ?)Pas de tracking de certaines modifications.Silverlight ne peut pas compter sur un autre participant

pour maintenir à jour ses métadonnées.

WebService

DataStore

Une image de l’entrepôt de données est enregistrée avant d’être renvoyée au client

Le client Silverlight gère lui-même le tracking de certaines modifications

Page 34: Cas Pratique Du Mode DéConnecté De Silverlight

3434

Démonstration 4Synchronisation des données

Page 35: Cas Pratique Du Mode DéConnecté De Silverlight

3535

Conclusion

Silverlight tends vers un aspect client « lourd / léger » combinant ainsi le meilleur des 2 mondes.

Les outils sont là pour le développement d'applications de très grandes envergures.

Recommandons l’utilisation de l’IoC au quotidien.

A partir d’une certaine complexité, l’IoC s’impose.

A la portée de tout le monde.

Page 36: Cas Pratique Du Mode DéConnecté De Silverlight

3636

Merci de votre attentionQuestions ?

Page 37: Cas Pratique Du Mode DéConnecté De Silverlight