2. Caspratique du mode déconnecté de Silverlight Mohammed ZiedNemili http://www.zied.fr Arnaud Auroux http://blogs.codes-sources.com/thadeus
3. 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 RegionalDirector 4 centres de compétences pour réaliser vos projets à forte valeur ajoutée : Travail collaboratif Business Intelligence & Data Management Architecture et Cycle de vie des applications Interfaces Utilisateurs et « Smart Clients » 1er centre de formation en France sur les technologies .Net et la BI La solidité financière du groupe ALTEN Pour tout renseignement : Stand N°C13, espace Communications Unifiées et Collaboration
4. Sommaire Silverlight Couplage : problème et solution Application occasionnellement connectées Out Of Browser Unity Synchronisation des données : le SyncFramework
5. 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’utilisateur Utilisation de médias (audio/vidéo) Animations/Transformations …
8. Couplage : le problème Code spaghetti Business Class 1 Data Access Class 1 Business Class 2 Data Access Class 2 Business Class 3 Data Access Class 1
9. Couplage : le problème Applications monolithique Difficilement maintenable Difficile à faire évoluer Non réutilisable Difficilement testable Régressions
11. Couplage : Vers la bonne solution Métier Accès aux données Interface utilisateur Interface utilisateur Métier DataAccess Interfaces DataAccessimplementation
12. Couplage : Vers la bonne solution Métier Accès aux données Interface utilisateur Interface utilisateur Métier DataAccess Interfaces Factories DataAccessimplementation
13. Couplage : la solution Injection de dépendances ou « Principe d'Holywood »
14. Couplage : la solution Classe I Classe A Dépend de Classe J Classe I Classe A injectés dans Classe J
15. Couplage : la solution Métier Accès aux données Interface utilisateur Interface utilisateur Métier DataAccess Interfaces Injection de dépendances Résolution de dépendances DataAccessimplementation Container IoC
16. Couplage : la solution Réutilisabilité Maintenabilité Souplesse d’architecture Développement plus agile Permet de charger une implémentation en fonction du contexte
17. Cas pratique du mode déconnecté de Silverlight Gestion de clients Nous allons illustrer le découplage au sein des applications à travers un cas pratique : une application fonctionnant en mode online / offline
18. 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 Syncframework pour synchroniser les données distantes Unity pour l’injection de dépendances
19. Cas pratique : Gestion de clients Service 010011111010100010101000110101101011100110101010110100 DataStore Application connectée. Appel d’un Web Service pour la lecture et l’écriture de données.
20. Cas pratique : Gestion de clients Client data Service data Service 010011111110011010101011010 010011111110011010101011010 ViewModel Entité logique permettant de faire le lien entre les données et le rendu visuel. Application déconnectée. LeViewModel utilise l’Isolatedstorage.
21. Cas pratique : Gestion de clients Service 010011111110011010101011010 010011111110011010101011010 Synchronisation des données offline et online.
23. 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’isolatedstorage est mis à contribution.
24. 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
27. 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.
28. Exemples Unity IUnityContainercontainer = 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()));
30. Silverlight Out Of Browser SlApp Réseau 010011111010100010101000110101101011100110101010110100 Isolatedstorage 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.
31. 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.).
32. Sync Framework Votre Application Orchestrateur de synchronisation delta delta Sync Provider Sync Provider Données Données Détection des changements Détection des changements
33. Sync Framework Aujourd’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. Une image de l’entrepôt de données est enregistrée avant d’être renvoyée au client WebService Le client Silverlight gère lui-même le tracking de certaines modifications DataStore
35. 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’IoCs’impose. A la portée de tout le monde.