Cas Pratique Du Mode DéConnecté De Silverlight

Preview:

DESCRIPTION

 

Citation preview

22

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

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

33

Tél : 01 46 08 78 50 E-mail : contact@winwise.com 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

44

Sommaire

Silverlight

Couplage : problème et solution

Application occasionnellement connectées

Out Of Browser

Unity

Synchronisation des données : le SyncFramework

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…

66

Silverlight

Plug-in multi-navigateurs

Multi-plateformes

Basé sur .Net

Développement de RIA

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 …

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

99

Couplage : le problème

Applications monolithique

Difficilement maintenable

Difficile à faire évoluer

Non réutilisable

Difficilement testable

Régressions

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

1111

Couplage : Vers la bonne solution

Métier

Interface utilisateur

DataAccess implementation

Métier

Accès aux données

Interface utilisateur

DataAccess Interfaces

1212

Couplage : Vers la bonne solution

Métier

Interface utilisateur

DataAccess implementation

Métier

Accès aux données

Interface utilisateur

DataAccess Interfaces

Factories

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 »

1414

Couplage : la solution

Classe A

Classe A

Classe J

Classe I

Classe J

Classe I

Dépend de

injectés dans

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

1616

Couplage : la solution

Réutilisabilité

Maintenabilité

Souplesse d’architecture

Développement plus agile

Permet de charger une implémentation en fonction du contexte

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

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

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.

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.

2121

Cas pratique : Gestion de clients

010011111110011010101011

010

010011111110011010101011

010

Service

Synchronisation des données offline et online.

2222

Démonstration 1Mode connecté

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.

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

2525

Démonstration 2Mode déconnecté

2626

Unity

Framework IoC

Projet CodePlex

PRISMPattern et practices

Version actuelle :

1.2

Unity For 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.

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()));

2929

Démonstration 3Utilisation de Unity

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

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.).

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

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

3434

Démonstration 4Synchronisation des données

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.

3636

Merci de votre attentionQuestions ?

Recommended