L’objectif de ce workshop trois jours est de fournir aux équipes de développement d’un projet les connaissances liées à la mise en place d’une architecture d’application Web ASP.NET MVC dite « en couches ». Le matériel utilisé pour ce workshop est composé essentiellement de présentations, de démonstrations, de discussions, et d’exercices dirigés.
Durée
3 jours.
Audience
Ce workshop est conçu pour les architectes et les développeurs qui interviennent conjointement sur un projet de développement d’une solution Web. La connaissance du développement Web ASP.NET MVC, de C# et de l’accès aux données est nécessaire.
A la fin du workshop
Après ce workshop, les participants seront à même de mettre en place et de développer des modules différents sur une architecture d’application en couches, avec un couplage faible entre chacun de ces modules. En outre, les impacts potentiels des stratégies utilisées, notamment concernant la modélisation des données transitant dans l’application, seront clairement identifiés – en termes de stabilité, de performance et de facilité de maintenance. Le projet de support développé lors de ce workshop est le projet sur lequel travaille l’équipe participant au workshop.
Langue d’intervention
La langue du workshop est le français.
Languages de support
C# / T-SQL / Html 5 / javaScript.
Technologies et Packages
.NET, C#, ASP.NET MVC, T-SQL, Visual Studio, Html5, CSS, Javascript, Bootstrap.
Programme de formation
Module 1 : Architecturer une application en couches
Ce module présente les notions fondamentales d’une architecture en couches, et ses caractéristiques par rapport à une approche dite « par tiers ».
- Introduction
- Présentation des approches en couches traditionnelles
- Architecture en couche versus Architecture en tiers
- L’impact des stratégies de modélisation des données
- Faut-il utiliser l’ORM ? Approche par données versus approche par scénario
- La structuration et l’indépendance des différentes couches entre elles
- Structurer une application Web en couche : choix, pratiques et impacts
- Descriptions des couches
- Implémentation sans état – la monté en charge
- Où se positionne l’approche SOA ? SOAP ? REST ?
- La gestion de l’authentification, des permissions, et de la validation.
- Le Saas : choix du partitionnement
- Discussions
Module 2 : Les services élémentaires d’une architecture Web
Ce module aborde les services élémentaires proposés par une application développée avec une architecture en couches.
- Présentation d’une architecture web en couche avec ASP.NET MVC
- Structuration des modules et des espaces de nom, stratégie de nommage
- Le déploiement : choix et pratiques
- Impacts sur la configuration du développeur
- L’application Web « générique »
- Modularité et convergence des livrables
- L’authentification, et la configuration de la sécurité
- La gestion de la globalisation
- La gestion des configurations
- Instrumentation et suivi du fonctionnement de l’appplication
- Les ressources statiques, scripts, bundles et packages
- La gestion des permissions : approche par couplage faible
- Extensions ou composition : comment faire ?
- Le Cloud : enjeux et impacts
- Gulp, Grunt et autres gestionnaires de tâches
- La place de la logique métier
- Discussions
Module 3 : L’implémentation des modules
Ce module se concentre sur la façon optimale de développer les modules (i.e. les livrables d’un projet) d’une architecture en couche.
- Introduction à la modularité d’une application
- Gestion de la composition : choix et impacts sur le déploiement
- Packaging des modules en fonction des scénarios à implémenter
- Structuration des modules dans la solution de Visual Studio
- Démarche de développement
- La place des tests. Impacts.
- Exemple de développement d’un module
- Un module particulier : la gestion de l’authentification
- Qualité du code, règles et patterns
- Discussions
Module 4 : La couche de données
Ce module approfondie le développement de la couche de données, et l’impact des choix sur la structuration des codes.
- Rappels sur la modélisation de la couche de persistance
- Données relationnelles, semi relationnelles, ou format natif ?
- Comment faire transiter les données dans une application ? Choix et impacts sur le projet de développement
- L’intégration de modèles de données existants
- Impact d’une approche Saas sur les données – mutualisation ou différenciation des structures ?
- Recommandations d’implémentation
- Stratégie de nommage
- Les compétences de l’équipe de développement
- Discussions
Module 5 : La couche de plateforme
Ce module présente la notion de couche de plateforme, primordiale dans une architecture en couche.
- Plateforme et scénarios : un lien de convergence
- Intérêts de la couche de plateforme
- Présentation des fonctions d’une couche de plateforme
- Implémentation des entités (POCO ou DTO)
- L’interfaçage de la couche de données
- Implémentation de la « plomberie »
- La gestion des caches de données
- Gestion des permissions et des validations
- La complétude de la plateforme
- Le test de la plateforme : une bonne idée de la performance de l’application
- Les compétences de l’équipe de développement
- Discussions et enjeux
Module 6 : la couche de présentation
Ce module aborde les aspects liés au développement de la couche de présentation avec une approche MVC.
- Rappels sur l’approche MVC
- Le rôle des Modèles – une peu de MVVM
- Prise en charge des commandes de vue
- L’utilisation de package et composants clients
- Définir la place de javaScript dans le projet
- Comment gérer la multiplicité des versions des packages
- Cinématique, scénario nominal et optimisation : choix et démarche de projet
- Le développeur est-il un bon designer d’application ?
- Souplesse graphique, et ciblage de la mobilité
- Les compétences de l’équipe de développement
- Discussions et enjeux
Module 7 : Outils de productivité
Ce module présente les différents outils et patterns nécessaire à l’amélioration de la productivité des équipes de développement, et à la cohérence et la qualité des codes produits.
- Introduction à la vélocité d’un projet
- Le rôle central du développeur sur chacun des postes de développement
- Les outils d’amélioration de la productivité
- Utilisation des patterns ad’hoc : patterns de code, patterns d’architecture, et patterns de style
- Utilisation des extraits de code et des règles d’analyse du code
- La documentation des développements
- La traçabilité des développements
- Exemples de mise en place
- Les compétences de l’équipe de développement
- Discussions
Module 8 : Interactions avec la gestion du projet
Ce module approfondie les relations et interactions existante entre une approche de développement en couche, et la gestion du projet, avec tous les avantages, notamment en terme maîtrise des délais.
- La relation entre les scénarios, la planification, et le développement des modules
- A propos de la convergence des livrables
- Impact sur les pratiques du code : cycles d’implémentation et cycles d’intégration
- Les notes de livraison et la gestion des tests
- La visibilité du projet, et la lisibilité de l’avancement
- Discussions
Pour me contacter :
Bernard Fedotoff
+33 6 12 54 93 12
bfedotoff(at)agilcom.info ou bfedotoff(at)hotmail.com