Cursus
Formation .NET Concepts avancés en C#
Objectifs
Appliquer les tests unitaires en C#.
Evaluer les nouveautés de C# 7.x.
Evaluer les fonctionnalités avancées de C# 8.
Différencier les notions avancées sur les types.
Etablir la gestion de la mémoire en C#.
Contrôler l'asynchronisme en C#.
Employer les capacités de LINQ.
Apprécier le Garbage Collector.
Appliquer les patterns utilisés en .NET Core.
Pré-requis
Participants
Programme de formation
LES TESTS UNITAIRES EN C#
- Introduction aux tests unitaires 
- Différents concepts de test 
- Présentation des outils .Net pour les tests 
- Simulation avec les Mock 
- Le BDD (Behavior Driven Development) pour faire rentrer les opérationnels dans les tests 
- Travaux pratiques - Ecrire un test unitaire en C# et le faire muter en BDD
 
C# 7.X : NOUVEAUTÉS ET FONCTIONNALITÉS AVANCÉES
- Rappels de l'existant pré-C# 7 
- Fonctions locales - Avantages et performances
 
- Tuples 
- Déconstructeurs 
- Pattern matching 
- Out & discard 
- Améliorations sur l'écriture des numériques 
- Expression fléchée 
- Expression throw 
- Retour de fonction par référence 
- Travaux pratiques - Plusieurs exercices pour mettre en pratique les nouveautés de C# 7
 
C# 8 : NOUVEAUTÉS ET FONCTIONNALITÉS AVANCÉES
- Références sur les types valeurs 
- Type référence nullable 
- La portée private protected 
- Code non sécurisé 
- Indices et plages 
- Implémentation par défaut des interfaces 
- Travaux pratiques - Plusieurs exercices pour mettre en pratique les nouveautés de C# 8
 
NOTIONS AVANCÉES SUR LES TYPES
- Generics et contraintes de generics 
- Réflection simple - Création et introspection des types
 
- Réflection avancée - Gestion des generics (méthodes, types)
 
- Types anonymes et dynamic 
- Durée de vie avec Idiposable et les destructeurs 
- Attributs 
- Travaux pratiques - Créer dynamiquement des objets au runtime pour les types de questions
 
LA MÉMOIRE EN C#
- Introduction 
- Comprendre les concepts de pile & tas 
- Différences entre types valeur & types référence - Impacts et analyses
 
- La classe Span 
- Stackalloc 
- Travaux pratiques - Plusieurs exercices pour comprendre les allocations mémoire et l'impact du code
 
ASYNCHRONISME
- Reprise des concepts de l'asynchronisme 
- La classe Thread 
- La classe Parallel 
- Définition et approfondissement sur le Task 
- Le scheduler et créer son propre scheduler 
- Async/await : détails et fonctionnement de ce qui est compilé réellement 
- Gestion de l'annulation, des exceptions et de la continuation 
- Les nouveautés C# 8 sur l'asynchronisme 
- Travaux pratiques - Exercice de code pour montrer les différents pattern asynchronisme.
- Exercice complet permettant de mettre en pratique tout le contenu
 
LINQ
- Comment fonctionne LINQ ? 
- Les différents opérateurs existants 
- Comparaison de performance avec analyse IL 
- Créer ses propres méthodes LINQ 
- L'arbre d'expression 
- Travaux pratiques - Création de son propre provider LINQ
- Découverte de la classe Expression
 
LE GARBAGE COLLECTOR
- Rappel sur le rôle du garbage collector 
- Algorithme du garbage collector 
- Différences entre les ressources managées et non managées 
- Comment soulager la charge du garbage collector 
- Le pattern Idisposable 
- Travaux pratiques - Créer une application et benchmarker les différences entre le passage du garbage collector
 
PATTERNS UTILISÉS EN .NET CORE
- Présentation rapide de l'architecture d'un projet ASP.Net Core 
- IoC et principes solides associés - Pourquoi, c'est utile
 
- Pattern Options pour gérer la configuration 
- Fonctionnement du pipeline ASP.Net Core 
