C# .NET - Développement avancé
Architecture, performances et industrialisation d'applications .NET modernes
Formation créée le 02/04/2026.Version du programme : 4
Type de formation
PrésentielDurée de formation
28 heures (4 jours)Accessibilité
Oui
Cette formation est gratuite.
S'inscrire
Cette formation est gratuite.
S'inscrire
Cette formation est gratuite.
S'inscrire
C# .NET - Développement avancé
Architecture, performances et industrialisation d'applications .NET modernes
Vous développez en C# au quotidien et souhaitez franchir un cap : cette formation vous donne les clés de l'architecture applicative moderne, des techniques d'optimisation des performances, des patterns de conception avancés et des pratiques d'industrialisation pour intervenir sur des projets .NET à forte exigence technique.
Objectifs de la formation
- Maîtriser les fonctionnalités avancées du langage C# : réflexion, attributs personnalisés, programmation dynamique et programmation fonctionnelle
- Diagnostiquer et optimiser les performances d'une application .NET : allocations mémoire, GC, Span<T> et parallélisme
- Concevoir une architecture applicative structurée selon les principes Clean Architecture et SOLID
- Mettre en œuvre les patterns de conception GoF dans un contexte .NET moderne
- Développer des API REST avancées avec ASP.NET Core : middleware, authentification, versioning et health checks
- Approfondir l'utilisation d'Entity Framework Core : optimisation des requêtes, intercepteurs et gestion avancée des données
- Écrire des tests avancés : tests d'intégration avec base de données réelle, architecture testing et tests de performance
- Instrumenter une application .NET avec OpenTelemetry et Serilog et la publier via un pipeline CI/CD
Profil des bénéficiaires
Pour qui
- Développeurs C# / .NET confirmés, backend developers, software engineers ou tech leads souhaitant renforcer leur maîtrise de l'architecture, des performances, des tests et des pratiques d'industrialisation sur des applications .NET modernes.
Prérequis
- Maîtrise opérationnelle de C# : syntaxe, POO, LINQ, async/await et Entity Framework Core de base.
- Expérience de développement sur au moins un projet .NET en environnement professionnel.
- Équivalent à la formation "C# .NET -- Développement d'applications" ou expérience équivalente.
Contenu de la formation
Fonctionnalités avancées du langage C#
- Génériques avancés : contraintes multiples, interfaces génériques covariantes/contravariantes, cas d'usage pratiques
- Réflexion et métaprogrammation : Assembly, Type, MethodInfo -- inspection et invocation dynamique du code à l'exécution
- Chargement dynamique d'assemblies : cas d'usage, sécurité et limitations
- Type dynamique : dynamic vs object vs var -- quand l'utiliser et les pièges associés
- Attributs personnalisés : créer, appliquer et lire des attributs via la réflexion
- Programmation fonctionnelle en C# : composition de fonctions, application partielle, immutabilité en pratique
- Ouverture : Source Generators et Expression Trees -- démonstration des cas d'usage concrets (génération de code à la compilation, construction de requêtes dynamiques), approfondissement hors formation
Performances et optimisation mémoire
- Le Garbage Collector .NET : fonctionnement, générations (Gen0, Gen1, Gen2), Large Object Heap, impact sur les performances applicatives
- Diagnostiquer les allocations : BenchmarkDotNet, dotnet-counters, dotnet-trace, Visual Studio Diagnostic Tools -- méthodologie de profiling
- Span<T> et Memory<T> : manipulation de données sans allocation, slicing, cas d'usage réels
- ArrayPool<T> et MemoryPool<T> : pooling de tableaux pour éviter les allocations répétées
- stackalloc et MemoryMarshal : allocation sur la pile, usage en contexte contrôlé
- Optimisation des collections : choisir la bonne structure selon les contraintes, IEquatable<T> et comparateurs personnalisés pour les performances
- ValueTask<T> vs Task<T> : quand utiliser ValueTask pour réduire les allocations en code asynchrone intensif
- Parallélisme avec TPL : Parallel.For, Parallel.ForEach, PLINQ, gestion des exceptions parallèles
- Channels et pipelines : System.Threading.Channels pour les architectures producteur/consommateur
Architecture Clean et principes SOLID en pratique
- SOLID appliqué à C# : exemples concrets et anti-patterns courants dans les bases de code réelles
- Clean Architecture : organisation en couches (Domain, Application, Infrastructure, Presentation), règle de dépendance
- Domain-Driven Design (DDD) : introduction pratique -- entités, value objects, agrégats, repositories, domain events
- CQRS (Command Query Responsibility Segregation) : séparer les lectures et les écritures, implémentation légère sans MediatR puis avec MediatR
- Pattern Repository et Unit of Work : implémentation en C#/.NET, articulation avec EF Core
- Injection de dépendances avancée : Scrutor pour le scan automatique, Keyed Services (.NET 8+), scopes et lifetimes en profondeur
Design Patterns GoF en C#/.NET moderne
- Patterns créationnels : Factory Method, Abstract Factory, Builder, Singleton thread-safe en .NET -- implémentations modernes
- Patterns structurels : Adapter, Decorator, Facade, Composite, Proxy -- exemples concrets dans l'écosystème .NET
- Patterns comportementaux : Observer (avec événements C# et IObservable<T>), Strategy, Chain of Responsibility, Mediator, Iterator
- Patterns spécifiques .NET : Options Pattern (IOptions<T>), Pipeline Pattern avec middleware ASP.NET Core, Outbox Pattern pour la fiabilité des messages
- Anti-patterns à éviter : God Class, Service Locator, Anemic Domain Model -- comment les identifier et les refactorer
- Refactoring guidé par les patterns : identifier les patterns dans du code existant et appliquer les transformations
ASP.NET Core avancé
- Pipeline de middleware : créer des middleware personnalisés, ordre d'exécution, court-circuit
- Filtres d'action : IActionFilter, IExceptionFilter, IResultFilter -- cas d'usage et différences avec les middleware
- Authentification et autorisation : JWT Bearer, politique d'autorisation personnalisée, IAuthorizationHandler
- Versioning d'API : versioning par URL, header et query string avec Asp.Versioning
- Rate limiting : System.Threading.RateLimiting, politiques de limitation par client ou par endpoint
- SignalR : communication temps réel, Hubs, groupes, intégration avec des clients JavaScript
- Minimal APIs vs Controllers : critères de choix selon la complexité du projet, coexistence dans une même application
- Health Checks : Microsoft.Extensions.Diagnostics.HealthChecks, endpoints de monitoring, intégration avec les orchestrateurs
Entity Framework Core avancé
- Requêtes avancées : projections avec Select, compiled queries, raw SQL avec FromSqlRaw et ExecuteSqlRaw
- Optimisation des performances EF Core : AsNoTracking() systématique en lecture, Split Queries, batch updates avec ExecuteUpdateAsync et ExecuteDeleteAsync (.NET 7+)
- Intercepteurs EF Core : IDbCommandInterceptor, ISaveChangesInterceptor -- audit automatique, soft delete
- Migrations avancées : migrations personnalisées, seeds de données, gestion de plusieurs DbContext
- Concurence optimiste : ConcurrencyToken, RowVersion -- détecter et gérer les conflits
- Multi-tenancy avec EF Core : filtres globaux (HasQueryFilter), stratégies de séparation des données par tenant
- Transactions et patterns de résilience : Polly pour les retries et circuit breakers sur les appels EF Core et HTTP
Tests avancés
- Stratégie de tests : pyramide des tests, tests unitaires vs tests d'intégration vs tests end-to-end -- arbitrages pratiques
- Tests d'intégration avec WebApplicationFactory : tester une API ASP.NET Core complète en mémoire
- TestContainers : instancier des bases de données réelles dans les tests (SQL Server, PostgreSQL) via Docker
- Mocking avancé avec Moq et NSubstitute : mocking de méthodes protégées, propriétés, callbacks et sequences
- Tests de snapshot : Verify pour les assertions sur des objets complexes et des réponses d'API
- Architecture Testing avec NetArchTest : valider les règles d'architecture par des tests automatisés (dépendances, namespaces, conventions de nommage)
- Tests de performance : BenchmarkDotNet pour les micro-benchmarks, interprétation des résultats et seuils d'alerte
Observabilité, CI/CD et industrialisation
- Logging structuré avec Serilog : sinks, enrichers, corrélation des logs avec les traces distribuées
- OpenTelemetry .NET : instrumentation d'une application ASP.NET Core -- traces et métriques, export vers un backend de monitoring
- Gestion des secrets en production : variables d'environnement, principes de rotation, ouverture sur Azure Key Vault
- Pipeline CI/CD avec GitHub Actions : build, exécution des tests, publication de l'image Docker
- Ouverture : Docker multi-stage pour .NET, analyse statique avec SonarCloud et Roslynator -- présentation des cas d'usage, approfondissement hors formation
Cas intégrateur et plan d'action
- Mise en situation : à partir d'une base de code réaliste présentant des problèmes d'architecture, de performance et de testabilité, les participants diagnostiquent, priorisent et appliquent les techniques vues sur 4 jours
- Revue collective des solutions : comparaison des approches, discussion des arbitrages
- Plan d'action individuel : chaque participant identifie les trois chantiers prioritaires à lancer dans son contexte professionnel
Équipe pédagogique
Formateur expert en développement C# et architecture .NET, intervenant en environnement professionnel sur des projets à forte exigence technique.
Suivi de l'exécution et évaluation des résultats
- Auto-positionnement en amont (questionnaire)
- Evaluation formative pendant la formation (travaux pratiques)
- Evaluation des acquis en fin de formation (quiz)
- Evaluation de satisfaction à chaud
Accessibilité
Cette formation est accessible aux personnes en situation de handicap. Merci de nous contacter en amont afin d'étudier les aménagements nécessaires.