Plan du cours
Introduction à la plateforme .NET moderne
- Aperçu du runtime .NET 8, du SDK et de la plateforme unifiée
- Comparaison entre l'évolution de .NET Framework, .NET Core et .NET 8+
- Structure des projets, cibles de framework et bases du ciblage multiple
- Configuration de l'environnement de développement et des outils
C# moderne et pratiques linguistiques tournées vers l'avenir
- Records, initialiseurs en lecture seule (init-only setters) et patrons d'immutabilité
- Améliorations de l'appariement de motifs (pattern matching) et expressions switch
- Types de référence nulles (nullable reference types) et sécurité induite par le compilateur
- Meilleures pratiques async/await et streaming efficace en mémoire
- Généricité mathématique, membres abstraits statiques dans les interfaces et API orientées performance
- Préparation des bases de code aux fonctionnalités C# 12/13 sur .NET 8
Fondamentaux d'ASP.NET Core et initialisation de l'application
- Host builder, pipeline middleware et cycle de vie des requêtes
- Minimal APIs vs APIs basées sur des 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é (endpoints)
- Configuration du conteneur d'injection de dépendances et durées de vie des services
Conception et implémentation des API REST
- Modèle de maturité REST, modélisation des ressources et conception des URI
- Méthodes HTTP, codes de statut et négociation de contenu
- Validation des requêtes, liaison de modèles et intégration de FluentValidation
- Stratégies de versioning pour les APIs publiques et internes
- Documentation avec OpenAPI et Swagger UI
- Tests d'intégration des API avec TestServer et WebApplicationFactory
Injection de dépendances d'entreprise et inversion de contrôle (IoC)
- Injection par constructeur, durées de vie des services et pièges des dépendances captives
- Patrons décorateur et usine avec le conteneur intégré
- Intégration de Scrutor et des bibliothèques DI tierces
- Inscription modulaire des services et organisation basée sur les fonctionnalités
- Cross-cutting concerns via middleware et filtres
Journalisation, configuration et gestion centralisée des erreurs
- Journalisation structurée avec Microsoft.Extensions.Logging et Serilog
- Niveaux de journal, étendues (scopes), enrichissement et configuration des sinks
- Middleware d'exception et pipelines globaux de gestion des erreurs
- ProblemDetails et réponses d'erreur conformes à la RFC 7807
- Contrôles de santé, télémétrie et hooks d'observabilité
- IDs de corrélation et préparation au traçage distribué
Architecture logicielle pour les solutions .NET d'entreprise
- Principes des architectures en couches, hexagonales et clean architecture
- Blocs de construction du Domain-Driven Design (DDD) dans .NET
- Patrons CQRS et Mediator avec MediatR
- Patrons Repository et Unit of Work avec EF Core
- Architecture par tranches verticales (vertical slice) pour la cohésion des fonctionnalités
- Évaluation des compromis entre monolithe, monolithe modulaire et microservices
Sécurité des applications web et des API
- Schémas d'authentification : JWT, OAuth2, OpenID Connect et flux basés sur les cookies
- Politiques d'autorisation, accès basé sur les claims et garde-fous basés sur les ressources
- Application de HTTPS, HSTS et middleware pour les en-têtes sécurisés
- Sanitisation des entrées, encodage des sorties et atténuation des OWASP Top 10
- Limitation du débit, politiques CORS et gestion des jetons anti-forgery
- Gestion des secrets avec Azure Key Vault et rotation basée sur l'environnement
Qualité du code, maintenabilité et meilleures pratiques
- Normes de codage, EditorConfig et dotnet format
- Analyse statique avec les analyseurs Roslyn et intégration à SonarQube
- Tests unitaires avec xUnit, simulation (mocking) avec Moq ou NSubstitute
- Tests d'intégration et de contrats 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 l'assistant de mise à niveau (.NET Upgrade Assistant) et de l'analyseur de compatibilité
- Identification des API dépréciées, des dépendances spécifiques à la plateforme et des lacunes tierces
- API spécifiques à Windows et considérations pour la 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
- Patron Strangler Fig : remplacement progressif des sous-systèmes hérités
- Migration par API-first : exposition des domaines .NET Framework via des façades REST
- Intégration par messages avec RabbitMQ, Azure Service Bus ou Kafka
- Coexistence sur une base de données partagée et stratégies de versionnement du schéma
- Fonctionnement simultané de .NET Framework et .NET 8 dans la même infrastructure
- Conteneurisation des composants modernes tout en laissant l'hériter sur IIS
Laboratoire pratique de migration et révision
- Application de l'assistant de mise à niveau à un projet hérité représentatif
- Refactoring d'un service Web Forms ou WCF en API ASP.NET Core
- Mise en œuvre de l'injection de dépendances, de la journalisation et de la gestion centralisée des erreurs dans la solution migrée
- Ajout de l'authentification et de l'autorisation à la nouvelle surface d'API
- Vérification de la coexistence par des tests d'intégration de bout en bout
- Révision, questions-réponses et orientation pour la planification post-formation
Pré requis
- Expérience en programmation C# et maîtrise des principes de conception orientée objet
- Connaissance des concepts de développement web (HTTP, HTML, CSS, bases de JavaScript)
- Compréhension de base des bases de données relationnelles et de SQL
- Une expérience préalable avec .NET Framework ou ASP.NET est utile mais non obligatoire
Audience cible
- Développeurs .NET et architectes préparant la modernisation des applications héritées .NET Framework
- Ingénieurs logiciels rejoignant des rôles de développement .NET en entreprise
- Chefs techniques responsables de la migration de plateforme et de la planification de la 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