22 WPF pour les appli métier [Retour d’expérience] 8 Février 2010 RDA 203 Alexandre Arnaudet – Damien Thouvenin CLT-Services
33 Intro & Agenda de la session Intro Contexte et Thème Objectif de la session & Objectif de l’objectif Le projet Retours d’expérience Conclusion: WPF pour les applis métier
44 CLT-Services Conseil et Services en développement de logiciels Agilité & Expertise: au service des DSI et éditeurs Gestion de projets Agile Expertise.NET, Win32 et Delphi B.I. et SQL Server Logiciels sur mesure: pour le développement de votre entreprise Gestion commercialePilotage de la production Analyse de l’activitéCollecte de données en mobilité
55 Serexim, filiale du Crédit Foncier (groupe Caisses d’Epargne) Opère pour le compte des banques en support des opérations de crédit Estimation de biens pour les crédits relais ou en contentieux Suivi d’avancement de travaux, levées de réserves Etats d’habitabilité (prêts à taux zéro) … Un réseau de 34 chargés de mission dans toute la France Compléter le site par un outil permettant de consigner les observations terrain in situ Démarrage du projet avec les EdH, puis extension aux autres prestations Le projet Le projet « Immotouch » Le client
66 Vidéo Démo rapide du logiciel ImmotouchImmotouch
77 Immotouch: architecture Socle de base WPF Shell Prism + Services injectés par Unity Socle de base WPF Shell Prism + Services injectés par Unity Sync Client Module type de rapport 1 Webservice VersionUpdate Webservice VersionUpdate DAL POCO DAL POCO Module type de rapport 2 WebService Sync Server Site web ASP.NET SQL CE Module Agenda SQL 2005 DAL Entity Framework … Sync Fx
88 Retours d’expérience Ce qu’on a appris avec ce projet Organisation Technique Qui commence : le designer ou le coder ? Code behind is bad for you Utilisation du pattern MVVM / impact sur le design Testabilité fonctionnelle Restitution dans un POC
99 Le P.O.C. Extrait de concentré d’expérience Prism / MVVM DAL mockable et injectée par Unity Tests unitaires avec MsTest Tests fonctionnels avec White Téléchargeable sur en Mars (ou sur dès la semaine prochaine)
10 Conception du logiciel - Idée
11 Visite sur le terrain et rework
12 Version finale
13 Retour d’expérience #1 Collaboration Designer – Coder Besoins / fonctionnalités Idée graphique Paperware sur le terrain Re-passe graphique Squelette Xaml / Modèle + mock data Habillage graphique de base Custom controls + cinématique Rafinage graphique + ajout de code …
14 Technique
15 MVVM Model-View-ViewModel Pattern de composition : séparation des sujets Analogue à MVP ou MVC ViewModel View Model DAL, WebService, … Model DAL, WebService, …
16 Prism Prism est une implémentation du pattern MVVM Développé par le groupe Microsoft P&P Téléchargeable sur codeplex S’appuie sur Unity pour l’IOC Repose sur deux concepts simples: La vue est bindée sur des propriétés et avertie quand elles changent (INotifyPropertyChange) La vue notifie les actions au controlleur par des commandes Comprend aussi un mécanisme d’abonnement multicast
17 Démo Design + Code MVVM
18 Retour d’expérience #2 Design for Test vs Test your design Prism rend les vues et les modèles injectables ce qui facilite la testabilité Pas de données ? Tip 1 : Attributs « d » ! Blend se base sur AppConfig du projet root pour charger les ressources On ne voit que le code XAML ? Tip2: Csproj modifié !
19 Démo Tests unitaires et fonctionnels
20 Retour d’expérience #3 Testabilité UI WPF implémente nativement UI Automation Utilisation de White impeccable sur les contrôles de type Button, Textbox, Label…etc. Attention aux Ids Les conteneurs en revanche sont passifs Custom controls: Dérivés de ListBox ou Selector: Ok Dérivés de Control: Ko
21 Retour d’expérience #4 Autres points d’intérêt Sync Fx DAL POCO Déploiement des mises à jours
22 Conclusion WPF pour les applis métier