MVVM. Maîtrisez vos développements.net. (WPF, Silverlight, Windows Phone ) MVVM - Maîtrisez vos développements.net MVVM.



Documents pareils
Catalogue des formations 2014

Le Registre sous Windows 8 architecture, administration, script, réparation...

Consultant.NET / SharePoint

Introduction au développement SharePoint. Version 1.0

CHEF DE PROJET & ARCHITECTE.NET SAMIR BENFARES FORMATION LANGUE COMPÉTENCES TECHNIQUES CERTIFICATION

Développer des Applications Internet Riches (RIA) avec les API d ArcGIS Server. Sébastien Boutard Thomas David

Bien aborder un projet SharePoint 2013

Révolution du mode de travail en magasin

Formateur.NET expérimenté Forte expertise dans la conception et le développement d applications.net, associée à une grande pédagogie

Notre processus d embauche

Cette option est aussi disponible sur les clients Windows 7 sous la forme d un cache réparti entre les différentes machines.

Infrastructure RDS 2012

Sql Server 2000, 2005, 2008 R2 o T-SQL o Création d'un modèle de données o Full text search o Administration Oracle 9i, Oracle 11g

SQL Server SQL Server Implémentation d une solution. Implémentation d une solution de Business Intelligence.

Déployer une application cliente avec le Framework.NET 3.5 Client Profile

Point sur les solutions de développement d apps pour les périphériques mobiles

Business Intelligence

Sécurisation du réseau

Formation, Audit, Conseil, Développement, UX WinRT Silverlight WPF Android Windows Phone

< Atelier 1 /> Démarrer une application web

Déploiement d application Silverlight

Commerce Server 2009 R2

Bases de données et environnements distribués Chapitre I : Architecture logicielle technologies de developpement en environnement

Sébastien Sougnez 24/12/ / s.sougnez@areaprog.com 2 ans et demi d expérience

Déploiement, administration et configuration

Livre Blanc XAMARIN. Le développement mobile multiplateforme

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

Windows 8 Installation et configuration

Programme scientifique Majeure ARCHITECTURE DES SYSTEMES D INFORMATION. Mentions Ingénierie des Systèmes d Information Business Intelligence

INGÉNIEUR - DÉVELOPPEUR SENIOR.NET. 31 ans - 8 ans d'expérience

Benjamin DE VUYST. Architecte solutions Microsoft.net Certifié Microsoft.net Core et WPF

Optimisation des performances

Windows Server 2012 R2

Consultant SharePoint

GLPI (Gestion Libre. 2 ième édition. Nouvelle édition. de Parc Informatique)

formations microsoft www www www www aux nouvelles technologies Catalogue 2011 Azure Azure Azure SharePoint 2010 Surface Visual Studio Surface Surface

Interagir avec le SharePoint. Version 1.0

Data Tier Application avec SQL Server 2008 R2

EXPERTS EN DÉVELOPPEMENT ET MODERNISATION DE LOGICIELS WEB ET MOBILES

InstallShield 2014 FICHE TECHNIQUE. Création de programmes d installation pour Microsoft Windows

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Architectures web/bases de données

ASP.NET MVC 4 Développement d'applications Web en C# - Concepts et bonnes pratiques

SQL Server Installation Center et SQL Server Management Studio

Olivier Deheurles Ingénieur conception et développement.net

Windows Azure Platform Développez, déployez et administrez pour le Cloud Microsoft

Résumé DOMAINES DE COMPETENCES

SharePoint 2013 Développez en.net pour personnaliser SharePoint (Apps, REST, CSOM et Azure)

R E S O T E L. Ingénierie des Systèmes Informatiques Réseaux et Télécommunications. Calendrier des Formations IT

SQL Server 2012 Administration d une base de données transactionnelle

Assurances & Mutuelles, Industrie, Santé, Énergie, Transport, Médias / Multimédias, Télécoms, Services

Microsoft Hosted Exchange 2010 DOCUMENT D EXPLOITATION

contact@nqicorp.com - Web :

FLEX 3. Applications Internet riches avec Flash ActionScript 3, MXML et Flex Builder. Aurélien Vannieuwenhuyze

résolument expert Alti: spécialiste des solutions Microsoft durablement humain Poursuivez l aventure sur

Swisscom Webmail - mode d emploi

TAGREROUT Seyf Allah TMRIM

Créer un rapport pour Reporting Services

Guide de mise à jour BiBOARD

A. Introduction. Chapitre 7

Business Intelligence simple et efficace

INTRODUCTION AUX TESTS DE PERFORMANCE ET DE CHARGE

HighPush. document /06/2009 Révision pour version /11/2008 Revision pour la /10/2008 Documentation initiale.

IBM Tivoli Monitoring, version 6.1

applications d entreprise et solutions en intelligence d affaires

Introduction MOSS 2007

Hébergement et configuration de services WCF. Version 1.0

D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information.

Microsoft Exchange. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

Aide Webmail. L environnement de RoundCube est très intuitif et fonctionne comme la plupart des logiciels de messagerie traditionnels.

Jimmy Clairbois. Projets réalisés dans le cadre professionnel

Bibliothèque Numérique L'intégrale Collection Ressources Informatiques


Urbanisation des systèmes d information

Développement logiciel, Technologies.NET

Formations qualifiantes pour demandeurs d emploi

Architecte de Systèmes d Information, Ingénieur Logiciel, Chef de projet

Ce document décrit une solution de single sign-on (SSO) sécurisée permettant d accéder à Microsoft Exchange avec des tablettes ou smartphones.

Corrigé de l'atelier pratique du module 8 : Implémentation de la réplication

Objectif : Passer de l analyse métier et fonctionnelle à la définition des applications qui

Stage Ingénieur en développement logiciel/modélisation 3D

SQL Server 2012 Implémentation d'une solution de Business Intelligence (Sql Server, Analysis Services...)

À propos du Guide de l'utilisateur final de VMware Workspace Portal

A. Architecture du serveur Tomcat 6

Sélection d un moteur de recherche pour intranet : Les sept points à prendre en compte

Introduction à Microsoft InfoPath 2010

Whitepaper. Méthodologie de création de rapports personnalisés SQL Server Reporting Services

Cours en ligne Développement Java pour le web

CATALOGUE DE FORMATIONS

Dominic Jobin. Profil. Expérience professionnelle avenue de l Hôtel-de-Ville #606, Montréal (Qc) H2T 2A djobin@gmail.

Déploiement d'une application Visual Studio Lightswitch dans Windows Azure.

Développer avec Visual Studio pour Windows Azure

Installation-Lancement

Installation FollowMe Q server

Optimiser le référencement de votre site

Un duo de choc : DocuWare et Microsoft Outlook

et Groupe Eyrolles, 2006, ISBN :

Table des matières Page 1

Transcription:

Les chapitres du livre Avant-propos Principes fondateurs de Concepts utiles en WPF pas à pas dans l ensemble du développement Pour plus d informations : 54 ISSN : 1960-3444 sur www.editions-eni.fr : b Le code source des exemples traités dans le livre. Benjamin LAFFONT est développeur, expert sur les technologies.net depuis plusieurs années. Son expertise porte sur les technologies XAML (WPF et Silverlight) mais aussi sur les développements fullstack des technologies Microsoft. Certifié MCT (Microsoft Certified Trainer) il transmet à travers cet ouvrage toute son expérience de l application du modèle dans le cadre de développements métiers éprouvés. ISBN : 978-2-7460-9389-8 Ce livre sur le design pattern (Model View ViewModel) s adresse aux développeurs, architectes et concepteurs d applications WPF, Windows Phone, Silverlight et Windows RT. Si sa finalité est de séparer les concepts et les rôles, son application relève néanmoins d une certaine finesse et d un certain équilibre qu il est nécessaire d acquérir, et c est l objectif de ce livre. Dans le premier chapitre l auteur place dans un contexte de bonnes pratiques. Son but est de poser les bases d un développement maintenable et évolutif tout en proposant au développeur d acquérir les bons automatismes. Le second chapitre offre les bases techniques pour s assurer d une mise en pratique efficace du modèle. L auteur fait un tour d horizon des capacités du XAML, de WPF et du C# qui sont utilisés pour les développements. Les fonctionnalités des outils concernés par le cycle de développement tel que Visual Studio ou Blend sont aussi présentées. Le troisième chapitre décrit chacune des composantes du modèle en prenant en compte leurs interactions mutuelles. Certaines variantes sont proposées par l auteur afin d adapter le modèle à un maximum de projets. Le quatrième chapitre offre une vision plus globale, avec des cas concrets d utilisation qui se retrouvent fréquemment dans le développement d applications métier. L auteur propose des solutions simples à des problèmes réels auxquels tout développeur est confronté. Les exemples traités dans le livre sont disponibles en téléchargement sur le site www.editions-eni.fr. Ils illustrent les concepts de base comme l utilisation des liaisons (binding), la création de templates, l énumération de données dans l affichage et offrent des exemples de développements d applications métier avec la gestion du parallétéléchargement lisme, la validation de données, la création de behaviors, la création www.editions-eni.fr.fr d écrans d attente, de notifications et la communication entre les différentes parties d une application. - Maîtrisez vos développements.net Maîtrisez vos développements.net (WPF, Silverlight, Windows Phone ) Maîtrisez vos développements.net (WPF, Silverlight, Windows Phone ) Benjamin LAFFONT

Table des matières 1 Les éléments à télécharger sont disponibles à l'adresse suivante : http://www.editions-eni.fr Saisissez la référence de l'ouvrage EP dans la zone de recherche et validez. Cliquez sur le titre du livre puis sur le bouton de téléchargement. Avant-propos Chapitre 1 Principes fondateurs de 1. Introduction.............................................. 5 2. S.O.L.I.D.................................................. 6 2.1 S comme Single Responsibility........................... 6 2.2 O comme Open Close Principle........................... 8 2.3 L comme Liskov Substitution........................... 10 2.4 I comme Interface Segregation.......................... 14 2.5 D comme Dependency Inversion........................ 16 3. MVC - MVP............................................. 17 4. Testabilité............................................... 18 4.1 Les tests unitaires..................................... 19 4.2 Les tests d intégration................................. 20 4.3 Les tests de non-régression.............................. 20 4.4 Les tests d acceptation................................. 20 4.5 Exemples de tests..................................... 21 4.6 Test Driven Development.............................. 22 5. Injection et Mocking...................................... 23 5.1 Injection............................................ 23 5.2 Mocking............................................ 24

2 Maîtrisez vos développements.net Chapitre 2 Concepts utiles en WPF 1. Introduction............................................. 27 2. Outils................................................... 27 2.1 Visual Studio......................................... 28 2.2 NuGet.............................................. 32 3. Bibliothèques de développement............................. 36 3.1 Light........................................ 36 3.2 Bibliothèque de test................................... 38 3.3 WPF Toolkit......................................... 38 3.4 Morceaux de code : snippets............................ 39 4. Changement de mode de pensée............................. 42 5. La partie interface avec XAML.............................. 43 5.1 Le templating........................................ 45 5.2 La liaison de données (databinding)...................... 51 5.3 Les propriétés de dépendances (dependency properties)...... 65 5.4 L interface INotifyPropertyChanged...................... 71 5.5 Les ObservableCollections.............................. 75 5.6 Les évènements et les commandes....................... 78 6. La partie code avec C#..................................... 80 6.1 Le code-behind....................................... 80 6.2 Le code du modèle-vue................................. 80 6.3 Les classes portables................................... 84 7. Le contexte de données.................................... 86 7.1 Rôle................................................ 86 7.2 Héritage visuel....................................... 86

Table des matières 3 Chapitre 3 pas à pas 1. Introduction............................................. 89 2. Vue globale.............................................. 89 3. Le modèle............................................... 90 3.1 Rôle du modèle....................................... 90 3.2 Origine du modèle.................................... 91 3.3 Exemple............................................. 92 4. La vue.................................................. 98 4.1 Rôle de la vue........................................ 98 4.2 Création d une vue.................................... 99 4.3 Exemple............................................ 101 5. Le modèle-vue (ViewModel)............................... 101 5.1 Rôles du modèle-vue.................................. 102 5.2 Exemple............................................ 102 6. L orchestration.......................................... 109 6.1 Le lien entre le modèle-vue et la vue..................... 109 6.2 Le lien entre le modèle et le modèle-vue.................. 113 6.3 Le lien entre le modèle et la vue......................... 114 7. Ajout de fonctionnalités................................... 116 7.1 La validation........................................ 116 7.2 Les traitements en mémoire............................ 120 7.3 La réactivité avec l asynchronisme...................... 130 7.4 Écran d attente...................................... 139

4 Maîtrisez vos développements.net Chapitre 4 dans l'ensemble du développement 1. Introduction............................................ 151 2. Canaux de communication dans l application................. 151 3. Interpeller l utilisateur.................................... 160 4. Les tests................................................ 174 4.1 Tests unitaires...................................... 180 4.2 Tests d intégration................................... 185 4.3 Tests d acceptation................................... 188 5. Les points positifs et négatifs............................... 189 5.1 Manque de rigidité ou trop grande liberté................ 189 5.2 Plus proche d une philosophie que d un design pattern...... 190 5.3 Dépendant de bibliothèques........................... 190 5.4 Complexité inhérente à l abstraction par couche........... 191 6. Les anti-patterns à éviter.................................. 191 6.1 Ancre.............................................. 191 6.2 Copie de code....................................... 192 7. Pour aller plus loin....................................... 192 7.1 Blend, éditeur de génie................................ 192 7.2 Les behaviors et les triggers............................ 195 7.3 Vue et modularité.................................... 204 7.4 Le pattern ViewModelLocator.......................... 206 7.5 Prism et Enterprise Library............................ 208 Index.................................................. 209

Chapitre 3 pas à pas 1. Introduction pas à pas Il est possible d étudier le patron en le décomposant. Une fois le rôle et la responsabilité de ses parties bien définis, il est possible de mettre en place les interactions pour ensuite assembler le tout et former le patron au complet. 2. Vue globale se rapproche fortement des patrons MVC et MVP. Ceux-ci se chargent de tout ce qui concerne la vue, l interaction avec l utilisateur et le comportement général de l interface graphique. La différence se situe dans le lien entre le modèle-vue et la vue. Le binding représente une dimension supplémentaire offerte aux développeurs. La forte flexibilité donnée par le développement d interfaces en XAML facilite de plus la séparation entre la vue et le reste du modèle.

90 Maîtrisez vos développements.net 3. Le modèle Le modèle représente généralement le conteneur de données. Il est important par son contenu mais aussi par sa structure. Le modèle est généralement représenté par des classes.net simples ou encore POCO (Plain Old C# Object). Il est possible que ce que l on appelle modèle soit représenté par une hiérarchie complexe de classes liées entre elles par composition. Cette organisation de classes constitue la structure du modèle. Quand elle n est pas dynamique, elle est définie par le développeur et seul son contenu évoluera au cours de l exécution du programme. Le modèle ne contient généralement aucune intelligence. Pour ses données, un traitement métier a pu être effectué lors de sa récupération (filtrage, tri), lors de sa création ou encore lors de son exploitation dans le modèle-vue. 3.1 Rôle du modèle Le modèle est défini en amont, avant même la création de l interface. Il a pour rôle de structurer le métier de l application et de contenir les données. Son rôle est aussi de pouvoir transiter de l endroit où il est créé vers l endroit où il doit être exploité. La structure du modèle guidera le modèle-vue associé. Selon cette structure, le modèle-vue doit plus ou moins adapter les données afin de les retranscrire et de les fournir à la vue. Il n est parfois pas essentiel de remonter la totalité de la structure. Une extraction partielle peut être suffisante afin de satisfaire l application. Les données du modèle sont aussi importantes : en fonction de leur quantité et/ou de leur profondeur, le modèle-vue doit les retravailler, les synthétiser ou encore les répartir entre les différents modèles-vues de l application. Là encore, il peut être possible de ne récupérer qu une partie du contenu en fonction de ce qui est exploitable. L exemple le plus probant est la pagination. Il n est nécessaire de récupérer qu une sous-partie du modèle selon la quantité qui doit être affichée et l index de départ représenté par la page affichée. Un autre exemple peut être une vue Master-Detail. Cette vue charge une liste d objets qui, après sélection, est affichée en détail dans un autre contrôle. La liste d objets peut être une liste de modèles dit légers pour optimiser la récupération. Editions ENI - All rights reserved

pas à pas Chapitre 3 91 3.2 Origine du modèle Le modèle peut avoir plusieurs origines. Il peut venir d une ressource embarquée dans l application. La ressource est alors compilée avec l exécutable. La ressource se retrouve physiquement intégrée à l application et il est alors possible de la relire lors de l exécution afin de remplir une instance de modèle avant son utilisation dans les différents modèles-vues. Le modèle peut aussi venir d une ressource contenue sur la machine qui exécute l application. Le programme est alors responsable du chargement des ressources et de leur intégration dans une instance du modèle. Il est par exemple concevable de fournir une application s appuyant sur un fichier XML qui contient la totalité des données nécessaires au bon déroulement de l application. Il ne faut néanmoins pas oublier de traiter les problèmes liés à l exploitation des données externes tels que l indisponibilité de celles-ci ou encore leur non-conformité en terme de format. Sur des applications de moyenne ou de grande dimension et afin de satisfaire aux contraintes architecturales de développement, le modèle peut venir d une autre source appelée DAL (Data Access Layer). Cette couche architecturale est en charge de la récupération de données stockées dans un conteneur qui peut être une base de données. Cette DAL permet, selon certains critères, de créer et de remplir le modèle. Elle se charge aussi de le fournir, à la demande, au reste de l application. L intérêt d une telle couche est l intégration d algorithmes complexes comme l optimisation de la récupération, la mise en place d un cache simple ou d un cache distribué. Ces algorithmes peuvent être utilisés dans cette couche ou dans la couche qui est présente derrière la DAL, mais ils n impactent en rien le format de retour de cette récupération. Dans une application N-tiers utilisant des services web, le modèle peut être généré selon le contrat respecté par le service. Le service créant et remplissant le modèle doit alors le transcrire avant de le transmettre. Après création, le modèle est sérialisé, c est-à-dire que chacune de ses propriétés est lue et écrite dans un flux qui pourrait être transmis par le biais d un réseau. Les services web développés pour Windows Communication Foundation et déployés sous IIS ont plusieurs canaux de transports comme HTTP, TCP/IP et les canaux nommés. Après transmission et lors de la réception du flux, le modèle est alors désérialisé afin de le reconstituer et de le passer au modèle-vue.

92 Maîtrisez vos développements.net Cet exemple de code XML est la réponse à un service web sérialisée et retournée par le serveur. Ce service répond à une demande d heure de la part du client. La réponse est formatée afin d être transportée et interprétée par le client. 3.3 Exemple Il est assez fréquent de trouver des applications utilisant des services WCF au sein d un développement métier. Afin de démontrer la possibilité d intégrer une couche de service dans la mise en place de, l exemple suivant détaille la création et la consommation d un service web basique dans une application WPF. Lors du référencement du service dans le client, un générateur produira une classe pour appeler le service et les classes correspondant aux données. douvrez Visual Studio et ajoutez deux projets. Le premier est un projet web vierge, il a pour rôle d héberger le service web et le second est un projet WPF qui représente le client du service. ddans le projet web, ajoutez un dossier nommé Model et ajoutez une classe Eleve à l image de la classe décrite précédemment. Editions ENI - All rights reserved

pas à pas Chapitre 3 93 La structure donnée en exemple est une classe Eleve exposant deux propriétés. Il est concevable d avoir une structure bâtie sur une composition de classes pouvant même posséder des références circulaires. La classe en charge de la sérialisation des données gère les classes imbriquées et les références circulaires. La prochaine étape consiste à créer un service qui retourne une liste d élèves. La structure du modèle qui est utilisé dans la réponse ainsi que le descriptif de la méthode exposée sont tous les deux décrits dans les métadonnées du service. ddans le projet web, ajoutez un service web. Afin de faciliter la configuration de ce service et à des fins de démonstration, ajoutez un service web à destination des applications Silverlight.

94 Maîtrisez vos développements.net dalimentez votre service avec une méthode GetEtudiants retournant une liste d élèves. dcomme décrit ci-dessus, le contenu du retour n est pas essentiel pour cet exemple. Afin de valider qu aucune erreur ne soit présente dans l application web, compilez celle-ci. De cette manière vous rendez accessible le service auprès des potentiels projets clients en développement. drendez-vous dans l application WPF afin d ajouter une référence de service. Cette option est accessible par le biais d un clic droit sur l application WPF. Editions ENI - All rights reserved