cas pratique du mode déconnecté de silverlight
DESCRIPTION
TRANSCRIPT
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 : [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
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 ?