Formation en Développement: C# .NET - Développement avancé - Ascent Formation
Retour aux formations
Développement

C# .NET - Développement avancé

4 jour(s)28h

Description

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 pédagogiques

  • 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

Public concerné

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.

Déroulé du programme

1

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
2

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
3

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
4

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
5

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
6

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
7

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
8

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
9

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

Informations

Durée

4 jour(s)

28h

Tarif

Sur demande

    C# .NET - Développement avancé | Ascent Formation | Ascent Formation