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ésentiel

Duré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.