Formation Technologies de l'information : .NET : concevoir et implémenter des architectures maintenables et performantes
Structurer efficacement une application backend avec .NET et les design patterns clés.
.NET Core a renouvelé la manière de développer des applications backend: injection de dépendances, serveur web Kestrel, gestion de configuration avancée, logging, sécurité, etc... Ces technologies sont au cœur des applications .NET. Pour être utilisées efficacement, elles nécessitent une solide compréhension des designs patterns qui structurent une application backend.
<br/>
Cette formation vous outillera pour concevoir et implémenter des architectures modulables et performantes à l’aide .NET et C#.
<br/>
Vous explorerez les meilleures pratiques de conception logicielle, tout en mettant en œuvre les composants clés d’une application backend, de la gestion des données à la sécurisation des API REST, jusqu’au déploiement sur Kubernetes.
Chaque module s’appuie sur des mises en pratique concrètes, dans une approche progressive et structurée.
Le programme de la formation
Cette formation est structurée en modules progressifs, mêlant concepts théoriques et mises en pratique concrètes. Chaque bloc aborde un aspect clé de l’architecture d’une application backend avec .NET, depuis les fondations jusqu’au déploiement.
Introduction
Ce premier module pose les bases conceptuelles de l’architecture logicielle en .NET, en explorant les principes de conception et l’écosystème du framework (cadriciel).
- L'adoption d'un langage commun (ubiquitous language) pour une meilleure collaboration.
- Définition des objectifs.
- Revue des principes S.O.L.I.D. , KISS, DRY, POCO pour une meilleure maintenabilité.
- Le découpage en couches logicielles.
- La préférence pour les applications stateless.
- Vue d’ensemble de l'écosystème .NET.
Couplage faible avec Microsoft.Extensions.DependencyInjection
Ce module présente les mécanismes d’injection de dépendances en .NET et les patterns associés pour favoriser un code modulaire et faiblement couplé.
- Présentation des designs patterns Strategy et Factory.
- La déclaration d'une IServiceCollection.
- L'inscription d'un service.
- L'injection de dépendances.
- L'accès aux propriétés issues d'une IConfiguration.
- Le couplage avec Microsoft.Extensions.Logging.
- La configuration par custom attributes.
Mise en pratique: implémentation de l'injection de dépendance avec Microsoft.Extensions.DependencyInjection.
Échange de messages avec le pattern Command
Vous découvrirez ici comment structurer la logique applicative autour du pattern Command pour améliorer la clarté, la maintenabilité et l’évolutivité du code.
- La commande comme représentation des entrées utilisateurs (users inputs) d'un cas d'utilisation.
- Le routage des commandes vers les components métiers.
- La validation.
- La gestion des exceptions.
- La démarcation transactionnelle.
- La mise en œuvre d'une architecture CQRS (command query responsability segregation).
Mise en pratique: application du pattern Command pour réduire le couplage et augmenter la maintenabilité.
Accès aux données et gestion des transactions
Ce module explore les principes d’accès aux données, les types de bases de données, les transactions, et les patterns comme Unit of Work et Repository.
- Les différents types de base de données (SQL, NoSQL).
- Le théorème CAP.
- L'exécution non bloquantes des opérations I/O pour gagner en mise à l’échelle (scalability).
- Le rôle d'un pool de connexions.
- Les transactions et les principes ACID.
- Le pattern Unit of Work.
- Les records et les tuples pour manipuler des données immutables.
- Le pattern Repository (et ses limites) et son implémentation en .NET: EntityFrameworkCore.
- Les mini-ORM comme solution pour développer des applications orientées données (data driven applications), présentation de Dapper.
Mise en pratique : mise en œuvre du pattern unit of Work pour accéder aux données de manière transactionnelle, requêtage d'une base de données avec Dapper.
Création d’une API REST avec ASP.NET Mvc
Vous verrez comment construire une API REST robuste en .NET en respectant les bonnes pratiques de conception et de test.
- Le serveur web embarqué Kestrel et son event loop.
- Les intergiciels (middlewares).
- Les bonnes pratiques de conception d'une API REST.
- Les API Controllers et le traitement des requêtes.
- La validation.
- La gestion des exceptions.
- Les tests d'une API REST.
Mise en pratique: création d'une API REST pour exposer l'application développée précédemment.
Réalisation d'une application web MVC avec ASP.NET MVC
Ce module vous guide dans la création d’une interface utilisateur web basée sur le pattern MVC, en exploitant les vues Razor et les vues partielles.
- Présentation du pattern Model View Controler.
- La définition du modèle et sa transmission aux vues.
- Les vues Razor.
- Ajax et les vues partielles pour une navigation plus fluide.
- La validation.
Mise en pratique: création d'un frontend MVC.
Sécurisation d’une application web
Vous verrez comment intégrer des mécanismes d’authentification et d’autorisation dans une application web sécurisée avec JWT, Identity et OpenID Connect.
- La déclaration d'un référentiel d'utilisateurs avec ASP.NET Identity.
- Choix d'une stratégie d'authentification: cookie ou jeton JWT.
- Le couplage avec un serveur OpenID Connect.
- Définition des règles d'accès.
- L'accès à l'identité de l'utilisateur.
- Les stratégies de révocations.
Mise en pratique: sécurisation de l'API REST avec JWT.
Intégration continue et livraison continue
Vous aborderez les étapes clés de la livraison d’une application conteneurisée avec .NET, de la génération d’image à son déploiement sur Kubernetes.
- Rappel des commandes .NET pour créer un livrable.
- La méthodologie 12 Factor App.
- Création d'image OCI.
- Le déploiement d'une image OCI sur un orchestrateur Kubernetes.
Mise en pratique: création d'une image OCI à partir de l'API REST et déploiement sur Kubernetes (Minikube).
À qui s'adresse cette formation ?
Public cible
Développeurs et développeuses backend et architectes d’applications évolutives en environnement .NET
Prérequis
Ce cours demande une connaissance solide des bases de la programmation C# (principes de la programmation orientée objet, types génériques, custom attribute, expressions lambda). Une expérience avec Visual Studio, VsCode ou Rider est aussi nécessaire.
Les objectifs de la formation
Être en mesure de concevoir et développer une application backend complète, modulaire et sécurisée avec .NET et C#, selon les principes d’architecture logicielle éprouvés.
Les points forts de la formation
Mettre en œuvre le couplage faible avec l'injection de dépendances;
Concevoir une architecture évolutive avec le pattern command;
Accéder aux données d'une base de données relationnelle avec un ORM;
Garantir la cohérence d'un système grâce à la gestion des transactions;
Créer les endpoints d'une API REST avec ASP.NET MVC;
Implémenter un frontend MVC avec ASP.NET MVC;
Sécuriser une API REST avec ASP.NET MVC, et OpenID Connect et JWT;
Déployer une application en tant qu'image OCI et la déployer sur Kubernetes.
