Développement avec le framework .NET

Passer de .Net Framework à .Net Core et aux dernières versions de C# – Bonnes pratiques de performance

Objectifs de la formation

  • Faire monter en compétence des développeurs expérimentés en C# et DotNet vers DotNetCore
  • Diagnostiquer les allocations mémoire et éviter les fuites mémoire
  • Optimiser le code C# en référence aux dernières versions C#
  • Optimiser et mesurer les gains de performances via le parallélisme
  • Optimisation des bases de données


Programme de la formation

Présentation de .NET Core et .NET 6+

  • Transition de .NET Framework vers .NET Core/.NET 6+: architecture, compatibilité.
  • Avantages : performance, modularité, multiplateforme.

Travaux pratiques

Migrer un projet simple de .NET Framework 4.7.2 vers .NET Core 6., Comparer les performances avant/après la migration (utilisation mémoire et CPU)


Nouveautés C# 8 à C# 12

  • Expressions switch, pattern matching amélioré, nullables, records, top-level statements, etc.

Travaux pratiques

Reprendre un ancien code C# et l’adapter en utilisant les nouvelles fonctionnalités C# (comme les records, le pattern matching).

Gestion mémoire en .NET Core

  • Différences dans la gestion mémoire entre .NET Framework et .NET Core.
  • Comprendre le Garbage Collector : optimisation de la mémoire, génération d’objets.

Travaux pratiques

Créer une application qui alloue et désalloue dynamiquement des objets et surveiller l’utilisation mémoire avec un outil comme dotMemory ou PerfView.

Optimisation des performances

  • Allocation de la mémoire, pool d’objets, et structures vs classes.
  • Span, Memory et autres optimisations bas-niveau.

Travaux pratiques

Réécrire des méthodes gourmandes en mémoire en utilisant les mécanismes C# pour réduire les allocations temporaires.

Asynchronisme avec async/await

  • Meilleures pratiques pour l’utilisation des tâches, gestion d’Exceptions, cancellation tokens.

Travaux pratiques

Refactoriser des méthodes synchrones lourdes pour l'exécuter de manière asynchrone, et mesurer les améliorations.

Multithreading avancé

  • Introduction à Task Parallel Library (TPL) , PLINQ , et threads.

Travaux pratiques

Implémenter une application multithreadée qui traite un grand volume de données et comparer les gains en performance avec une version single-thread.

Profiling d’applications

  • Outils de diagnostic : dotnet trace, BenchmarkDotNet, dotTrace.

Travaux pratiques

Créer un benchmark d'une application existante avec BenchmarkDotNet pour identifier les goulets d'étranglement.

Optimisation des I/O

  • Utilisation d’ Async IO , buffering, pipelines pour améliorer les performances des entrées/sorties.

Travaux pratiques

Optimiser une application qui lit/écrit sur disque ou réseau en implémentant des pipelines d'I/O.

Optimisation base de données

  • Côté Base de données (démonstrations):
    • Le rôle du moteur SQL Server et son interaction avec C#.
    • Les bonnes pratiques en conception de bases de données.
    • Comprendre les plans d'exécution et leur analyse.
    • Types d'index : cluster, non-cluster, et index covering.
    • Quand et comment utiliser les index.
    • Impact des index sur les opérations de lecture et d'écriture
    • Techniques d'optimisation : index composite, fill factor, fragmentation d'index.
  • Côté C# (démonstrations):
    • Techniques de minimisation des appels à la base de données : batch processing, pagination.
    • Performances liées à la sérialisation / dé sérialisation.
    • Utilisation des requêtes paramétrées pour éviter l'injection SQL et améliorer la performance.
    • Les transactions dans SQL Server : isolation levels, transactions implicites et explicites.
    • Problèmes liés aux verrous (deadlock, lock escalation).
    • Optimisation des transactions longues et réduction du temps de verrouillage.
    • Ségrégation des queries.
    • No SQL dans SQL et avantages performance.

Cas dʼétude / Consolidation des compétences

  • Jeux de mise en situation (TP de révision)
    • Migration, optimisation mémoire, multithreading, diagnostics.
    • Présentation de problèmes.
    • Recherche de solutions.
Please login to get access to the quiz
Optimisation des applications .NET en langage C# (Prev Lesson)
Back to Développement avec le framework .NET
Public

Cette formation s’adresse à des développeurs maitrisant déjà correctement les concepts C# POO comme : Interfaces, Objets, Génériques, GC…

Pré-requis

Bonnes connaissances du langage C#. Expérience requise.