Plan du cours
Introduction à la plateforme .NET moderne
- Aperçu du runtime, du SDK et de la plateforme unifiée de .NET 8
- Comparaison de l'évolution de .NET Framework, .NET Core et .NET 8+
- Structure des projets, cibles de framework et bases du multi-ciblage
- Mise en place de l'environnement de développement et des outils
C# moderne et pratiques langagières tournées vers l'avenir
- Records, setters init-only et modèles d'immutabilité
- Améliorations du pattern matching et expressions switch
- Types de référence nullables et sécurité dirigée par le compilateur
- Meilleures pratiques async/await et streaming économe en mémoire
- Générique math, abstraits statiques dans les interfaces et APIs orientées performance
- Préparation des codebases pour les fonctionnalités C# 12/13 sur .NET 8
Fondamentaux d'ASP.NET Core et amorçage d'application
- Constructeur d'hôte, pipeline middleware et cycle de vie des requêtes
- APIs minimalistes vs APIs basées sur contrôleurs : critères de décision
- Fournisseurs de configuration, paramètres spécifiques à l'environnement et gestion des secrets
- Fichiers statiques, routage et conventions d'extrémité
- Configuration du conteneur d'injection de dépendance et durées de vie des services
Conception et implémentation d'APIs REST
- Modèle de maturité REST, modélisation des ressources et conception URI
- Méthodes HTTP, codes de statut et négociation de contenu
- Validation des requêtes, liaison de modèle et intégration FluentValidation
- Stratégies de versioning pour les APIs publiques et internes
- Documentation avec OpenAPI et Swagger UI
- Tests d'intégration des APIs avec TestServer et WebApplicationFactory
Injection de dépendance et inversion de contrôle en entreprise
- Injection par constructeur, durées de vie des services et dépendances captive
- Modèles Décorateur et Fabrique avec le conteneur intégré
- Intégration de Scrutor et bibliothèques DI tierces
- Inscription modulaire des services et organisation par fonctionnalité
- Préoccupations transversales via middleware et filtres
Journalisation, configuration et gestion centralisée des erreurs
- Journalisation structurée avec Microsoft.Extensions.Logging et Serilog
- Niveaux de journal, portées, enrichissement et configuration des sink
- Middleware d'exception et pipelines de gestion globale des erreurs
- ProblemDetails et réponses d'erreurs conformes à la RFC 7807
- Health checks, télémétrie et hooks d'observabilité
- ID de corrélation et préparation au traçage distribué
Architecture logicielle pour les solutions .NET d'entreprise
- Principes des architectures en couches, hexagonale et clean architecture
- Blocs de construction du Domain-Driven Design (DDD) dans .NET
- Patterns CQRS et médiateur avec MediatR
- Patterns Repository et Unit of Work avec EF Core
- Architecture Vertical Slice pour la cohésion des fonctionnalités
- Évaluation des compromis entre monolithe, monolithe modulaire et microservices
Sécurité des applications web et APIs
- Schémas d'authentification : JWT, OAuth2, OpenID Connect et flux basés sur cookies
- Politiques d'autorisation, accès basé sur les claims et garde-fous basés sur les ressources
- Application de HTTPS, HSTS et middleware des en-têtes sécurisés
- Sanitisation des entrées, codage des sorties et atténuation du OWASP Top 10
- Limitation de débit, politiques CORS et gestion des jetons anti-forgery
- Gestion des secrets avec Azure Key Vault et rotation pilotée par l'environnement
Qualité du code, maintenabilité et meilleures pratiques
- Standards de codage, EditorConfig et dotnet format
- Analyse statique avec les analyzeurs Roslyn et intégration SonarQube
- Tests unitaires avec xUnit, mocking avec Moq ou NSubstitute
- Tests d'intégration et de contrat dans les pipelines CI
- Techniques de refactoring pour les modules hérités à longue durée de vie
- Documentation, contrats API et pratiques de partage des connaissances
Stratégie de modernisation : évaluation du code hérité .NET Framework
- Analyse du portefeuille : classer les applications par criticité, complexité et valeur commerciale
- Utilisation de .NET Upgrade Assistant et de l'analyseur de compatibilité
- Identification des APIs dépréciées, dépendances spécifiques à la plateforme et lacunes tierces
- APIs spécifiques à Windows et considérations de migration WCF
- Création d'une feuille de route de migration avec une priorisation basée sur les risques
Migration progressive et techniques de coexistence
- Pattern Strangler Fig : remplacement incrémental des sous-systèmes hérités
- Migration API-first : exposer les domaines .NET Framework via des facades REST
- Interconnexion par messagerie avec RabbitMQ, Azure Service Bus ou Kafka
- Coexistence de base de données partagée et stratégies de versioning de schéma
- Exécution côte à côte de .NET Framework et .NET 8 dans la même infrastructure
- Containerisation des composants modernes tandis que l'héritage reste sur IIS
Laboratoire pratique de migration et revue
- Application de l'Upgrade Assistant à un projet hérité représentatif
- Refactoring d'un service Web Forms ou WCF en APIs ASP.NET Core
- Mise en place de DI, journalisation et gestion centralisée des erreurs dans la solution migrée
- Ajout d'authentification et d'autorisation à la nouvelle surface d'API
- Vérification de la coexistence par tests d'intégration de bout en bout
- Revue, Q&A et conseils pour la planification post-formation de la modernisation
Pré requis
- Expérience en programmation C# et principes de conception orientée objet
- Connaissance des concepts de développement web (HTTP, HTML, CSS, bases de JavaScript)
- Compréhension basique des bases de données relationnelles et de SQL
- Une exposition antérieure au .NET Framework ou à ASP.NET est utile mais non requise
Audience
- Développeurs et architectes .NET se préparant à moderniser leurs applications héritées de .NET Framework
- Ingénieurs logiciels évoluant vers des rôles de développement .NET d'entreprise
- Chefs techniques responsables de la planification de migration de plateforme et de coexistence
- Personnel DevOps et infrastructure supportant les cycles de vie des applications .NET
Nos clients témoignent (2)
Interactivité et solutions de code à la volée
Eduard-Emanuel Zaharia - Kruk Italia
Formation - Advanced Blazor
Traduction automatique
échanges fluides, écoute et adaptation du formateur